0


从YOLOv1到YOLOv8的YOLO系列最新综述【2023年4月】

*作者:Juan R. Terven 、*Diana M. Cordova-Esparaza **

摘要:YOLO已经成为机器人无人驾驶汽车视频监控应用的核心实时物体检测系统。我们对YOLO的演变进行了全面的分析,研究了从最初的YOLO到YOLOv8每次迭代的创新和贡献。我们首先描述了标准指标和后处理;然后,我们讨论了每个模型的网络结构和训练技巧的主要变化。最后,我们总结了YOLO发展的基本经验,并提供了对其未来的看法,强调了提高实时物体检测系统的潜在研究方向。

1. 简介

实时物体检测已经成为众多应用中的一个重要组成部分,横跨自主车辆、机器人、视频监控和增强现实等各个领域。在各种物体检测算法中,YOLO(You Only Look Once)框架因其在速度和准确性方面的显著平衡而脱颖而出,能够快速、可靠地识别图像中的物体。自成立以来,YOLO系列已经经历了多次迭代,每次都是在以前的版本基础上解决局限性并提高性能(见图1)。本文旨在全面回顾YOLO框架的发展,从最初的YOLOv1到最新的YOLOv8,阐释每个版本的关键创新、差异和改进。

本文首先探讨了原始YOLO模型的基本概念和架构,这为YOLO系列的后续进展奠定了基础。随后,我们深入探讨了从YOLOv2到YOLOv8每个版本中引入的改进和提高。这些改进包括各个方面,如网络设计、损失函数的修改、锚框的调整和输入分辨率的扩展。通过研究这些发展,对YOLO框架的演变及其对物体检测的影响有一个整体的理解。

除了讨论每个YOLO版本的具体进展外,本文还强调了在整个框架的发展过程中出现的速度和准确性之间的权衡问题。这强调了在选择最合适的YOLO模型时,考虑具体应用的背景和要求的重要性。最后,我们设想了YOLO框架的未来方向,触及了进一步研究和发展的潜在途径,这将塑造实时物体检测系统的持续进展。

2. YOLO在不同领域的应用

3. 物体检测指标和非极大值抑制NMS****

平均精度(AP),传统上称为平均精度(mAP),是评价物体检测模型性能的常用指标。它测量所有类别的平均精度,提供一个单一的数值来比较不同的模型。COCO数据集没有对AP和AP进行区分。在本文的其余部分,我们将把这个指标称为AP。

3.1 AP

AP指标是基于精度-召回指标,处理多个对象类别,并使用Intersection over Union(IoU)定义一个积极的预测。

Precision和Recall:精确率衡量的是模型正面预测的准确性,而召回率衡量的是模型正确识别的实际正面案例的比例。精确率和召回率之间通常有一个权衡;例如,增加检测到的对象的数量(更高的召回率)会导致更多的假阳性(更低的精确率)。为了考虑到这种权衡,AP指标包含了精度-召回曲线,该曲线将精度与不同置信度阈值的召回率作了对比。这个指标通过考虑精度-召回曲线下的面积,对精度和召回进行了平衡的评估。

处理多个物体类别:物体检测模型必须识别和定位图像中的多个物体类别。AP指标通过单独计算每个类别的平均精度(AP),然后取所有类别中这些AP的平均值来解决这个问题(这就是为什么它也被称为平均平均精度)。这种方法确保了对每个类别的模型性能进行单独评估,从而对模型的整体性能提供了更全面的评估。

3.2 计算AP****

在VOC和COCO数据集中,AP的计算方法是不同的。在这一节中,我们将描述它是如何在每个数据集上计算的。

VOC数据集

这个数据集包括20个物体类别。为了计算VOC中的AP,我们遵循以下步骤:

  1. 对于每个类别,通过改变模型预测的置信度阈值,计算出精确-召回曲线
  2. 使用精度-召回曲线的内插11点抽样,计算每个类别的平均精度(AP)
  3. 通过取所有20个类别中的AP的平均值来计算最终的平均精度(AP)

COCO数据集

这个数据集包括80个对象类别,并使用更复杂的方法来计算AP。它没有使用11点插值,而是使用101点插值,也就是说,它计算了从0到1的101个召回阈值的精度,增量为0.01。另外,AP是通过对多个IoU值进行平均而不是只对一个IoU值进行平均得到的,除了一个常见的AP指标,即AP50 ,它是单个IoU阈值为0.5的AP。COCO中计算AP的步骤如下:

  1. 对于每个类别,通过改变模型预测的置信度阈值,计算出精确-召回曲线
  2. 使用101-recall阈值计算每个类别的平均精度(AP)
  3. 在不同的交叉联合(IoU)阈值下计算AP,通常从0.5到0.95,步长为0.05。更高的IoU阈值需要更准确的预测才能被认为是真阳性
  4. 对于每个IoU阈值,取所有80个类别的AP的平均值
  5. 最后,通过平均每个IoU阈值计算的AP值来计算总体AP

AP计算的差异使得我们很难直接比较两个数据集的物体检测模型的性能。目前的标准使用COCO AP,因为它对一个模型在不同的IoU阈值下的表现有更精细的评估。

3.3 ******非极大值抑制 ********(NMS)******

4. YOLO: You Only Look Once

4.1 YOLOv1如何工作?****

YOLOv1通过同时检测所有的边界框,统一了物体检测步骤。为了实现这一目标,YOLO将输入图像划每个边界框的预测由五个值组成:Pc、bx、by、bh、bw ,其中Pc是bounding box的置信度分数,反映了模型对bbox包含物体的置信度以及bbox的精确程度。bxby坐标是方框相对于网格单元的中心,bhbw是方框相对于整个图像的高度和宽度。YOLO的输出是一个S×S×(B×5+*C)*的张量,可以选择用非最大抑制(NMS) 来去除重复的检测结果。

YOLOv1在PASCAL VOC2007数据集上取得了63.4的平均精度(AP)。

4.2 YOLOv1网络架构****

4.3 YOLOv1训练****

作者使用ImageNet数据集[43]在224x224的分辨率下对YOLO的前20层进行了预训练。然后,他们用随机初始化的权重增加了最后四层,并在448x448的分辨率下用PASCAL VOC 2007和VOC 2012数据集[36]对模型进行了微调,以增加细节,实现更准确的物体检测。对于增强,作者使用了最多为输入图像大小20%的随机缩放和平移,以及HSV色彩空间中上端系数为1.5的随机曝光和饱和度。

YOLOv1使用了一个由多个和平方误差组成的损失函数,如图5所示。在该损失函数中、 λcoord = 5是一个比例因子,赋予边界框预测更多的重要性,而λnoobj = 0.5是一个比例因子,降低不包含物体的框的重要性。λnoobj = 0.5是一个比例因子,它降低了不包含物体的bbox的重要性。

4.4 YOLOv1优缺点

  1. 它在网格单元中最多只能检测到两个相同类别的物体,限制了它预测附近物体的能力
  2. 它在预测训练数据中未见的长宽比物体时很吃力
  3. 由于下采样层,它只能从粗略的物体特征中学习

5. YOLOv2:更好、更快、更强

  1. 在所有卷积层上的批量归一化改善了收敛性,并作为一个正则器来减少过拟合;
  2. 高分辨率分类器,和YOLOv1一样,他们在ImageNet 以224x224的分辨率对模型进行了预训练。然而,这一次,他们在分辨率为448 x 448的ImageNet上对模型进行了10次微调,提高了网络在高分辨率输入下的性能;
  3. 完全卷积。他们去掉了密集层,采用了全卷积架构;
  4. 维度聚类。挑选好的Anchor有助于网络学习预测更准确的边界盒。作者对训练中的边界盒进行了k-means聚类,以找到好的先验。他们选择了五个Anchor,在召回率和模型复杂性之间进行了良好的权衡;
  5. 多尺度训练。由于YOLOv2不使用全连接层,输入可以是不同的尺寸。为了使YOLOv2对不同的输入尺寸具有鲁棒性,作者随机训练模型,每十批改变输入尺寸(从320 × 320到608 × 608)。

通过所有这些改进,YOLOv2在PASCAL VOC2007数据集上取得了78.6%的平均精度(AP),而YOLOv1则取得了63.4%。

5.1 YOLOv2架构****

YOLOv2使用的骨干架构被称为Darknet-19,包含19个卷积层和5个maxpooling层。与YOLOv1的架构类似,它受到Network in Network[42]的启发,在3×3之间使用1×1 3×3之间的卷积,以减少参数的数量。此外,如上所述,他们使用批量归一化来规范化并帮助收敛。

5.2 YOLO9000是一个更强大的****YOLOv2

6. YOLOv3

  1. bounding box预测。与YOLOv2一样,该网络为每个bounding box预测四个坐标tx、ty、tw和th;然而,这次YOLOv3使用逻辑回归为每个bounding box预测一个目标分数。这个分数与ground truth重合度最高的Anchor来说是1,对于其他Anchor来说是0。与Faster R-CNN[45]相比,YOLOv3只为每个ground truth分配一个Anchor。另外,如果没有为一个对象分配Anchor,它只会产生分类损失,而不会产生定位损失或置信度损失;
  2. 空间金字塔池(SPP)。 虽然在论文中没有提到,但作者还在骨干中加入了一个改进的SPP块[48],它连接了多个最大集合输出,而没有子采样(stride = 1),每个内核大小不同的k×k,其中k=1、5、9、13,允许更大的感受野。这个版本被称为称为YOLOv3-spp,是表现最好的版本,将AP50提高了2.7%;
  3. Bounding box先验。与YOLOv2一样, 作者也使用k-means来确定Anchor的bounding box预设。不同的是, 在YOLOv2中,他们每个单元共使用了五个先验盒,而在YOLOv3中,他们使用了三个不同尺度的先验盒。

6.1 YOLOv3架构****

Darknet-53骨干网获得了与ResNet-152相当的Top-1和Top-5的准确率,但速度几乎为2倍。

6.2 YOLOv3多尺度预测****

除了更大的结构,YOLOv3的一个基本特征是多尺度预测,即在多个网格尺寸下的预测。这有助于获得更精细的方框,并大大改善了对小物体的预测,而这正是YOLO以前版本的主要弱点之一。

图9所示的多尺度检测架构的工作原理如下:第一个标记为y1的输出相当于YOLOv2的输出,其中一个13×13的网格定义了输出。第二个输出y2是由串联后的输出与(Res × 8)后的输出相连接。这些特征图有不同的尺寸,即13×13和26×26,所以在连接之前有一个上采样操作。最后,使用一个上采样操作,第三个输出y3将26×26的特征图与52×52的特征图连接起来。对于有80个类别的COCO数据集,每个尺度提供了一个形状为N×N×[3×(4+1+80)]的输出张量。其中N×N是特征图(或网格单元)的大小,3表示每个单元的方框,4+1包括四个坐标和置信度得分。4+1包括四个坐标和置信度得分。

**6.3 **YOLOv3结果

7. Backbone, Neck和Head

Backbone负责从输入图像中提取有用的特征。它通常是一个卷积神经网络(CNN),在大规模的图像分类任务中训练,如ImageNet。骨干网在不同的尺度上捕捉层次化的特征,在较早的层中提取低层次的特征(如边缘和纹理),在较深的层中提取高层次的特征(如物体部分和语义信息)。

Head是物体检测器的最后组成部分;它负责根据Backbone和Neck提供的特征进行预测。它通常由一个或多个特定任务的子网络组成,执行分类、定位,以及最近的实例分割和姿势估计。头部处理颈部提供的特征,为每个候选物体产生预测。最后,一个后处理步骤,如非极大值抑制(NMS),过滤掉重叠的预测,只保留置信度最高的检测。

在其余的YOLO模型中,我们将使用Backbone, Neck和Head来描述架构。

8. YOLOv4

我们将YOLOv4的主要变化总结为以下几点:

  • 自我对抗性训练(SAT。为了使模型对扰动更加稳健,对输入的图像进行对抗性攻击,以创造一个欺骗性,即gound truth不在图像中,但保持原始标签以检测正确的对象;

8.1 YOLOv4结果****

在MS COCO数据集test-dev 2017上进行评估,YOLOv4在NVIDIA V100上实现了43.5%的AP和65.7%的AP50,速度超过了50 FPS。

9. YOLOv5

YOLOv5 提供了五个版本: YOLOv5n( 纳米级)、YOLOv5s( 小型)、YOLOv5m( 中型)、YOLOv5l(大型)和YOLOv5x(特大型)。

在撰写本文时,YOLOv5发布的版本是7.0版,包括能够进行分类和实例分割的YOLOv5版本。

9.1 YOLOv5结果****

在MS COCO数据集test-dev 2017上进行评估,YOLOv5x在图像大小为640像素的情况下实现了50.7%的AP。使用32 个批次的大小,它在NVIDIA V100 上可以达到200 FPS 的速度。使用更大的输入尺寸1536 像素, YOLOv5实现了55.8%的AP。

10. Scaled-YOLOv4

缩小的架构被称为YOLOv4-tiny;它是为低端GPU设计的,在Jetson TX2上能以46 FPS运行,在RTX2080Ti上能以440 FPS运行,在MS COCO上达到22%的AP。

11. YOLOR

在MS COCO数据集test-dev 2017上进行评估,YOLOR在NVIDIA V100上以30 FPS的速度取得了55.4%的AP和73.3%的AP50。

12. YOLOX

2021年,在Tesla V100上以50.1%的AP和68.9%的FPS实现了速度和准确性的最佳平衡。在下文中,我们描述了YOLOX相对于YOLOv3的五个主要变化:

  1. 多重正样本(Multi positives)。为了弥补因缺乏锚点而产生的巨大不平衡,作者使用了中心采样[81],他们将中心3×3的区域作为正例区域。这种方法使AP增加了2.1点;

13. YOLOv6

  1. 一个用于回归和分类任务的自我蒸馏策略;

13.1 YOLOv6结果****

在MS COCO数据集test-dev 2017上进行评估,YOLOv6-L在NVIDIA Tesla T4上实现了52.5%的AP和70%的AP50 ,速度约为50 FPS。

14. YOLOv7

YOLOv7的架构变化是:

  • 基于串联的模型的模型缩放。缩放通过调整一些模型属性来生成不同大小的模型。YOLOv7的架构是一个基于串联的架构,其中标准的缩放技术,如深度缩放,导致过渡层的输入通道和输出通道之间的比例变化,这反过来又导致了模型的硬件使用量的减少。YOLOv7提出了一种新的基于串联模型的缩放策略,其中块的深度和宽度以相同的因素进行缩放,以保持模型的最佳结构。

YOLOv7中使用的bag-of-freebies包括:

  • 对辅助头进行粗略的标签分配,对主导头进行精细的标签分配。主导头负责最终输出,而辅助头则协助训练;
  • conv-bn-activation****中的批量归一化。这将批量归一化的平均值和方差整合到推理阶段的卷积层的偏置和权重中;
  • 指数移动平均线作为最终推断模型。

14.1 YOLOv4YOLOR的比较

在这一节中,我们强调了YOLOv7与同一作者以前开发的YOLO模型相比的改进之处。

与YOLOv4相比,YOLOv7实现了参数减少75%,计算量减少36%,同时平均精度(AP)提高了1.5%。与YOLOv4-tiny相比,YOLOv7-tiny设法将参数和计算量分别减少39%和49%,同时保持相同的AP。最后,与YOLOR相比,YOLOv7的参数数量和计算量分别减少了43%和15%,同时AP也略微增加了0.4%。

14.2 YOLOv7结果****

在MS COCO数据集test-dev 2017上评估,YOLOv7-E6在输入尺寸为1280像素的情况下,在NVIDIA V100上取得了55.9%的AP和73.5%的AP50 ,速度为50 FPS。

15. DAMO-YOLO

  1. 一个小头。作者发现,大头和小头能产生更好的性能,他们只留下一个线性层用于分类,一个用于回归。他们把这种方法称为ZeroHead;
  2. 知识的提炼。他们提出的策略包括两个阶段:教师在第一阶段指导学生,学生在第二阶段独立进行微调。此外,他们在蒸馏方法中加入了两项增强功能:对齐模块,它将学生的特征调整为与教师的特征相同的分辨率,以及通道动态温度,它将教师和学生的特征归一化,以减少实际价值差异的影响;

作者生成了名为DAMO-YOLO-Tiny/Small/Medium的比例模型,在NVIDIA V100上,最佳模型在233 FPS下的AP达到了50.0%。

16. YOLOv8

YOLOv8可以从命令行界面(CLI)运行,也可以作为一个PIP包安装。此外,它还配备了多个用于贴标、培训和部署的集成。

YOLOv8 提供了五个版本: YOLOv8n( 纳米级)、YOLOv8s( 小型)、YOLOv8m( 中型)、YOLOv8l(大型)和YOLOv8x(特大型)。

16.1 YOLOv8结果****

在MS COCO数据集test-dev 2017上进行评估,YOLOv8x在图像大小为640像素的情况下实现了53.9%的AP( 相比之下,YOLOv5在相同的输入大小上为50.7%),在NVIDIA A100和TensorRT上的速度为280 FPS。

17. PP-YOLOPP-YOLOv2PP-YOLOE

  1. 更大的批次规模以提高训练的稳定性,他们从64个到192个,同时更新了训练计划和学习率;
  2. 对训练过的参数保持移动平均数,并使用它们来代替最终的训练值;
  3. DropBlock只适用于FPN;
  4. 在另一个分支中增加了一个IoU损失,以及用于边界盒回归的L1损失;
  5. 增加了一个IoU****预测分支,以衡量定位精度和IoU感知损失。在推理过程中,YOLOv3乘以分类概率和客观性分数来计算最终的检测结果,PP-YOLO也乘以预测的IoU来考虑定位精度;
  6. 类似于YOLOv4的网格敏感方法被用来改善网格边界的包围盒中心预测;
  7. 空间金字塔集合法只用于顶部特征图,以增加骨干的感受野。

17.1 PP-YOLO的增量和预处理****

PP-YOLO使用了以下增强和预处理:

  1. 随机色彩失真;
  2. 随机展开;
  3. 随机裁剪和随机翻转,概率为0.5;
  4. RGB通道的z-score规范化,其平均值为[0*.485, 0.456, 0.406],标准偏差为 [0.229, 0.224, 0.*225];
  5. 从[320, 352, 384, 416, 448, 480, 512, 544, 576, 608]中均匀地抽取多种图像尺寸。
    

17.2 PP-YOLO结果****

在MS COCO数据集test-dev 2017上进行评估,PP-YOLO在NVIDIA V100上取得了45.9%的AP和65.2%的AP50,73 FPS。

17.3 PP-YOLOv2

  1. 骨干网从ResNet50改为ResNet101;****
  2. 路径聚合网络(PAN而不是类似于YOLOv4的FPN;
  3. Mish激活函数。与YOLOv4和YOLOv5不同,他们只在检测颈部应用mish激活函数,以保持骨干的ReLU不变;
  4. 较大的输入尺寸有助于提高小物体的性能。他们将最大的输入尺寸从608扩大到768,并将每个GPU 的批量大小从24张图像减少到12张。输入尺寸从[320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768]中均匀抽取;
  5. 一个修改过的IoU意识到的分支。他们修改了使用软标签格式而不是软权重格式的IoU意识到的损失计算方法。

17.4 PP-YOLOE

  1. 高效任务排列头(ET-head。与YOLOX的分类头和位置头解耦不同,PP-YOLOE反而使用了基于TOOD的单一头,以提高速度和准确性;

和以前的YOLO版本一样,作者通过改变背脊和颈部的宽度和深度,生成了多个比例的模型。这些模型被称为PP-YOLOE-s(小型)、PP-YOLOE-m(中型)、PP-YOLOE-l(大型)和PP-YOLOE-x(特大型)。

18. 讨论

  • 锚Anchor:最初的YOLO模型相对简单,没有采用锚点,而最先进的模型则依赖于带有锚点的两阶段检测器。YOLOv2采用了锚点,从而提高了边界盒的预测精度。这种趋势持续了五年,直到YOLOX引入了一个无锚的方法,取得了最先进的结果。从那时起,随后的YOLO版本已经放弃了锚的使用;
  • 框架:最初,YOLO是使用Darknet框架开发的,后续版本也是如此。然而,当Ultralytics将YOLOv3 移植到PyTorch时,其余的YOLO版本都是使用PyTorch开发的,导致了增强功能的激增。另一个利用的深度学习语言是PaddlePaddle,一个最初由百度开发的开源框架;
  • 骨干Backbone:YOLO模型的骨干架构随着时间的推移发生了重大变化。从由简单的卷积层和最大集合层组成的Darknet架构开始,后来的模型在YOLOv4中加入了跨阶段部分连接(CSP),在YOLOv6和YOLOv7中加入了重新参数化,并在DAMO-YOLO中加入了神经架构搜索;
  • 性能:虽然YOLO模型的性能随着时间的推移有所提高,但值得注意的是,它们往往优先考虑平衡速度和准确性,而不是只关注准确性。这种权衡是YOLO框架的一个重要方面,允许在各种应用中进行实时物体检测。

18.1 在速度和准确性之间进行权衡

YOLO系列的物体检测模型一直专注于平衡速度和精度,旨在提供实时性能而不牺牲检测结果的质量。随着YOLO框架在各种迭代中的发展,这种权衡一直是一个反复出现的主题,每个版本都试图以不同的方式优化这些相互竞争的目标。在最初的YOLO模型中,主要重点是实现高速物体检测。该模型利用单一的卷积神经网络(CNN)直接预测输入图像中的物体位置和类别,实现实时处理。然而,这种对速度的强调导致了准确性的妥协,主要是在处理小物体或具有重叠边界盒的物体时。

随后的YOLO版本在保持框架的实时性的同时,引入了完善和增强功能来解决这些限制。例如,YOLOv2( YOLO9000)引入了锚定框和穿透层,以改善物体的定位,从而提高精确度。此外,YOLOv3通过采用多尺度特征提取架构增强了模型的性能,允许在不同尺度上进行更好的物体检测。

随着YOLO框架的发展,速度和准确性之间的权衡变得更加微妙。YOLOv4和YOLOv5等模型引入了创新,如新的网络主干、改进的数据增强技术和优化的训练策略。这些发展导致了准确度的显著提高,但并没有大幅影响模型的实时性能。

从Scaled YOLOv4开始,所有官方的YOLO模型都对速度和精度之间的权衡进行了微调,提供不同的模型比例以适应特定的应用和硬件要求。例如,这些版本通常提供为边缘设备优化的轻量级模型,用精度换取降低的计算复杂性和更快的处理时间。

19 YOLO的未来****

随着YOLO框架的不断发展,我们预计以下趋势和可能性将决定未来的发展:

纳入最新技术。研究人员和开发人员将继续利用深度学习、数据增强和训练技术的最先进方法来完善YOLO架构。这种持续的创新过程可能会提高模型的性能、稳健性和效率。

基准的演变。目前用于评估物体探测模型的基准,即COCO 2017,最终可能会被一个更先进、更具挑战性的基准所取代。这反映了前两个YOLO版本中使用的VOC 2007基准的转变,反映了随着模型越来越复杂和准确,需要更多的基准。

YOLO****模型和应用的激增。随着YOLO框架的发展,我们预计每年发布的YOLO模型的数量会增加,同时应用也会相应地扩大。随着该框架变得更加通用和强大,它可能会被应用于更多不同的领域,从家用电器设备到自动驾驶汽车。

扩展到新的领域。YOLO模型有可能将其能力扩展到物体检测和分割之外,分支到视频中的物体跟踪和三维关键点估计等领域。随着这些模型的发展,它们可能成为解决更广泛的计算机视觉任务的新解决方案的基础。

对不同硬件的适应性。YOLO模型将进一步跨越硬件平台,从物联网设备到高性能计算集群。这种适应性将使YOLO模型能够在各种情况下部署,这取决于应用程序的要求和限制。此外,通过定制模型以适应不同的硬件规格,YOLO可以被更多的用户和行业所接受和使用。

Reference:

《A COMPREHENSIVE REVIEW OF YOLO: FROM YOLOV1 TO YOLOV8 AND BEYOND 》


本文转载自: https://blog.csdn.net/daydayup858/article/details/130018935
版权归原作者 香菜烤面包 所有, 如有侵权,请联系我们删除。

“从YOLOv1到YOLOv8的YOLO系列最新综述【2023年4月】”的评论:

还没有评论