Yolo系列目标检测 V1-V8

当two-stage(proposal + detection)系列的算法在目标检测界大展身手的时候,不禁会有人问道:”Why we have to train proposal first ? “。于是,便有学者展开了关于one-stage算法的研究,希望能研究出比two-stage运算效率更快的one-stage算法。

于是 Yolo 就这么诞生了,作者Joseph还挺有个性的,起名Yolo意思是”You Only Look Once ! “,它可以一次新预测多个Bbox的位置和类别,并且实现了end-to-end的检测和识别。它的运算速度Yolo算法经过一系列的发展,已经发展到了最近2023年1月的V8 版本,也推动了One Stage Detection算法的发展。

一. YOLO V1 [2015, Joseph]

1. YOLO V1算法流程及原理

YOLO V1算法流程如下图,主要步骤为:

1)将输入图片划分成SxS的cell;

2)通过CNN计算,预测出Bbox以及Confidence,同时对预测存在物体的Bbox计算后验概率;

3)将前两步的计算结果结合起来便可以得到检测结果。

Yolo系列目标检测 V1-V8_第1张图片

1)将输入的图片划分成SxS的cell

首先将输入的图片划分成SxS的cell(S通常取7),若某个物体的ground truth的中心点(x,y)落在这49个cell的某个内,则这个cell只负责预测这个物体,不会预测其他物体,且其他48个cell都不会预测这个物体。

Yolo系列目标检测 V1-V8_第2张图片

如上图,红色的cell只负责预测汽车,不会再去预测小狗和自行车,且蓝色和黄色的cell也都不负责预测汽车。同理蓝色和黄色的cell只负责预测小狗和自行车。

2)CNN预测Bbox

将输入图片划分成7×7的cell后,在图片经过CNN的运算后,每个cell都会生成B个Bbox和Bbox的confidence,即每个预测Bbox都有5个参数,包括该Bbox的四元坐标(x, y, w, h),和该Bbox的confidence。在这里confidence的计算公式为

其中 指的是这个cell中是否有ground truth的中心点,存在则值为1,否则为0; 便是预测的Bbox和ground truth计算的IoU值。若数据集中的检测物体有C个分类,于是每一个cell都会预测一次cell中物体属于某一类别的后验概率,即:,。而这个Cell中的B个预测的Bbox都会共享这个后验概率。

CNN网络输出的维度为:。果每个网格预测2个Bbox (B=2),有20类待检测的目标(C=20),则相当于最终CNN预测的输出为一个长度为的向量,从而完成检测+识别任务。

YOLO V1的网络结构如下,借鉴了LeNet的思想,但又有些细节改变。使用了24个卷积层,2个全连接层,不同的是用1×1的reduction layers紧跟3×3的convolutional layers取代了Lenet的inception modules 。

Yolo系列目标检测 V1-V8_第3张图片

在检测的时候,每个cell的后验概率和confidence相乘,

得到的结果是每个Bbox对每个类别的confidence score。最后通过阈值,去掉confidence score比较低的检测框,再通过NMS去掉冗余的检测框,就完成了检测。

2. YOLO V1的损失函数

YOLO V1的损失函数分为3个部分:预测Bbox坐标的损失函数、预测Bbox置信度的损失函数和分类的损失函数。它没有用到类似于Faster-RCNN的offset回归。

1)Coordinate Loss

Coordinate Loss的公式如下图:

Yolo系列目标检测 V1-V8_第4张图片

i的范围是(即cell的个数),j的范围是 (即检测物体的种类数)。公式中代表着有预测物体obj的中心点落在区域里面的cell,若第i个cell有需要预测的物体,且种类为第j类,则,否则,即相当于一个mask。为CNN预测出来的bbox的四元坐标,为ground truth的四元坐标。采用进行计算是为了压缩大物体的Loss来平衡大小物体生成Loss的权重。 参数用于平衡obj与非obj的cell生成的Loss,通常取5。

2)Confidence Loss

Confidence Loss的公式如下图:

Yolo系列目标检测 V1-V8_第5张图片

类似,但定义反过来,即若第i个cell有需要预测的物体,且种类为第j类,则,否则。同理参数用于平衡obj与非obj的cell生成的Loss,通常取0.5。是预测的bbox与groud true的confidence分数(即这两者的IoU),是网络输出的confidence分数。在这里(4)中的为0,因为noobj没有label。

3)Classification Loss

Classification Loss的公式如下图:

Yolo系列目标检测 V1-V8_第6张图片

为第i个cell预测为c类物体的概率,为label,即是否为c类物体。

YOLO V1居然在classification采用L2 Loss,很符合作者与主流格格不入的个性…

3. YOLO V1的问题

毕竟是YOLO的第一个版本,虽然检测速度有了很大的提升,但存在着一些待解决的问题,且精确度相比于Faster-RCNN低了不少。

1)对靠近的物体检测不理想

只有7×7共49个cell,每个cell只预测一个物体,因此对于拥挤靠近的物体,它们的ground truth中心可能在同一个cell中,导致了预测效果不太理想。

2)对小物体检测不理想

损失函数用的coordinate regression对小物体检测非常不友好。

3)对同一类别不同长宽比的物体检测不理想

没用到anchor的锅…

4)没用到BN层

二. YOLO V2 [2016, Joseph]

YOLO V2针对上一版本留下的问题,一一作出了解决:加了BN层、加了anchor、改成FCN结构可以多尺度训练等…

1. YOLO V2的改进策略

从下图可以看到YOLO V2在前一个版本的基础上增加了不少优化技巧,每个技巧都能让识别精度相比于第一个版本有着不少的提高。

Yolo系列目标检测 V1-V8_第7张图片

1)Batch Normalization

在CNN进行运算的时候,每次卷积层过后输入的数据分布会一直在改变,这会使得训练的难度增大。BN层的原理就是将卷积过后的batch的输入重新规范化到均值为0,方差为1的标准正太分布。它能加快网络的训练速度和模型的收敛,同时有助于模型的正则化,可以舍弃掉dropout的同时防止模型的过拟合。YOLO V2的网络结构在每个卷积层后面都加了Batch Normalization。

2)High Resolution Classifier

中文的意思叫高分辨率分类器,其实就是把ImageNet的图片数据分辨率提高后再训练一次。由于历史的原因,ImageNet的图片分辨率224×224太低了,因此可能会影响检测的精度。于是作者采用的训练方法是先在224×224的ImageNet上训练一次,然后把ImageNet的图片分辨率提升到448×448后进行Fine-tune训练,最后再用自己的数据集进行Fine-tune训练,最终得到的feature map尺寸为13×13。这一下就让模型在VOC2007上的mAP提升了3.7%。

3)Convolutional With Anchor Boxes

YOLO V1的网络结构最后用的是全连接层对Bbox进行预测,其中边界框的宽与高与输入图片的大小相关,而输入图片中可能存在不同尺度和长宽比(scales and ratios)的物体,让YOLOv1在训练过程中学习不同物体的形状是比较困难的。于是YOLO V2借鉴了Faster-RCNN中RPN的anchor,移除了全连接层,采用了全卷积加设置不同比例和尺度的anchor box,再通过offset回归预测Bbox,使得模型更容易学习不同尺度和比例的物体。

4)Dimension Clusters

这个是YOLO V2生成anchor的一个小技巧,Faster-RCNN中的anchor是人为规定的9个。实际上如果anchor的尺度比较合适,模型将会更容易学习,从而做出更精确的预测。因此,YOLO V2的anchor不是人为设定的,而是算出来的。作者通过K-means聚类,对训练集中的数据的ground truth boxes根据公式:d * (box, centroid) = 1 − IOU(box, centroid),对BBox与中心Box的IoU值进行了聚类。最终,作者得出的结论是,我用5个anchor就行了,不需要到9个那么多。对于COCO数据集,每个anchor的width和height为:(0.57273, 0.677385), (1.87446, 2.06253), (3.33843, 5.47434), (7.88282, 3.52778), (9.77052, 9.16828)。这个维度是相对于卷积过后的特征图13×13的维度。

Yolo系列目标检测 V1-V8_第8张图片

5)passthrough & Fine-Grained Features

中文叫更精细的特征图,用于对小物体的预测。若YOLOv2的输入图片大小为416×416,经过卷积运算之后得到大小为13×13的特征图,这对检测大物体是足够了,但是对于小物体还需要更精细的特征图。YOLO V2引入了类似于ResNet中shortcut的passthrough层,将卷积过程中更高维度的特征图(如26×26)与后面低维度的特征图进行concat。那不同维度的feature map是怎么concat的呢?这里作者采用了叫reorg的算法,将高维度的特征图按位置抽样,且不丢失位置信息,如下图。4×4的feature map可以变成4个2×2的feature map,叠起来后这样就能实现4×4的特征图和2×2的特征图进行concat,从而实现Fine-Grained Features。

Yolo系列目标检测 V1-V8_第9张图片

6)Multi-Scale Training

区别于YOLO V3的多尺度训练,YOLO V2是在输入层进行了图像的多尺度输入。

因为移除了全连接层,YOLO V2现在是个全卷积网络的结构,于是网络的输入不再需要固定维度。为了增强模型的鲁棒性,YOLO V2网络训练的输入图片尺寸为从320,352,…,到608,都是32的倍数,这是为了保证卷积过后的特征图尺度为整数。输入图片最小为320×320,此时对应的特征图大小为10×10,而输入图片最大为608×608,对应的特征图大小为19×19。在训练过程,每隔10个epoch改变一次输入图片大小,然后只需要修改对最后检测层的处理就可以继续训练。

7)DarkNet-19

YOLO V2采用全新的DarkNet-19网络来作为backbone,提高了网络的精确度。

2. YOLO V2的Anchor

1)Anchor size and number

跟Faster-RCNN人工手动定义9个anchor不同,YOLO V2采用聚类算法自动生成anchor。

它将指定数据集中所有的ground truth进行K-Means聚类,自动地生成了5个anchor。

2)Anchor,Truth BBoxes & Predicted BBoxed

Anchor

得到anchor后,会对anchor的值除以来归一化到(0,1),再乘13(最后输出的feature map size),将anchor的范围映射到(0,13)。

公式中,乘13这个数不严格,根据输入的image size不同而改变。

Anchors: 0.57273, 0.677385, …, 9.77052, 9.16828 [10 numbers] 代表着

Truth BBoxes & Predicted BBoxed

对于ground truth bboxes,YOLO V2的操作如下图:

Yolo系列目标检测 V1-V8_第10张图片

首先将bboxes通过公式归一化到(0,1)后再映射到(0,13)维度,最后再通过grid cell映射回(0,1)维度,最后一步实际上就是 分别与他们向下取整的坐标点相减,与anchor相除后取对数,从而归一到(0,1)。这一步,实际上是offset regression的encode步骤。

YOLO V2的offset regression如下图,与Faster-RCNN的类似,首先对ground truth通过encode步骤得到公式下面两行的,而CNN网络生成的是,通过计算Loss来进行训练。而后再通过进行反运算得到Predicted BBoxed的四元坐标就是grid cell的xy列的id,等同于上面用到的

Yolo系列目标检测 V1-V8_第11张图片

经过以上所有改进策略,YOLO V2在小物体和拥挤物体的检测中表现大大提升。

3. YOLO 9000简介

YOLO V2的论文就叫YOLO9000:Better, Faster, Stronger, 所以YOLO 9000是在YOLO V2的基础上提出的一种可以检测超过9000个类别的模型,其主要贡献点在于提出了一种分类和检测的联合训练策略。众多周知,检测数据集的标注要比分类数据集打标签繁琐的多,所以ImageNet分类数据集比VOC等检测数据集的数量和种类高出几个数量级。而在YOLO V2中,边界框的预测其实并不依赖于物体的标签,所以YOLO V2可以实现在分类和检测数据集上的联合训练。对于检测数据集,可以用来学习预测物体的边界框、置信度以及为物体分类,而对于分类数据集可以仅用来学习分类,但是其可以大大扩充模型所能检测的物体种类。

三. YOLO V3 [2018, Joseph]

相对于YOLO V2,YOLO V3又顺应着时代的洪流加入了许多改进的策略,最主要的改进有:1. 新的残差结构;2. 多尺度结构,运用了FPN那样的up-to-down和down-to-up数据通路;3.改变了分类器;4. Anchor的数量从5改成了9。

1.New structure

YOLO V3使用了全新的darknet-53结构作为backbone,它采用了类似于ResNet的残差结构,使得网络结构大大加深,也大幅提高了模型的精度。

Yolo系列目标检测 V1-V8_第12张图片
Yolo系列目标检测 V1-V8_第13张图片

2.Multiscale Structure

YOLO V3借鉴了FPN的结构,来实现模型的多尺度训练。

FPN认为,深层的卷积包含着大量的语义信息,浅层的卷积包含着准确的位置信息,将这些信息融合在一起,有助于模型的学习。FPN的结构与U-Net非常相似,只不过FPN在每一层融合都进行了输出。

Yolo系列目标检测 V1-V8_第14张图片

YOLO V3网络可以输出3个不同尺寸的feature map,分别是13×13,26×26,52×52。13×13用来预测大物体,26×26用来预测中物体,52×52用来预测小物体。每个scale的每个grid会生成3个anchor,anchor也是通过聚类生成。

YOLO V3的输出如下图,3个不同尺寸的feature map,每个grid生成3个anchor,每一级的输出都有4元坐标和1个confidence score以及数据集的80个检测类别。

Yolo系列目标检测 V1-V8_第15张图片

3.Change Classification

之前的classification用来做多分类,通常是用Softmax来做的。YOLO V3将Softmax改成了用logistic Regression来做,目的是可以将同一个bbox预测成多个类别。

这么做是由于有些数据集的label类别有重合,例如车和公共汽车,bboxes检测出的公共汽车可以同时属于车和公共汽车的类别。

四. YOLO V4 [2020, Alexey]

2020年初,YOLO的作者宣布退出学术界,但是YOLO的发展脚步还是没有停下。这不,YOLO V4 虽然作者变了,不过是有原作者备书的,YOLO精神得以延续!

YOLO V4是图像检测trick的集大成者,将当时能优化图像检测的trick几乎都尝试过了一遍,达到了模型的最好效果,且速度也很快。并将所有的trick在统一的benchmark上进行测试,得到了不同trick优化效果的统一评估。

YOLO V4在以下几个方面进行了改进:

1.Data Augmentation

做为trick的集大成者,YOLO V4采用了一些Data Augmentation的方法来进行了实验并评估。最后,收到了Mixup,Cutmix方法的启发,提出了新的Mosaic数据增强方法。

1) Mixup [2018, Zhang]

首先来了解一下Mixup,顾名思义就是把两张图按一定的比例混在一起。Mixup的作者对各种Mixup方法做了一系列实验后,总结出来Mixup的一些策略。他表示,Mixup两张图片就行了,三张或者更多效果差不多反而还花费更多的时间;只Mix数据集里的一个batch就行了,没必要Mix整个数据集,效果差不多;最好Mix标签不同的图面,如果Mix标签相同的图片没有提升。不过Mixup的提出主要是用来做分类而不是检测的。

Yolo系列目标检测 V1-V8_第16张图片

2) Cutout [2017, DeVires]

Cutout,顾名思义就是裁剪攻击,将图片的某一块裁剪掉,增大了图片的学习难度,对部分遮挡的识别能有一定的效果提升。

Cutout要先规范化图片到同一尺度,才能进行裁剪,这样是为了避免潜在的影响。之后又有人觉得裁剪后的像素用0填充对图片影响太大了,图片突然出现一块黑可能会于是提议用灰色填充。之后,又有人提出了随机擦除的方法,如上图左下。后来,有人觉得随机擦除的攻击太简单了,很容易把图像的重要特征给擦除了,于是提出了Gridmask的cutout方法,在图片上有规律地每次取一小块,如上图右下,这样既能保证重要特征不会被彻底擦除,又能cutout掉足够多的内容。

3)CutMix

CutMix就是把一张图片cut掉的部分用另一张图片的部分来mix上去填充,这样既能保证图片所有信息都是有用的,并且有区域性dropout的功能。作者做了一系列的试验后表示,CutMix的引入能让模型效果明显好于Mixup;其次CutMix也是组合两张图片就足够了。

Yolo系列目标检测 V1-V8_第17张图片

4)Mosaic

YOLO V4在训练数据层面提出了一种新的数据增强的方法Mosaic,中文也叫马赛克。

Mosaic的思想是将四张图片进行随机裁剪后拼接到一张图像上作为训练数据,如下图。它的好处是,相当于提高了batch size(训练一张图相当于训练4张图),且数据的复杂度提升了,使得模型不容易过拟合。

Yolo系列目标检测 V1-V8_第18张图片

2.Self-Adversarial Training

Self-Adversarial Training自对抗训练收到了GAN的启发。它将Loss回传的时候不更新网络的weight,而是直接加在图像上,达到了data augmentation的效果。

3.CmBN

因为YOLO系列最初在原作者自己搭建的Darknet平台上训练,由于一些历史原因,唯独YOLO使用到了miniBatch这一个参数。YOLO V4借鉴了CBN的方法,应用到miniBatch上,提出来CmBN。

Yolo系列目标检测 V1-V8_第19张图片

4.Modified SAM

YOLO V4通过SAM(Spatial Attention Module)引入了Attention机制并在SAM上进行了改良。

Spatial Attention Module的具体结构如下,输入的feature map以每个空间点为维度分别进行MaxPooling和AvgPooling,输出两个一个512×512的attention map,对两个attention map进行concat后,然后通过7×7的卷积进行特征融合,最后通过Sigmoid得到一个跟feature map相同大小的Attention map,即

Yolo系列目标检测 V1-V8_第20张图片

SAM计算公式如下:

YOLO V4改良的SAM直接通过一层卷积来代替了MaxPooling和AvgPooling进行concat后再通过7×7的卷积进行特征融合这一步。如下图。

Yolo系列目标检测 V1-V8_第21张图片

5.Modified PAN

YOLO V4的Modified PAN就是把原来PAN的加法运算直接改成concat拼接来加速运算。

Yolo系列目标检测 V1-V8_第22张图片

6.Regularization

YOLO V4在正则化方面做了两个主要优化措施,分别是Label smoothing和Dropblock。

1)label smoothing

label smoothing的意思就是别把标签定得太死。举个例子,就是原本的二分类0/1标签,经过label smoothing把标签定得没这么死后,变成了0.05/0.95,或者0.1/0.9,而不是彻底的0和1。

Yolo系列目标检测 V1-V8_第23张图片

Label Smoothing的效果如上图所示,将CIFAR和ImageNet的数据进行Label Smoothing后再进行训练,可以发现训练集和验证集的结果显示,类别之间的特征差异更加明显。

2)Dropblock

Dropblock实际上就是把dropout的思想引入到卷积层而提出的。通常情况下,Dropout一般用于全连接层,且它有一定的正则作用可以防止模型过拟合。Dropout在卷积层是没有效果的,原因是因为卷积核共享参数,这样在卷积层中随意Dropout掉的神经元在其他神经元中会保留有信息。但是在YOLO中采用的是全卷积网络,没有全连接层。想到达到有Dropout的正则化效果,就要使用DropBlock。

Dropout是随机将某个神经元失活。为了解决卷积层中参数共享的问题,DropBlock的原理是将feature map中某一片block给随机失活。

Yolo系列目标检测 V1-V8_第24张图片

7.Activation Function

YOLOV4尝试了许多激活函数,最后选用了Mish效果最好。Swish与Mish的函数长得非常的像,他们的一阶导和二阶导也很像,但通常实验中Mish的效果往往好于Swish。

Yolo系列目标检测 V1-V8_第25张图片
Yolo系列目标检测 V1-V8_第26张图片

1)Swish — Self-gated activation Function

Swish的数学表示为,其实就是x乘上Sigmoid函数。Swish的Self-gated activation的想法是受到了LSTM的启发。它的求导有:

Swish的性质有以下几点:

a. 在正半轴是无边界的(Unbounded above),可以避免梯度饱和;

b. 在负半轴是有边界的(Bounded below),并且趋向于0,有很强的正则化效果;

c. 非单调函数,强非线性,提高网络拟合复杂数据的能力;

d. 非常的平滑,处处连续可到,容易走到全局最优解。

2)Mish — 可能是现在最好的激活函数

Mish 的数学表达式为,其中这个式子还有另一个名字叫softplus。Mish的求导有:

Mish性质有以下几点:

a. 跟Swish有同样的效果,且在Swish效果不好的时候可能效果会更好;

b. 比ReLU慢;

c. 不能100%保证效果会好;

d. 可以跟Ranger Optimizer一起运行;

8.Loss Function

L1 Loss、L2 Loss 、Smooth L1 Loss在目标检测中的问题:1. 它们在预测中,四元坐标是分别单独计算的;2. 由于坐标单独预测,所以它们预测出不同的bbox时有可能会产生相同的loss。

于是,现阶段目标检测中更多地使用了IoU Loss系列的损失函数,解决了上面的问题。IoU Loss家族的发展经历了IoU Loss → GIoU Loss → DIoU Loss → CIoU Loss。YOLO V4使用了CIoU Loss。

1)IoU Loss

IoU Loss可以将四元坐标做统一预测,常用的IoU Loss一般已经不用ln函数了,直接为 – IoU 或者 1 – IoU。

Yolo系列目标检测 V1-V8_第27张图片

IoU Loss 有两大问题。第一,如果预测出的bbox与ground truth不相交怎么办?这样不论两个框离得多远Loss都是1。如下图,明显左边的predicted bbox要比右边的好,但是它们Loss都是相等的,这很不合理。

第二,如果bbox与ground truth相交,但是IoU值相等,也不能提供那个bbox更好地有效信息。如下图。

2)GIoU Loss

GIoU Loss 解决了 IoU Loss 不相交计算问题,它的计算公式如下:

用下图举例来解释这些公式。首先找到一个包含ground truth和predicted bbox的最小box,也就是找到这两个box中的最大和最小的坐标,如下图的蓝框。然后计算蓝色部分面积。公式中的U等于两个框的面积和减去相交的面积,如下图二中黄的做斜杠的面积。为蓝色矩形框中没有被两个框覆盖到的面积。GIoU就是IoU减去蓝色框中没有被两个框覆盖到的面积与蓝色框面积之比. 也就是满足表达式.

Yolo系列目标检测 V1-V8_第28张图片

GIoU Loss的问题是,有可能出现相交的面积相等但在不同位置的情况,如下图,三个框的位置计算的GIoU Loss 值是一样的。

Yolo系列目标检测 V1-V8_第29张图片

3)DIoU Loss

DIoU Loss添加了两个box的位置关系,可以解决这个问题。用两个box的中心距离d的平方除以两个box的对角线距离c的平方。这个值就是图中公式,这是一个惩罚项,取值从0到趋向于1。也就是满足表达式:.

Yolo系列目标检测 V1-V8_第30张图片

但是如果中点重合,但是Box大小相等但形状不一样,如下图,那DIoU就又无法表示这两种情况Loss的差别了。DIoU的作者提出了这样一个准则,Loss要考虑到相交面积,中心点距离和生成box的形状。DIoU的问题是没考虑到生成bbox的形状所导致的。

4)CIoU Loss

CIoU Loss是IoU Loss家族中比较完善地解决各种情况的损失函数。CIoU的惩罚项。如下图公式所示,可以认为这是个非严格normalize的常数,因为arctan取值为,平方后的倒数就是

Yolo系列目标检测 V1-V8_第31张图片

的权重,它可以调节距离和比例的重要程度。如上公式,当bbox–>ground truth的时候, 1−IoU就会趋向于0,就趋近于1,Loss中bbox形状比例就更重要;反之,Loss中bbox的距离更重要。

。它对模型的提升效果如下表。

Yolo系列目标检测 V1-V8_第32张图片

9.DIoU-NMS

NMS的计算用到了IoU,DIoU-NMS就是在NMS算IoU的时候算一下DIoU的惩罚项RDIoU并减去。即当时保留该框,否则丢弃。它的作用是当Predicted Bbox离Ground Truth挺远的时候,保留它,近的就丢弃。

五. YOLO V5 [2021,No released paper]

相比于上述Redmon 的 YOLO 版本 1-3和Bochkovskiy 的 YOLOv4发表在支持其性能和架构使用的同行评审研究论文中。

YOLO V5自诞生就充满了争议性,详见: https://viso.ai/deep-learning/yolov5-controversy/

2021年,Ultralytics发布了YOLOv5,进一步提升了模型的性能,增加了支持全景分割、物体跟踪等新特性。

YOLOv5 相比其他版本,没有发表研究论文,是第一个在 Pytorch 而非 Darknet 中实现的 YOLO 版本。

YOLOv5 由 Glenn Jocher 于 2020 年 6 月发布,与 YOLOv4 类似,使用CSPDarknet53作为其架构的主干。该版本包括五种不同的模型尺寸:YOLOv5s(最小)、YOLOv5m、YOLOv5l 和 YOLOv5x(最大)。

YOLOv5 架构的主要改进之一是集成了Focus 层,以单层为代表,它是通过替换 YOLOv3 的前三层创建的。这种集成减少了层数和参数数量,还增加了前进和后退速度,而对 mAP 没有任何重大影响。

下图比较了 YOLOv4 和 YOLOv5s 之间的训练时间。

Yolo系列目标检测 V1-V8_第33张图片

六. YOLO V6 [2022,Sep, Bo Zhang ]

YOLOv6 (MT- YOLOv6 ) 框架致力于硬件友好高效设计和高性能的工业应用,由中国公司美团发布。

这个新版本是用 Pytorch 编写的,不是官方 YOLO 的一部分,但仍然得名 YOLOv6,因为它的骨干灵感来自最初的单阶段 YOLO 架构。

YOLOv6 对之前的 YOLOv5 进行了三项重大改进:硬件友好的骨干和颈部设计、高效的解耦头和更有效的训练策略。

与之前的 YOLO 版本相比,YOLOv6 在 COCO 数据集上的准确性和速度方面提供了出色的结果,如下图所示。

Yolo系列目标检测 V1-V8_第34张图片

最先进的高效物体检测器的比较。所有模型都使用 TensorRT 7 进行测试,除了量化模型使用 TensorRT

  • YOLOv6-N在 NVIDIA Tesla T4 GPU 上以 1234(吞吐量)FPS 的吞吐量在COCO 数据集上实现了 35.9% 的 AP。

  • YOLOv6-S 以 869 FPS 的速度达到了最新的 43.3% AP。

  • YOLOv6-M 和 YOLOv6-L 在相同的推理速度下也分别取得了 49.5% 和 52.3% 的更好的准确率性能。

所有这些特性使 YOLOv6 成为适合工业应用的算法。

七. YOLO V7 [2022,Jul ,Chien-Yao Wang ]

YOLOv7 于 2022 年 7 月在论文Trained bag-of-freebies sets new state-of-the-art for real-time object detectors中发布。该版本在目标检测领域迈出了重要一步,在准确性和速度方面超越了之前的所有模型。

Yolo系列目标检测 V1-V8_第35张图片

YOLOv7 推理时间与其他实时物体检测器的比较

YOLOv7 在其 (1) 架构和 (2) Trainable bag-of-freebies 级别进行了重大更改:

1.架构级别

YOLOv7 通过集成扩展高效层聚合网络 (E-ELAN) 对其架构进行了改革,使模型能够学习更多不同的特征以更好地学习。

此外,YOLOv7 通过连接其派生模型的架构(例如 YOLOv4、Scaled YOLOv4 和 YOLO-R)来扩展其架构。这使得模型可以满足不同推理速度的需求。

Yolo系列目标检测 V1-V8_第36张图片

基于级联模型的复合扩展深度和宽度

2. 可训练的免费赠品袋

术语bag-of-freebies指的是在不增加训练成本的情况下提高模型的准确性,这就是 YOLOv7 不仅提高了推理速度还提高了检测精度的原因。

八. YOLO V8 [2023,No released paper]

Ultralytics YOLOv8是 Ultralytics 开发的 YOLO 目标检测和图像分割模型的最新版本。YOLOv8 据称是一个尖端的、最先进的 (SOTA) 模型,它建立在以前成功的 YOLO 版本的基础上,并引入了新的功能和改进,以进一步提高检测性能和灵活性。

YOLOv8 的一个关键特性是它的可扩展性。它被设计成一个支持YOLO所有以前版本的框架,可以很容易地在不同版本之间切换并比较它们的性能。这使得 YOLOv8 成为希望利用最新 YOLO 技术同时仍能使用其现有 YOLO 模型的用户的理想选择。

除了其可扩展性之外,YOLOv8 还包括许多其他创新,使其成为广泛的对象检测和图像分割任务的有吸引力的选择。其中包括一个新的主干网络、一个新的 anchor-free检测头和一个新的损失函数。YOLOv8 也非常高效,可以在从 CPU 到 GPU 的各种硬件平台上运行。

总的来说,YOLOv8 是一个强大而灵活的对象检测和图像分割工具,它提供了两全其美的优势:最新的 SOTA 技术以及使用和比较所有以前的 YOLO 版本的能力。

你可能感兴趣的:(深度学习,人工智能,目标检测)