收藏 | YOLO系列综述:从V1到V4

目标检测算法-YOLOV9解析(附论文和源码) YOLOv9引入了两种新的架构:YOLOv9和GELAN,这两种架构都可以从论文发布的YOLOv9 Python库中使用。 YOLOv9有四种模型,按参数个数排序是:v9-S、v9-M、v9-C、v9-E。目前v9 - S和v9 - M的权重暂不可用。其中最小的模型在MS COCO数据集的验证集上达到了46.8 %的AP,而最大的模型达到了55.6 %。 阅读详情

仅作学术分享,不代表本公众号立场,侵权联系删除

转载于:https://blog.youkuaiyun.com/App_12062011/article/details/77554288,Eason.wxd

YOLO v1

这是继RCNN,fast-RCNN和faster-RCNN之后,rbg(RossGirshick)针对DL目标检测速度问题提出的另外一种框架。YOLO V1其增强版本GPU中能跑45fps,简化版本155fps。

论文下载:http://arxiv.org/abs/1506.02640

代码下载:https://github.com/pjreddie/darknet

1. YOLO的核心思想

  • YOLO的核心思想就是利用整张图作为网络的输入,直接在输出层回归bounding box的位置和bounding box所属的类别。

  • faster RCNN中也直接用整张图作为输入,但是faster-RCNN整体还是采用了RCNN那种 proposal+classifier的思想,只不过是将提取proposal的步骤放在CNN中实现了,而YOLO则采用直接回归的思路。

2.YOLO的实现方法

  • 将一幅图像分成SxS个网格(grid cell),如果某个object的中心 落在这个网格中,则这个网格就负责预测这个object。

  • 每个网格要预测B个bounding box,每个bounding box除了要回归自身的位置之外,还要附带预测一个confidence值。

这个confidence代表了所预测的box中含有object的置信度和这个box预测的有多准两重信息,其值是这样计算的:

其中如果有object落在一个grid cell里,第一项取1,否则取0。第二项是预测的bounding box和实际的groundtruth之间的IoU值。

  • 每个bounding box要预测(x, y, w, h)和confidence共5个值,每个网格还要预测一个类别信息,记为C类。则SxS个网格,每个网格要预测B个bounding box还要预测C个categories。输出就是S x S x (5*B+C)的一个tensor。

注意:class信息是针对每个网格的,confidence信息是针对每个bounding box的。

  • 举例说明: 在PASCAL VOC中,图像输入为448x448,取S=7,B=2,一共有20个类别(C=20)。则输出就是7x7x30的一个tensor。

整个网络结构如下图所示:

  • 在test的时候,每个网格预测的class信息和bounding box预测的confidence信息相乘,就得到每个bounding box的class-specific confidence score:

等式左边第一项就是每个网格预测的类别信息,第二三项就是每个bounding box预测的confidence。这个乘积即encode了预测的box属于某一类的概率,也有该box准确度的信息。

  • 得到每个box的class-specific confidence score以后,设置阈值,滤掉得分低的boxes,对保留的boxes进行NMS处理,就得到最终的检测结果。

  • 注:

    *由于输出层为全连接层,因此在检测时,YOLO训练模型只支持与训练图像相同的输入分辨率。

    *虽然每个格子可以预测B个bounding box,但是最终只选择只选择IOU最高的bounding box作为物体检测输出,即每个格子最多只预测出一个物体。当物体占画面比例较小,如图像中包含畜群或鸟群时,每个格子包含多个物体,但却只能检测出其中一个。这是YOLO方法的一个缺陷。

3.YOLO的实现细节

  • 每个grid有30维,这30维中,8维是回归box的坐标,2维是box的confidence,还有20维是类别。

其中坐标的x,y用对应网格的offset归一化到0-1之间,w,h用图像的width和height归一化到0-1之间。

  • 在实现中,最主要的就是怎么设计损失函数,让这个三个方面得到很好的平衡。作者简单粗暴的全部采用了sum-squared error loss来做这件事。

这种做法存在以下几个问题:

第一,8维的localization error和20维的classification error同等重要显然是不合理的;

第二,如果一个网格中没有object(一幅图中这种网格很多),那么就会将这些网格中的box的confidence push到0,相比于较少的有object的网格,这种做法是overpowering的,这会导致网络不稳定甚至发散。

解决办法:

  • 更重视8维的坐标预测,给这些损失前面赋予更大的loss weight, 记为在pascal VOC训练中取5。

  • 对没有object的box的confidence loss,赋予小的loss weight,记为在pascal VOC训练中取0.5。

  • 有object的box的confidence loss和类别的loss的loss weight正常取1。

  • 对不同大小的box预测中,相比于大box预测偏一点,小box预测偏一点肯定更不能被忍受的。而sum-square error loss中对同样的偏移loss是一样。

为了缓和这个问题,作者用了一个比较取巧的办法,就是将box的width和height取平方根代替原本的height和width。这个参考下面的图很容易理解,小box的横轴值较小,发生偏移时,反应到y轴上相比大box要大。(也是个近似逼近方式)

  • 一个网格预测多个box,希望的是每个box predictor专门负责预测某个object。具体做法就是看当前预测的box与ground truth box中哪个IoU大,就负责哪个。这种做法称作box predictor的specialization。

  • 最后整个的损失函数如下所示:

    这个损失函数中:

    • 只有当某个网格中有object的时候才对classification error进行惩罚。

    • 只有当某个box predictor对某个ground truth box负责的时候,才会对box的coordinate error进行惩罚,而对哪个ground truth box负责就看其预测值和ground truth box的IoU是不是在那个cell的所有box中最大。

  • 其他细节,例如使用激活函数使用leak RELU,模型用ImageNet预训练等等,在这里就不一一赘述了。

  • 注:

    *YOLO方法模型训练依赖于物体识别标注数据,因此,对于非常规的物体形状或比例,YOLO的检测效果并不理想。

    *YOLO采用了多个下采样层,网络学到的物体特征并不精细,因此也会影响检测效果。

    * YOLO loss函数中,大物体IOU误差和小物体IOU误差对网络训练中loss贡献值接近(虽然采用求平方根方式,但没有根本解决问题)。因此,对于小物体,小的IOU误差也会对网络优化过程造成很大的影响,从而降低了物体检测的定位准确性。

4.YOLO的缺点

  • YOLO对相互靠的很近的物体,还有很小的群体 检测效果不好,这是因为一个网格中只预测了两个框,并且只属于一类。

  • 同一类物体出现的新的不常见的长宽比和其他情况时,泛化能力偏弱。

  • 由于损失函数的问题,定位误差是影响检测效果的主要原因。尤其是大小物体的处理上,还有待加强。

YOLO9000 YOLOv2

原文下载:https://arxiv.org/pdf/1612.08242v1.pdf

工程代码:http://pjreddie.com/darknet/yolo/

摘要

  1. 提出YOLOv2:代表着目前业界最先进物体检测的水平,它的速度要快过其他检测系统(FasterR-CNN,ResNet,SSD),使用者可以在它的速度与精确度之间进行权衡。

  2. 提出YOLO9000:这一网络结构可以实时地检测超过9000种物体分类,这归功于它使用了WordTree,通过WordTree来混合检测数据集与识别数据集之中的数据。

  3. 提出了一种新的联合训练算法( Joint Training Algorithm ),使用这种联合训练技术同时在ImageNet和COCO数据集上进行训练。YOLO9000进一步缩小了监测数据集与识别数据集之间的代沟。

简介

目前的检测数据集(DetectionDatasets)有很多限制,分类标签的信息太少,图片的数量小于分类数据集(Classification Datasets),而且检测数据集的成本太高,使其无法当作分类数据集进行使用。而现在的分类数据集却有着大量的图片和十分丰富分类信息。

文章提出了一种新的训练方法–联合训练算法,这种算法可以把这两种的数据集混合到一起。使用一种分层的观点对物体进行分类,用巨量的分类数据集数据来扩充检测数据集,从而把两种不同的数据集混合起来。

联合训练算法的基本思路就是:同时在检测数据集和分类数据集上训练物体检测器(Object Detectors ),用监测数据集的数据学习物体的准确位置,用分类数据集的数据来增加分类的类别量、提升健壮性。

YOLO9000就是使用联合训练算法训练出来的,他拥有9000类的分类信息,这些分类信息学习自ImageNet分类数据集,而物体位置检测则学习自COCO检测数据集。

All of our code and pre-trained models are available online at http://pjreddie.com/yolo9000/

BETTER

YOLO一代有很多缺点,作者希望改进的方向是:改善recall,提升定位的准确度,同时保持分类的准确度。

目前计算机视觉的趋势是更大更深的网络,更好的性能表现通常依赖于训练更大的网络或者把多种model综合到一起。但是YOLO v2则着力于简化网络。具体的改进见下表:

  • Batch Normalization

使用Batch Normalization对网络进行优化,让网络提高了收敛性,同时还消除了对其他形式的正则化(regularization)的依赖。通过对YOLO的每一个卷积层增加Batch Normalization,最终使得mAP提高了2%,同时还使model正则化。使用Batch Normalization可以从model中去掉Dropout,而不会产生过拟合。

  • High resolution classifier

目前业界标准的检测方法,都要先把分类器(classifier)放在ImageNet上进行预训练。从Alexnet开始,大多数的分类器都运行在小于256*256的图片上。而现在YOLO从224*224增加到了448*448,这就意味着网络需要适应新的输入分辨率。

为了适应新的分辨率,YOLO v2的分类网络以448*448的分辨率先在ImageNet上进行Fine Tune,Fine Tune10个epochs,让网络有时间调整他的滤波器(filters),好让其能更好的运行在新分辨率上,还需要调优用于检测的Resulting Network。最终通过使用高分辨率,mAP提升了4%。

  • Convolution with anchor boxes

YOLO一代包含有全连接层,从而能直接预测Bounding Boxes的坐标值。Faster R-CNN的方法只用卷积层与Region Proposal Network来预测Anchor Box的偏移值与置信度,而不是直接预测坐标值。作者发现通过预测偏移量而不是坐标值能够简化问题,让神经网络学习起来更容易。

所以最终YOLO去掉了全连接层,使用Anchor Boxes来预测 Bounding Boxes。作者去掉了网络中一个Pooling层,这让卷积层的输出能有更高的分辨率。收缩网络让其运行在416*416而不是448*448。由于图片中的物体都倾向于出现在图片的中心位置,特别是那种比较大的物体,所以有一个单独位于物体中心的位置用于预测这些物体。YOLO的卷积层采用32这个值来下采样图片,所以通过选择416*416用作输入尺寸最终能输出一个13*13的Feature Map。使用Anchor Box会让精确度稍微下降,但用了它能让YOLO能预测出大于一千个框,同时recall达到88%,mAP达到69.2%。

  • Dimension clusters

之前Anchor Box的尺寸是手动选择的,所以尺寸还有优化的余地。为了优化,在训练集(training set)Bounding Boxes上跑了一下k-means聚类,来找到一个比较好的值。

如果我们用标准的欧式距离的k-means,尺寸大的框比小框产生更多的错误。因为我们的目的是提高IOU分数,这依赖于Box的大小,所以距离度量的使用:

通过分析实验结果(Figure 2),左图:在model复杂性与high recall之间权衡之后,选择聚类分类数K=5。右图:是聚类的中心,大多数是高瘦的Box。

Table1是说明用K-means选择Anchor Boxes时,当Cluster IOU选择值为5时,AVG IOU的值是61,这个值要比不用聚类的方法的60.9要高。选择值为9的时候,AVG IOU更有显著提高。总之就是说明用聚类的方法是有效果的。

  • Direct location prediction

用Anchor Box的方法,会让model变得不稳定,尤其是在最开始的几次迭代的时候。大多数不稳定因素产生自预测Box的(x,y)位置的时候。按照之前YOLO的方法,网络不会预测偏移量,而是根据YOLO中的网格单元的位置来预测坐标,这就让Ground Truth的值介于0到1之间。而为了让网络的结果能落在这一范围内,网络使用一个 Logistic Activation来对于网络预测结果进行限制,让结果介于0到1之间。网络在每一个网格单元中预测出5个Bounding Boxes,每个Bounding Boxes有五个坐标值tx,ty,tw,th,t0,他们的关系见下图(Figure3)。假设一个网格单元对于图片左上角的偏移量是cx,cy,Bounding Boxes Prior的宽度和高度是pw,ph,那么预测的结果见下图右面的公式:

因为使用了限制让数值变得参数化,也让网络更容易学习、更稳定。

Dimension clusters和Direct location prediction,improves YOLO by almost 5% over the version with anchor boxes.

  • Fine-Grained Features

YOLO修改后的Feature Map大小为13*13,这个尺寸对检测图片中尺寸大物体来说足够了,同时使用这种细粒度的特征对定位小物体的位置可能也有好处。Faster R-CNN、SSD都使用不同尺寸的Feature Map来取得不同范围的分辨率,而YOLO采取了不同的方法,YOLO加上了一个Passthrough Layer来取得之前的某个26*26分辨率的层的特征。这个Passthrough layer能够把高分辨率特征与低分辨率特征联系在一起,联系起来的方法是把相邻的特征堆积在不同的Channel之中,这一方法类似与Resnet的Identity Mapping,从而把26*26*512变成13*13*2048。YOLO中的检测器位于扩展后(expanded )的Feature Map的上方,所以他能取得细粒度的特征信息,这提升了YOLO 1%的性能。

  • Multi-ScaleTraining

作者希望YOLO v2能健壮的运行于不同尺寸的图片之上,所以把这一想法用于训练model中。

区别于之前的补全图片的尺寸的方法,YOLO v2每迭代几次都会改变网络参数。每10个Batch,网络会随机地选择一个新的图片尺寸,由于使用了下采样参数是32,所以不同的尺寸大小也选择为32的倍数{320,352…..608},最小320*320,最大608*608,网络会自动改变尺寸,并继续训练的过程。

这一政策让网络在不同的输入尺寸上都能达到一个很好的预测效果,同一网络能在不同分辨率上进行检测。当输入图片尺寸比较小的时候跑的比较快,输入图片尺寸比较大的时候精度高,所以你可以在YOLO v2的速度和精度上进行权衡。

Figure4,Table 3:在voc2007上的速度与精度

  • Further Experiments

Faster

YOLO使用的是GoogleLeNet,比VGG-16快,YOLO完成一次前向过程只用8.52 billion 运算,而VGG-16要30.69billion,但是YOLO精度稍低于VGG-16。

  • Draknet19

YOLO v2基于一个新的分类model,有点类似与VGG。YOLO v2使用3*3filter,每次Pooling之后都增加一倍Channels的数量。YOLO v2使用全局平均Pooling,使用Batch Normilazation来让训练更稳定,加速收敛,使model规范化。

最终的model–Darknet19,有19个卷积层和5个maxpooling层,处理一张图片只需要5.58 billion次运算,在ImageNet上达到72.9%top-1精确度,91.2%top-5精确度。

  • Training for classification

网络训练在 ImageNet 1000类分类数据集,训练了160epochs,使用随机梯度下降,初始学习率为0.1, polynomial

rate decay with a power of 4, weight decay of 0.0005 and momentum of 0.9 。训练期间使用标准的数据扩大方法:随机裁剪、旋转、变换颜色(hue)、变换饱和度(saturation), 变换曝光度(exposure shifts)。

在训练时,把整个网络在更大的448*448分辨率上Fine Turnning 10个 epoches,初始学习率设置为0.001,这种网络达到达到76.5%top-1精确度,93.3%top-5精确度。

  • Training for detection

网络去掉了最后一个卷积层,而加上了三个3*3卷积层,每个卷积层有1024个Filters,每个卷积层紧接着一个1*1卷积层, with

the number of outputs we need for detection。

对于VOC数据,网络预测出每个网格单元预测五个Bounding Boxes,每个Bounding Boxes预测5个坐标和20类,所以一共125个Filters,增加了Passthough层来获取前面层的细粒度信息,网络训练了160epoches,初始学习率0.001,dividing it by 10 at 60 and 90 epochs,a weight decay of 0.0005 and momentum of 0.9,数据扩大方法相同,对COCO与VOC数据集的训练对策相同。

Stronger

在训练的过程中,当网络遇到一个来自检测数据集的图片与标记信息,那么就把这些数据用完整的YOLO v2 loss功能反向传播这个图片。当网络遇到一个来自分类数据集的图片和分类标记信息,只用整个结构中分类部分的loss功能反向传播这个图片。
但是检测数据集只有粗粒度的标记信息,像“猫“、“ 狗”之类,而分类数据集的标签信息则更细粒度,更丰富。比如狗这一类就包括”哈士奇“”牛头梗“”金毛狗“等等。所以如果想同时在监测数据集与分类数据集上进行训练,那么就要用一种一致性的方法融合这些标签信息。
再者,用于分类的方法,大多是用softmax layer方法,softmax意味着分类的类别之间要互相独立的。而盲目地混合数据集训练,就会出现比如:检测数据集的分类信息中”狗“这一分类,在分类数据集合中,就会有的不同种类的狗”哈士奇“”牛头梗“”金毛“这些分类,这两种数据集之间的分类信息不相互独立。所以使用一种多标签的model来混合数据集,假设一个图片可以有多个分类信息,并假定分类信息必须是相互独立的规则可以被忽略。

  • Hierarchical classification

WordNet的结构是一个直接图表(directed graph),而不是树型结构。因为语言是复杂的,狗这个词既属于‘犬科’又属于‘家畜’两类,而‘犬科’和‘家畜’两类在wordnet中则是同义词,所以不能用树形结构。

作者希望根据ImageNet中包含的概念来建立一个分层树,为了建立这个分层树,首先检查ImagenNet中出现的名词,再在WordNet中找到这些名词,再找到这些名词到达他们根节点的路径(在这里设为所有的根节点为实体对象(physical object))。在WordNet中,大多数同义词只有一个路径,所以首先把这条路径中的词全部都加到分层树中。接着迭代地检查剩下的名词,并尽可能少的把他们添加到分层树上,添加的原则是取最短路径加入到树中。

为了计算某一结点的绝对概率,只需要对这一结点到根节点的整条路径的所有概率进行相乘。所以比如你想知道一个图片是否是Norfolk terrier的概率,则进行如下计算:

为了验证这一个方法,在WordTree上训练Darknet19的model,使用1000类的ImageNet进行训练,为了建立WordtTree 1K,把所有中间词汇加入到WordTree上,把标签空间从1000扩大到了1369。在训练过程中,如果有一个图片的标签是”Norfolk terrier“,那么这个图片还会获得”狗“(dog)以及“哺乳动物”(mammal)等标签。总之现在一张图片是多标记的,标记之间不需要相互独立。

如Figure5所示,之前的ImageNet分类是使用一个大softmax进行分类。而现在,WordTree只需要对同一概念下的同义词进行softmax分类。

使用相同的训练参数,这种分层结构的Darknet19达到71.9%top-1精度和90.4%top-5精确度,精度只有微小的下降。

这种方法的好处:在对未知或者新的物体进行分类时,性能降低的很优雅(gracefully)。比如看到一个狗的照片,但不知道是哪种种类的狗,那么就高置信度(confidence)预测是”狗“,而其他狗的种类的同义词如”哈士奇“”牛头梗“”金毛“等这些则低置信度。

  • Datasets combination with wordtree

用WordTree 把数据集合中的类别映射到分层树中的同义词上,例如上图Figure 6,WordTree混合ImageNet与COCO。

  • Joint classification and detection

作者的目的是:训练一个Extremely Large Scale检测器。所以训练的时候使用WordTree混合了COCO检测数据集与ImageNet中的Top9000类,混合后的数据集对应的WordTree有9418个类。另一方面,由于ImageNet数据集太大了,作者为了平衡一下两个数据集之间的数据量,通过过采样(oversampling)COCO数据集中的数据,使COCO数据集与ImageNet数据集之间的数据量比例达到1:4。

YOLO9000的训练基于YOLO v2的构架,但是使用3priors而不是5来限制输出的大小。当网络遇到检测数据集中的图片时则正常地反方向传播,当遇到分类数据集图片的时候,只使用分类的loss功能进行反向传播。同时作者假设IOU最少为 .3。最后根据这些假设进行反向传播。

使用联合训练法,YOLO9000使用COCO检测数据集学习检测图片中的物体的位置,使用ImageNet分类数据集学习如何从大量的类别中进行分类。

为了评估这一方法,使用ImageNet Detection Task对训练结果进行评估。

评估结果:
YOLO9000取得19.7mAP。
在未学习过的156个分类数据上进行测试,mAP达到16.0。
YOLO9000的mAP比DPM高,而且YOLO有更多先进的特征,YOLO9000是用部分监督的方式在不同训练集上进行训练,同时还能检测9000个物体类别,并保证实时运行。

虽然YOLO9000对动物的识别性能很好,但是对类别为”sungalsses“或者”swimming trunks“这些衣服或者装备的类别,它的识别性能不是很好,见table 7。这跟数据集的数据组成有很大关系。

总结

YOLO v2 代表着目前最先进物体检测的水平,在多种监测数据集中都要快过其他检测系统,并可以在速度与精确度上进行权衡。

YOLO 9000 的网络结构允许实时地检测超过9000种物体分类,这归功于它能同时优化检测与分类功能。使用WordTree来混合来自不同的资源的训练数据,并使用联合优化技术同时在ImageNet和COCO数据集上进行训练,YOLO9000进一步缩小了监测数据集与识别数据集之间的大小代沟。

文章还提出了WordTree,数据集混合训练,多尺寸训练等全新的训练方法。

YOLO v3

YOLOv3在Pascal Titan X上处理608x608图像速度达到20FPS,在 COCO test-dev 上 mAP@0.5 达到 57.9%,与RetinaNet(FocalLoss论文所提出的单阶段网络)的结果相近,并且速度快4倍.

YOLO v3的模型比之前的模型复杂了不少,可以通过改变模型结构的大小来权衡速度与精度。

速度对比如下:

YOLOv3 在实现相同准确度下要显著地比其它检测方法快。时间都是在采用 M40 或 Titan X 等相同 GPU 下测量的。

简而言之,YOLOv3 的先验检测(Prior detection)系统将分类器或定位器重新用于执行检测任务。他们将模型应用于图像的多个位置和尺度。而那些评分较高的区域就可以视为检测结果。此外,相对于其它目标检测方法,我们使用了完全不同的方法。我们将一个单神经网络应用于整张图像,该网络将图像划分为不同的区域,因而预测每一块区域的边界框和概率,这些边界框会通过预测的概率加权。我们的模型相比于基于分类器的系统有一些优势。它在测试时会查看整个图像,所以它的预测利用了图像中的全局信息。与需要数千张单一目标图像的 R-CNN 不同,它通过单一网络评估进行预测。这令 YOLOv3 非常快,一般它比 R-CNN 快 1000 倍、比 Fast R-CNN 快 100 倍。

改进之处:

  • 1.多尺度预测 (类FPN)

  • 2.更好的基础分类网络(类ResNet)和分类器 darknet-53,见下图。

3.分类器-类别预测:
        YOLOv3不使用Softmax对每个框进行分类,主要考虑因素有两个:

  1. a.Softmax使得每个框分配一个类别(score最大的一个),而对于Open Images这种数据集,目标可能有重叠的类别标签,因此Softmax不适用于多标签分类。

  2. b.Softmax可被独立的多个logistic分类器替代,且准确率不会下降。
            分类损失采用binary cross-entropy loss.

多尺度预测

每种尺度预测3个box, anchor的设计方式仍然使用聚类,得到9个聚类中心,将其按照大小均分给3中尺度.

  • 尺度1: 在基础网络之后添加一些卷积层再输出box信息.

  • 尺度2: 从尺度1中的倒数第二层的卷积层上采样(x2)再与最后一个16x16大小的特征图相加,再次通过多个卷积后输出box信息.相比尺度1变大两倍.

  • 尺度3: 与尺度2类似,使用了32x32大小的特征图.

参见网络结构定义文件yolov3.cfg

基础网络 Darknet-53

darknet-53

仿ResNet, 与ResNet-101或ResNet-152准确率接近,但速度更快.对比如下:

主干架构的性能对比

检测结构如下:

YOLOv3在mAP@0.5及小目标APs上具有不错的结果,但随着IOU的增大,性能下降,说明YOLOv3不能很好地与ground truth切合.

边框预测

图 2:带有维度先验和定位预测的边界框。我们边界框的宽和高以作为离聚类中心的位移,并使用 Sigmoid 函数预测边界框相对于滤波器应用位置的中心坐标。

仍采用之前的logis,其中cx,cy是网格的坐标偏移量,pw,ph是预设的anchor box的边长.最终得到的边框坐标值是b*,而网络学习目标是t*,用sigmod函数、指数转换。

优点

  • 快速,pipline简单.

  • 背景误检率低。

  • 通用性强。YOLO对于艺术类作品中的物体检测同样适用。它对非自然图像物体的检测率远远高于DPM和RCNN系列检测方法。

但相比RCNN系列物体检测方法,YOLO具有以下缺点:

  • 识别物体位置精准性差。

  • 召回率低。在每个网格中预测两个box这种约束方式减少了对同一目标的多次检测(R-CNN使用的region proposal方式重叠较多),相比R-CNN使用Selective Search产生2000个proposal(RCNN测试时每张超过40秒),yolo仅使用7x7x2个.

YOLO v.s Faster R-CNN

  1. 统一网络:

YOLO没有显示求取region proposal的过程。Faster R-CNN中尽管RPN与fast rcnn共享卷积层,但是在模型训练过程中,需要反复训练RPN网络和fast rcnn网络.

相对于R-CNN系列的"看两眼"(候选框提取与分类,图示如下),YOLO只需要Look Once.
2.  YOLO统一为一个回归问题,而R-CNN将检测结果分为两部分求解:物体类别(分类问题),物体位置即bounding box(回归问题)。

YOLOv4

YOLOv4包含以下信息:

  • Backbone:CSPDarkNet53

  • Neck:SPP,PAN

  • Head:YOLOv3

  • Tricks(backbone):CutMix、Mosaic、DropBlock、Label Smoothing

  • Modified(backbone): Mish、CSP、MiWRC

  • Tricks(detector):CIoU、CMBN、DropBlock、Mosaic、SAT、Eliminate grid sensitivity、Multiple Anchor、Cosine Annealing scheduler、Random training shape

  • Modified(tector):Mish、SPP、SAM、PAN、DIoU-NMS

[深度学习入门]Yolo系列 单阶段YOLO系列模型: 一、YOLO发展史 单阶段模型:YOLO, SSD, Retina-Net 两阶段模型:RCNN, SPPNet yolo系列:精度并不是最高的,但推理运行速度高 FPS:帧/s 精度、速度性价比高 1、YOLOv1 将目标检测当作一个单一的回归任务 将图片分成s*s个网格 物体中心点落在哪个网格上,就由该网格对应锚框负责检测该物体 2、YOLOv2 优化方法 骨干网络:224*224 -> 448 *448 ,DarkN 阅读详情

相关推荐

YOLO系列算法

目录YOLO系列算法yolo算法Yolo算法思想Yolo的网络结构网络输入网络输出7X7网格30维向量Yolo模型的训练训练样本的构建损失函数模型训练模型预测yolo总结yoloV2预测更准确(better)batch normalization使用高分辨率图像微调分类模型采用Anchor Boxes聚类提取anchor尺度边框位置的预测细粒度特征融合多尺度训练速度更快(Faster)识别对象更多yoloV3算法简介多尺度检测网络模型结构先验框logistic回归yoloV3模型的输入与输出yoloV4总结

最白の白菜的博客 3万+

YOLO系列详解:YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5、YOLOv6、YOLOv7

一、前言 YOLO系列是one-stage且是基于深度学习的回归方法,而R-CNN、Fast-RCNN、Faster-RCNN等是two-stage且是基于深度学习的分类方法。 YOLO官网:https://github.com/pjreddie/darknet 1.1 YOLO vs Faster R-CNN 1、统一网络:YOLO没有显示求取region proposal的过程。Faster R-CNN中尽管RPN与fast rcnn共享卷积层,但是在模型训练过程中,需要反复训练RPN网络和fa

qq_40716944的博客 17万+

一文读懂YOLO V5 与 YOLO V4

一文读懂YOLO V5 与 YOLO V4 YOLO之父Joseph Redmon在今年年初宣布退出计算机视觉的研究的时候,很多人都以为目标检测神器YOLO系列就此终结。然而在4月23日,继任者YOLO V4却悄无声息地来了。Alexey Bochkovskiy发表了一篇名为YOLOV4: Optimal Speed and Accuracy of Object Detection的文章。YOLO V4是YOLO系列一个重大的更新,其在COCO数据集上的平均精度(AP)和帧率精度(FPS)分别提高了10%

williamhyin的博客 8799

YOLO系列详解(YOLO1-YOLO5)

YOLO系列是one-stage且是基于深度学习的回归方法,而R-CNN、Fast-RCNN、Faster-RCNN等是two-stage且是基于深度学习的分类方法。

weixin_45303602的博客 2万+

YOLO系列介绍

主干网络:YOLOv4采用了CSPDarknet53作为主干网络,利用了Cross Stage Partial Networks(CSPNet)来增强梯度流和特征提取的效率。颈部(Neck):使用了PANet(Path Aggregation Network),用于聚合来自不同层的特征图,从而提高模型在不同尺度上的物体检测能力。检测头:检测头使用多个尺度(YOLOv4能够在三个不同的尺度上检测物体),增强了对小型、中型和大型物体的检测精度。多尺度检测。

2301_80467435的博客 1170

Machines | 2023 YOLO-v1 到 YOLO-v8,有关YOLO系列的一篇综述

自 2015 年问世以来,目标检测算法 YOLO(You Only Look Once)的各个变体迅速发展,2023 年 1 月发布了最新版本 YOLO-v8。YOLO 系列变体基于有限但高效的计算参数,遵循实时和高分类性能的原则。随着这些变体不断发展,以满足工业表面缺陷检测领域中自动化质量检测的需求,如快速检测、高精度以及在受限边缘设备上的部署需求,这一原则在所有 YOLO 变体中愈发凸显。本文首次从工业制造的角度,对 YOLO 从最初版本到最新版本(YOLO-v8)的演进进行了深入综述。

su20060703的博客 1326

yolo全家桶;yolo系列专题讲解,通俗易懂的yolo v1, v2 ,v3 ,v4 ,v5 , yolox

*免责声明: 1\此方法仅提供参考 2\搬了其他博主的操作方法,以贴上路径. 3* 场景一:yolo v1 场景二:yolo v2 场景三:yolo v3 场景四:yolo v4 强推---->通俗易懂的YOLO系列(从V1到V5)模型解读! … 场景一:yolo v1 <map 63.4 , fps 45> yolo v1论文地址 YOLO v1论文详解 单阶段算法–YOLOv1详解 Yolo三部曲解读——Yolov1 1.1 物体检测 1.2 实现方法 1.3 网络结构

weeks 1万+

YOLO系列模型从v1到v10的演进

从YOLOv1到YOLOv10,每个版本都在前一代的基础上进行了创新和改进,不断在速度与精度之间寻求更好的平衡。未来,随着技术的不断发展,YOLO系列有望在更多领域发挥更大的作用,为计算机视觉技术的发展做出更大贡献。

m0_72686196的博客 1101

YOLO 算法最全综述:从 YOLOv1 到 YOLOv5

作者 | 初识cv,编辑:极市平台 来源丨https://zhuanlan.zhihu.com/p/136382095导读YOLO系列是基于深度学习的回归方法,本文详细介绍了从YOLO...

机器学习算法那些事 7161

一文吃透 YOLO 全系列:从 v1 到 v11 的目标检测进化史

2016 年,YOLOv1 横空出世,首次将目标检测简化为单阶段回归任务,摒弃了 R-CNN 系列 “候选区域 + 分类回归” 的繁琐流程。算法将输入图像划分为 S×S 网格(如 7×7),每个网格预测 B 个边界框(常取 B=2)及其置信度,同时输出 C 个类别概率(如 PASCAL VOC 数据集的 20 类)。网络基于 GoogLeNet 架构,由 24 层卷积层与 2 层全连接层构成,最终输出 S×S×(B×5 + C) 的张量。

Aifuyao的博客 3181

【全面认知YOLO系列】第一部分:YOLO系列模型发展史

YOLO V1(You Only Look Once version 1)是YOLO系列模型的第一个版本,由Joseph Redmon等人于2015年提出。相比于传统的目标检测方法,YOLO V1采用了全新的设计思路和网络结构,实现了端到端的目标检测,具有较高的检测速度和简单的设计。网络结构:YOLO V1模型采用卷积神经网络(CNN)作为基础网络结构,在输入图像上进行卷积操作,提取图像特征。单次预测。

今晚打老虎的专栏 1万+

YOLO系列综述:从V1到V4

公众号关注“视学算法”设为 “星标”,DLCV消息即可送达!来源 |知乎 作者 |Eason.wxdhttps://blog.youkuaiyun.com/App_12062...

zandaoguang的博客 907

扫码器USB键盘报告描述符数据格式解析

Byte0用于判断Shift是否按下,当按下时Byte0的Bit1会置1,即0x02,若未按下,Bit为0,即0x00。0x00 0x00 0x00 0x00 0x00 0x00 0x00--->>未按下Shift。0x00 0x00 0x00 0x00 0x00 0x00 0x00--->>按下Shift。0x00 0x04 0x00 0x00 0x00 0x00 0x00--->>输出A。0x00 0x04 0x00 0x00 0x00 0x00 0x00--->>输出a。

m0_65548585的博客 1142

关于目标检测项目传统方法再到YOLO-V1、YOLO-V2详细介绍

本文对目标检测技术进行了综述。首先介绍了目标检测的基本概念和面临的问题,接着阐述了常用的数据集以及Ground Truth的不同格式。然后详细讨论了目标检测的评估指标,包括IoU、准确率、召回率等。还描述了传统的目标检测方法及其局限性,重点介绍了深度学习方法中的anchor box、anchor-base和anchor-free概念,以及two stage和one stage算法流程。最后深入剖析了YOLO系列算法,包括YOLO-V1以及YOLO-V2。

weixin_69683009的博客 1958

从零到一:鲲鹏920服务器上的DeepSeek模型部署全流程解析

本文详细解析了在华为鲲鹏920服务器上部署DeepSeek模型的全流程,包括环境准备、模型服务框架部署、性能优化及生产环境方案。通过ARM架构优化和量化技术,显著提升模型推理效率,适用于企业级AI应用场景,助力国产化技术落地。

weixin_29094775的博客 600

Simulink系统仿真

1.Simulink仿真基础 Simulink的启动 在 MATLAB主窗口选择“主页”选项卡,再单击“文件”命令组的“新建命令按钮,然后从下拉菜单中选择“ Simulink Model”命令。 在 MATLAB主窗口选择“主页”选项卡,再单击“ SIMULINK”命令组中的“ Simulink”命令按钮。 在 MATLAB的命令行窗口输入 simulink,命令。 利用File→New命令,可...

qq_43131852的博客 2万+

YOLO系列之一: YOLO-V1

yolo-v1介绍

weixin_42841721的博客 1397

SLAM工程师面试避坑指南:2025年最新高频考点与实战代码解析

本文为SLAM工程师提供2025年最新面试避坑指南,涵盖高频技术考点如VINS初始化、三维几何处理、多传感器融合架构设计等,并包含实战代码解析。特别针对算法工程师面试中的常见陷阱,提供系统设计框架和代码模板,帮助求职者提升通过率。

metaverse5vr的博客 246

YOLO系列算法综述(1)——YOLO V1算法

YOLO系列算法综述(1)——YOLO V1算法Abstract(摘要)1 Introduction(简介)2 Unified Detection(统一检测)2.1 Network Design(网络设计)2.2 Training(训 练)2.3 Inference(推论)2.4 Limitations of YOLO(YOLO的限制)3 总 结 Abstract(摘要) 我们设计了一种新的目标...

Friedrich Yuan的博客 6732

全志T527 适配双目tp2815_mipi

在全志T527 linux下适配双目TP2815 mipi摄像头,支持六路同时输出,四路可用作360环视、一路face id等,一路用于其它开发。

Linux驱动开发工程师,熟悉Linux/Android底层驱动、TP、显示、IIC、网络等通用外设调试适配,Linux上层应用开发。常用平台瑞芯微、全志、恩智浦等。 3826

【文献笔记】ICCV 2021 | Point Transformer

作者提到,特别适合点云处理,因为自注意力机制是的核心,本质上就是一个集合算子:它对输入元素具有顺序不变性和数量不变性3D点云是无序的,即使改变点云txt文件中的点顺序也不会有任何影响。自注意力机制天然具有排列不变性,因为它通过对所有"点对"的关系进行建模来处理输入,而不依赖于任何特定的输入顺序点云数据通常覆盖了3D空间中的对象或场景,理解这些数据需要捕捉点与点之间复杂的空间关系。自注意力机制能够有效的捕捉这些关系,因为它为每个"点对"赋予一个。

m0_55908255的博客 966

Yolo v4系列学习(一)Yolo v4代码的初步使用

前言 Yolo原作者Joseph Redmon之前2月21日宣布退出CV界,以下是他在社交平台上发布的消息: 感觉甚是遗憾,这里是他在TED上演讲的视频:Joseph Redmon大神在TED上的演讲,可以看看大神的风采! 但是4月24日,YOLO 的官方 Github 账号更新了 YOLO v4 的 arXiv 链接与开源代码链接,迅速引起了 CV 社区的关注: Yolo v4的作者共有三位:Alexey Bochkovs...

竭尽全力的专栏 7918

计算电磁学(三)有限差分方法

有限差分方法(FDM)是一种数值处理方法,通过将偏微分方程变换为一组代数方程,通过求解代数方程组来得到原边值问题的近似值。由于有限差分法非常简单,所以也特别的稳定高效。其中时域有限差分方法(FDTD)是电磁分析中的常用方法。在计算电磁学中,常用有限差分方法(finite difference equations)来替代微分方程。一个有限差分法通常包括三个步骤将求解域划分网格用有限差分方程逼近给定的微分方程求解在给定边界条件和初始状态下的方程常用的网格模型方阵斜方阵三角阵圆形阵。

CCC_B的博客 1640

【YOLO系列】YOLO.v4 & YOLO.v5算法原理详解

详细介绍了yolo系列目标检测算法的原理和发展过程。

deepsprings的博客 3643

Unreal5从入门到精通之一文搞懂Unreal的C++代码编译之谜

我们在开发Unreal项目时,如果时蓝图模板的项目,一般问题不大,因为当你修改完蓝图,点击编译Compile+保存Save,就可以继续开发了。这对于开发者来说也非常友好。但是,如果你使用的C++模板开发项目,代码编译一切都变得魔幻起来,IDE(VS/Rider)里面有编译,编辑器里面也有编译,有什么区别呢?我们来列举几个新手常碰到的问题。1.代码我明明新建了,编辑器里怎么看不到?2.昨天我新家的功能运行的好好的,今天怎么感觉还是老逻辑。或者昨天加的新代码,新蓝图不见了。

TxNet 1607

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: 【基础】优化背后的数学基础
下一篇: CVPR 2020 |商汤团队提出应对尺度变化的检测新算法
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值