YOLO系列算法综述,两万余字讲述哪些你不知道的故事!

作者 | 笔名二十七画生  编辑 | 汽车人

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【目标检测】技术交流群

本文只做学术分享,如有侵权,联系删文

摘要

YOLO已经成为机器人、无人驾驶汽车和视频监控应用中的中心实时目标检测系统。我们对YOLO的演变进行了全面分析,从原始的YOLO到YOLOv8、YOLO-NAS和带有Transformers的YOLO,检查了每个迭代中的创新和贡献。我们首先描述了标准指标和后处理方法;然后,我们讨论了每个模型的网络架构和训练技巧的主要变化。最后,我们总结了YOLO发展的基本经验教训,并对其未来提出了展望,突出了增强实时目标检测系统的潜在研究方向。

关键词:YOLO · 目标检测 · 深度学习 · 计算机视觉

1.引言

实时目标检测已经成为许多应用中的关键组成部分,涵盖了诸如自动驾驶车辆、机器人、视频监控和增强现实等多个领域。在各种目标检测算法中,YOLO(You Only Look Once)框架以其卓越的速度和准确性平衡而脱颖而出,实现了对图像中物体的快速可靠识别。自诞生以来,YOLO系列已经经过多次迭代,每一次都在前一版本的基础上解决了局限性并提升了性能(见图1)。本文旨在全面回顾YOLO框架的发展,从最初的YOLOv1到最新的YOLOv8,阐明每个版本之间的关键创新、差异和改进。

文章首先探讨了原始YOLO模型的基本概念和架构,为随后YOLO家族的进一步发展奠定了基础。随后,我们深入研究了每个版本引入的改进和增强,从YOLOv2到YOLOv8不等。这些改进涵盖了诸如网络设计、损失函数修改、锚框适应和输入分辨率缩放等各个方面。通过审视这些发展,我们旨在提供对YOLO框架演变及其对目标检测的影响的全面理解。

除了讨论每个YOLO版本的具体进展外,本文强调了在框架发展过程中出现的速度和准确性之间的权衡。这突显了在选择最合适的YOLO模型时考虑特定应用背景和要求的重要性。最后,我们展望了YOLO框架的未来发展方向,涉及可能的进一步研究和发展方向,将塑造实时目标检测系统的持续进步。

3457ada9cb597fd9b5dbaa44304b65d6.png

图1:YOLO版本的时间线。

2 YOLO在多个领域的应用

YOLO的实时目标检测能力在自动驾驶车辆系统中具有无法估量的价值,能够快速识别和跟踪各种对象,如车辆、行人[1, 2]、自行车以及其他障碍物[3, 4, 5, 6]。这些能力已经在许多领域得到应用,包括在视频序列中进行动作识别[7],用于监视[8]、体育分析[9]和人机交互[10]。在农业领域,YOLO模型已经被用于检测和分类作物[11, 12]、害虫和疾病[13],协助精准农业技术和自动化农业流程。它们还被用于生物识别、安全和人脸识别系统中的人脸检测任务[14, 15]。在医学领域,YOLO已经用于癌症检测[16, 17]、皮肤分割[18]和药丸识别[19],提高了诊断准确性和治疗效率。在遥感领域,它已经被用于卫星和航空图像中的目标检测和分类,有助于土地利用映射、城市规划和环境监测[20, 21, 22, 23]。安全系统已经整合了YOLO模型,用于实时监测和分析视频源,实现对可疑活动[24]、社交距离和口罩检测[25]的快速检测。这些模型还被应用于表面检查,以检测缺陷和异常,提高制造和生产过程中的质量控制[26, 27, 28]。在交通应用中,YOLO模型已被用于识别车牌[29]和交通标志识别[30]等任务,为智能交通系统和交通管理解决方案的发展做出贡献。它们已经被用于野生动物检测和监测,以识别濒危物种,促进生物多样性保护和生态系统管理[31]。最后,YOLO已广泛应用于机器人应用[32, 33]和来自无人机的目标检测[34, 35]。

3 目标检测评估指标和非极大值抑制(NMS)

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

在YOLOv1和YOLOv2中,用于训练和基准测试的数据集是PASCAL VOC 2007和VOC 2012 [36]。然而,从YOLOv3开始,使用的数据集是Microsoft COCO(Common Objects in Context)[37]。对于这些数据集,AP的计算方式有所不同。接下来的部分将讨论AP背后的原理,并解释它是如何计算的。

3.1 AP的工作原理

AP指标基于精确度-召回率度量,处理多个目标类别,并使用交并比(Intersection over Union,IoU)定义正预测。

精确度和召回率:精确度衡量模型正预测的准确性,而召回率衡量模型正确识别的实际正例的比例。通常存在精确度和召回率之间的权衡;例如,增加检测到的对象数量(更高的召回率)可能导致更多的假阳性(较低的精确度)。为了考虑这种权衡,AP指标包含精确度-召回率曲线,该曲线绘制了不同置信度阈值下的精确度对召回率的情况。通过考虑精确度-召回率曲线下的面积,该指标提供了对精确度和召回率的平衡评估。

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

交并比:目标检测旨在通过预测边界框准确定位图像中的对象。AP指标结合了交并比(IoU)度量来评估预测边界框的质量。IoU是预测边界框与地面实况边界框的交集面积与并集面积之比(见图2)。它衡量了地面实况与预测边界框之间的重叠程度。COCO基准使用多个IoU阈值来评估模型在不同定位准确度水平上的性能。

1dcdd1de2369cfdee3b6da40793e7dc4.png

图2:交并比(IoU)。a)通过将两个框的交集除以框的并集来计算IoU;b)展示了不同框位置的三个不同IoU值的示例。

3.2 计算AP

在VOC和COCO数据集中,AP的计算方法有所不同。在本节中,我们描述了如何在每个数据集上计算AP。

VOC数据集

该数据集包括20个目标类别。为了在VOC中计算AP,我们按照以下步骤进行:

  1. 对于每个类别,通过改变模型预测的置信度阈值,计算精确度-召回率曲线。

  2. 使用插值的11点采样计算每个类别的平均精度(AP)。

  3. 通过取所有20个类别的AP的平均值来计算最终的平均精度(AP)。

Microsoft COCO数据集

该数据集包括80个目标类别,并使用了一种更复杂的方法来计算AP。与使用11点插值不同,它使用了101点插值,即在0到1的范围内以0.01的增量计算101个召回率阈值的精确度。此外,AP是通过在多个IoU值上取平均值而不仅仅是一个来获得的,除了一个称为AP50的常见AP指标,它是对IoU阈值为0.5的单一AP。在COCO中计算AP的步骤如下:

  1. 对于每个类别,通过改变模型预测的置信度阈值,计算精确度-召回率曲线。

  2. 使用101个召回率阈值计算每个类别的平均精度(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)

非最大值抑制(NMS)是目标检测算法中使用的一种后处理技术,用于减少重叠边界框的数量并提高整体检测质量。目标检测算法通常会围绕同一对象生成多个具有不同置信度分数的边界框。NMS会过滤掉多余和无关的边界框,仅保留最准确的那些。算法1描述了该过程。图3显示了一个包含多个重叠边界框的目标检测模型的典型输出以及经过NMS处理后的输出。

aba31fed459f90984c9abdaf91fbe99e.png

非极大值抑制伪代码流程

57a7b4ae2813856eb667499945613958.png

图3:非最大值抑制(NMS)。a)显示了包含多个重叠框的目标检测模型的典型输出。b)显示了经过NMS处理后的输出。

4 YOLO: You Only Look Once

YOLO由Joseph Redmon等人于CVPR 2016年发表[38]。它首次提出了一种实时端到端的目标检测方法。YOLO的名称代表"You Only Look Once",指的是它能够通过网络的一次传递完成检测任务,而不像先前的方法,它们要么使用滑动窗口后跟随分类器,需要在每个图像上运行数百或数千次,要么使用更先进的方法,将任务分为两个步骤,其中第一步检测具有对象的可能区域或区域提议,第二步在提议上运行分类器。此外,YOLO使用更直接的输出,仅基于回归来预测检测输出,而不像Fast R-CNN [39]那样使用两个单独的输出,一个用于概率的分类,另一个用于边界框坐标的回归。

4.1 YOLOv1的工作原理

YOLOv1通过同时检测所有边界框来统一目标检测步骤。为了实现这一点,YOLO将输入图像划分为S × S的网格,并为每个网格元素预测B个相同类别的边界框,以及C个不同类别的置信度。每个边界框预测包括五个值:P c、bx、by、bh、bw,其中P c是盒子的置信度分数,反映了模型对盒子包含对象的信心以及盒子的准确性。bx和by坐标是相对于网格单元的盒子中心,bh和bw是相对于完整图像的盒子的高度和宽度。YOLO的输出是一个S × S × (B × 5 + C)的张量,可选择在之后进行非极大值抑制(NMS)以移除重复检测。

在原始YOLO论文中,作者使用了包含20个类别(C = 20)的PASCAL VOC数据集[36],一个7 × 7的网格(S = 7),每个网格元素最多有2个类别(B = 2),从而得到了一个7 × 7 × 30的输出预测。

图4显示了一个考虑了三乘三的网格、三个类别和每个网格一个类别的简化输出向量,共有八个值。在这种简化情况下,YOLO的输出将是3 × 3 × 8。

2b7d6fb7b7d52dd5eda462eb728f8ec8.png

图4:YOLO输出预测。该图描绘了一个简化的YOLO模型,使用三乘三的网格、三个类别,并在每个网格元素上进行单一类别的预测,以生成一个包含八个值的向量。

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

4.2 YOLOv1架构

YOLOv1架构包括24个卷积层,后面跟着两个全连接层,用于预测边界框的坐标和概率。所有层都使用了leaky RELU[40],除了最后一层使用线性激活函数。受到GoogLeNet [41]和Network in Network [42]的启发,YOLO使用1 × 1卷积层来减少特征图的数量,并保持参数数量相对较低。表1描述了YOLOv1架构中的激活层。作者还引入了一个轻量级模型称为Fast YOLO,由九个卷积层组成。

4.3 YOLOv1 训练

作者在分辨率为224 × 224的ImageNet数据集[43]上对YOLO的前20层进行了预训练。然后,他们添加了最后四层,使用随机初始化的权重,并在448 × 448的分辨率下,使用PASCAL VOC 2007和VOC 2012数据集[36]进行了模型的微调,以增加更详细的信息,以进行更准确的目标检测。

对于数据增强,作者使用了随机缩放和平移,最多不超过输入图像大小的20%,以及在HSV颜色空间中随机曝光和饱和度,上限因子为1.5。

YOLOv1使用了一个由多个平方误差和组成的损失函数,如图5所示。在损失函数中,λcoord = 5 是一个尺度因子,赋予边界框预测更重要的权重,λnoobj = 0.5 是一个减小不包含对象的框重要性的尺度因子。

损失的前两项代表了定位损失;它计算了预测边界框位置(x,y)和大小(w,h)的误差。请注意,这些误差仅在包含对象的框中计算(由1 obj ij 表示),仅在该网格单元中存在对象时才对其进行惩罚。第三和第四项损失表示置信度损失;第三项度量了在检测到框中的对象时的置信度误差(由1 obj ij 表示),第四项度量了在框中未检测到对象时的置信度误差(由1 noobj ij 表示)。由于大多数框是空的,这个损失被λnoobj项减小权重。最后的损失成分是分类损失,它仅在单元格中出现对象(1 obj i)时测量每个类别的类别条件概率的平方误差。

4.4 YOLOv1 的优势和局限性

YOLO的简单架构,以及其新颖的全图一次回归使其比现有的目标检测器快得多,实现了实时性能。然而,虽然YOLO比任何目标检测器都要快,但与Fast R-CNN [39]等先进方法相比,其定位误差较大。这种局限性有三个主要原因:

  1. 它最多只能在网格单元中检测两个相同类别的对象,限制了其预测附近对象的能力。

  2. 它难以预测在训练数据中未见过的纵横比的对象。

  3. 由于下采样层,它从粗糙的对象特征中学习。

5 YOLOv2: 更好、更快、更强

YOLOv2由Joseph Redmon和Ali Farhadi于CVPR 2017年发表[44]。它在原始YOLO的基础上进行了多项改进,以使其更好、保持相同的速度,并且更强大——能够检测9000个类别!—— 改进如下:

  1. 所有卷积层使用批归一化,提高了收敛性,并充当正则化器以减少过拟合。

  2. 高分辨率分类器。与YOLOv1一样,他们使用ImageNet在224 × 224上预训练了模型。然而,这一次,他们在ImageNet上使用了448 × 448的分辨率对模型进行了十个周期的微调,提高了网络对更高分辨率输入的性能。

  3. 完全卷积。他们移除了密集层,使用了完全卷积的架构。

  4. 使用锚框预测边界框。他们使用一组预定义形状的先验框或锚框,用于匹配对象的原型形状,如图6所示。为每个网格单元定义了多个锚框,系统为每个锚框预测坐标和类别。网络输出的大小与每个网格单元中的锚框数量成比例。

  5. 尺寸聚类。选择好的先验框有助于网络学习预测更准确的边界框。作者在训练边界框上运行了k均值聚类,以找到良好的先验。他们选择了五个提供在召回和模型复杂性之间取得良好平衡的先验框。

  6. 直接位置预测。与预测偏移的其他方法不同[45],YOLOv2遵循相同的哲学,并相对于网格单元预测位置坐标。网络为每个单元格预测五个边界框,每个边界框有五个值tx、ty、tw、th和to,其中to等同于YOLOv1中的P c,最终的边界框坐标如图7所示。

  7. 更细粒度的特征。与YOLOv1相比,YOLOv2去掉了一个池化层,以获得416 × 416输入图像的13 × 13的输出特征图或网格。YOLOv2还使用了一个穿越层,将26 × 26 × 512的特征图重新组织,通过将相邻特征堆叠到不同的通道中,而不是通过空间下采样丢失它们。这生成了13 × 13 × 2048的特征图,与较低分辨率的13 × 13 × 1024的地图在通道维度上连接,以获得13 × 13 × 3072的特征图。有关架构详细信息,请参见表2。

  8. 多尺度训练。由于YOLOv2不使用全连接层,输入可以是不同的大小。为了使YOLOv2对不同的输入尺寸具有鲁棒性,作者随机训练模型,每十个批次更改一次输入大小——从320 × 320到608 × 608。

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

7ab812f6e8ad5c5ed491582b5dc2115c.png

表1:YOLO架构。该架构包括24个卷积层,结合了3 × 3的卷积和1 × 1的卷积进行通道缩减。输出是一个全连接层,生成一个7 × 7的网格,每个网格单元生成30个值,以容纳十个边界框坐标(2个框)和20个类别。

323411c769902a9223931c4f3fe10dd9.png

图5:YOLO成本函数:包括用于边界框坐标的定位损失,用于对象存在或不存在的置信度损失,以及用于类别预测准确性的分类损失。

5.1 YOLOv2 架构

YOLOv2使用的骨干架构被称为Darknet-19,包含19个卷积层和五个最大池化层。与YOLOv1的架构类似,它受到了Network in Network [42]的启发,使用1 × 1的卷积在3 × 3之间以减少参数数量。此外,如上所述,他们使用批归一化来正则化和帮助收敛。表2显示了完整的Darknet-19骨干网络以及目标检测头部。YOLOv2预测五个边界框,每个边界框有五个值,并在使用PASCAL VOC数据集时有20个类别。目标分类头部使用一个带有1000个过滤器的单个卷积层替换了最后四个卷积层,然后是一个全局平均池化层和一个Softmax。

1d4cb8fa3f0d59634f60ff1da84b10b9.png

图6:锚框。YOLOv2为每个网格单元定义了多个锚框。

cadfd80969f3aaadf63c6522e6ee18d3.png

图7:边界框预测。通过通过sigmoid函数传递的预测的tx、ty值获得框的中心坐标,并通过网格单元的位置cx、cy进行偏移。最终框的宽度和高度使用由YOLOv2预测的tw和th,分别通过先前宽度pw和高度ph缩放得到,其中tw和th由YOLOv2预测。

5.2 YOLO9000 是更强大的 YOLOv2

作者在同一篇论文中介绍了一种训练联合分类和检测的方法。它使用了来自COCO [37]的检测标记数据来学习边界框坐标,并使用ImageNet的分类数据来增加它可以检测的类别数量。在训练期间,他们合并了两个数据集,这样当使用检测训练图像时,它会反向传播检测网络,当使用分类训练图像时,它会反向传播架构的分类部分。其结果是一个能够检测超过9000个类别的YOLO模型,因此被命名为YOLO9000。

6 YOLOv3

YOLOv3 [46] 由 Joseph Redmon 和 Ali Farhadi 于2018年在 ArXiv 上发表。它包含了重大的变化和更大的架构,以与最先进的技术保持同步,同时保持实时性能。以下是与 YOLOv2 相比的变化。

  1. 边界框预测。与 YOLOv2 一样,网络为每个边界框预测四个坐标 tx、ty、tw 和 th;然而,这一次 YOLOv3 使用逻辑回归为每个边界框预测一个物体性分数。该分数对于与地面实况有最高重叠的锚框为1,对于其余锚框为0。与 Faster R-CNN [45] 不同,YOLOv3 仅为每个地面实况对象分配一个锚框。此外,如果没有锚框分配给对象,则只会产生分类损失,而不是定位损失或置信度损失。

  2. 类别预测。不使用 softmax 进行分类,而是使用二元交叉熵来训练独立的逻辑分类器,并将问题形式化为多标签分类。这种变化允许为同一框分配多个标签,这在一些具有重叠标签的复杂数据集 [47] 上可能会发生。例如,同一个对象可以是“Person”和“Man”。

  3. 新的骨干网络。YOLOv3具有由53个卷积层组成的更大的特征提取器,带有残差连接。第6.1节详细描述了架构。

  4. 空间金字塔池化(SPP)。虽然论文中没有提到,作者还向骨干网络添加了一个修改过的 SPP 块 [48],它将多个最大池化输出连接在一起,而没有下采样(步幅=1),每个都有不同的核大小 k × k,其中 k = 1, 5, 9, 13,允许更大的感受野。这个版本被称为 YOLOv3-spp,并且是性能最好的版本,将 AP50 提高了2.7%。

  5. 多尺度预测。类似于特征金字塔网络 [49],YOLOv3 在三个不同的尺度上预测三个框。第6.2节详细描述了多尺度预测机制。

  6. 边界框先验。与 YOLOv2 一样,作者还使用 k-means 确定锚框的边界框先验。不同之处在于,在 YOLOv2 中,他们每个单元格使用了总共五个先验框,而在 YOLOv3 中,他们为三个不同尺度使用了三个先验框。

6.1 YOLOv3 架构

在 YOLOv3 中呈现的骨干架构被称为 Darknet-53。它用步幅卷积替换了所有最大池化层,并添加了残差连接。总共包含了53个卷积层。图8显示了架构的详细信息。Darknet-53 骨干网络获得的 Top-1 和 Top-5 准确性与 ResNet-152 相当,但速度几乎快2倍。

7a55b89692017f3b814fa83a1bae8229.png

图8:YOLOv3 Darknet-53 骨干网络。YOLOv3的架构由53个卷积层组成,每个层都有批标准化和Leaky ReLU激活。此外,残差连接将整个网络的1×1卷积的输入与3×3卷积的输出连接在一起。此处显示的架构仅包括骨干网络;它不包括由多尺度预测组成的检测头。

6.2 YOLOv3 多尺度预测

除了更大的架构之外,YOLOv3 的一个重要特征是多尺度预测,即在多个网格大小上进行预测。这有助于获得更精细的详细框,并显著改进了对小物体的预测,这是先前版本的 YOLO 的主要弱点之一。图9中显示的多尺度检测架构的工作原理如下:第一个标记为 y1 的输出等同于 YOLOv2 的输出,其中 13×13 网格定义了输出。第二个输出 y2 由 Darknet-53 的 (Res × 4) 输出和 (Res × 8) 输出拼接而成。由于特征图的大小不同,即 13×13 和 26×26,因此在拼接之前进行了上采样操作。最后,使用上采样操作,第三个输出 y3 将 26×26 特征图与 52×52 特征图拼接在一起。对于包含 80 个类别的 COCO 数据集,每个尺度提供一个形状为 N×N×[3×(4+1+80)] 的输出张量,其中 N×N 是特征图(或网格单元)的大小,3 表示每个单元格的框,4+1 包括四个坐标和目标性分数。6.3 YOLOv3 结果 当 YOLOv3 发布时,目标检测的基准已从 PASCAL VOC 转移到 Microsoft COCO [37]。因此,从这里开始,所有的 YOLO 都在 MS COCO 数据集中进行评估。YOLOv3-spp 在 20 FPS 下实现了36.2% 的平均精度 AP 和 60.6% 的 AP50,达到了当时的最新水平,并且速度提升了2倍。

a8e388d5f8f82c725541c0f86b17f08b.png

图9:YOLOv3 多尺度检测架构。Darknet-53 主干的输出分为三个不同的输出,分别标记为 y1、y2 和 y3,每个输出具有更高的分辨率。最终的预测框使用非极大值抑制进行过滤。CBL块包含一个卷积层,具有批归一化和leaky RELU。Res 块包含一个 CBL,然后是两个带有残差连接的 CBL 结构,如图8所示。

7 主干网络、颈部和头部

此时,目标检测器的架构开始分为三个部分:主干网络、颈部和头部。图10展示了一个高级主干网络、颈部和头部的示意图。

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

颈部是将主干网络连接到头部的中间组件。它汇聚和细化主干网络提取的特征,通常侧重于增强不同尺度上的空间和语义信息。颈部可能包括额外的卷积层、特征金字塔网络(FPN)[49]或其他机制,以改善特征的表示。

头部是目标检测器的最终组件;它负责基于主干网络和颈部提供的特征进行预测。它通常由一个或多个任务特定的子网络组成,执行分类、定位,以及最近开始流行的实例分割和姿态估计。头部处理颈部提供的特征,为每个对象候选生成预测。最后,通过后处理步骤(例如非极大值抑制,NMS),过滤掉重叠的预测,保留仅具有最高置信度的检测结果。在接下来的YOLO模型中,我们将使用主干网络、颈部和头部来描述这些架构。

a9492072447576bd525bcd462243b13b.png

图10:现代目标检测器的架构可描述为主干网络、颈部和头部。主干网络通常是一个卷积神经网络(CNN),在不同尺度上从图像中提取关键特征。颈部对这些特征进行细化,增强空间和语义信息。最后,头部使用这些经过细化的特征进行目标检测预测。

8 YOLOv4

两年过去了,YOLO并没有推出新版本。直到2020年4月,Alexey Bochkovskiy、Chien-Yao Wang和Hong-Yuan Mark Liao在ArXiv上发布了YOLOv4的论文[50]。一开始,由不同的作者提出YOLO的新“官方”版本感到有些奇怪,然而,YOLOv4保持了相同的YOLO理念——实时、开源、单次检测和darknet框架——而且改进是如此令人满意,以至于社区迅速接受这个版本作为官方的YOLOv4。

YOLOv4试图通过尝试许多变化(被归类为“免费午餐”和“特殊午餐”)来找到最佳平衡。“免费午餐”是指仅改变训练策略并增加训练成本而不增加推理时间的方法,其中最常见的是数据增强。另一方面,“特殊午餐”是指略微增加推理成本但显著提高准确性的方法。这些方法的例子包括扩大感受野[48, 51, 52]、组合特征[53, 49, 54, 55]和后处理[56, 40, 57, 58]等。

我们总结YOLOv4的主要变化如下:

  • 增强的架构与“特殊午餐”(BoS)集成。作者尝试了多种主干网络的架构,如ResNeXt50 [59]、EfficientNet-B3 [60]和Darknet-53。性能最佳的架构是对Darknet-53进行了修改,添加了跨阶段部分连接(CSPNet)[61]和Mish激活函数[57]作为主干网络(见图11)。对于颈部,他们使用了YOLOv3-spp中修改的空间金字塔池化(SPP)[48]和多尺度预测,但使用了修改后的路径聚合网络(PANet)[62]而不是FPN,以及修改后的空间注意模块(SAM)[63]。最后,对于检测头,他们像YOLOv3一样使用锚点。因此,该模型被称为CSPDarknet53-PANet-SPP。CSP部分连接(CSP)的添加有助于降低模型的计算量,同时保持相同的准确性。SPP块,如YOLOv3-spp中的块,可以增加感受野而不影响推理速度。修改后的PANet将特征连接而不是像原始PANet论文中那样相加。

  • 集成“免费午餐”以进行先进的训练方法。除了常规的增强手法,如随机亮度、对比度、缩放、裁剪、翻转和旋转外,作者还实施了马赛克增强,将四张图像合并成一张图像,允许检测对象超出其通常的上下文,同时减少了对大型小批量大小进行批标准化的需求。为了正则化,他们使用了DropBlock [64],它作为对卷积神经网络的Dropout [65]的替代品,以及类标签平滑[66, 67]。对于检测器,他们添加了CIoU损失[68]和交叉小批量标准化(CmBN),以从整个批次而不是从单个小批次中收集统计信息,正如常规批次标准化[69]那样。

  • 自对抗训练(SAT)。为了使模型更加鲁棒,对输入图像执行对抗性攻击,创建一种假象,即地面实况对象不在图像中,但保留原始标签以检测正确的对象。

  • 用遗传算法进行超参数优化。为了找到用于训练的最佳超参数,他们在前10%的周期内使用遗传算法,并使用余弦退火调度器[70]在训练过程中改变学习速率。它开始缓慢降低学习率,然后在训练过程中间迅速降低,最后轻微下降。

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

185194923712b5979d9513d90c7a8aaf.png

Figure 11: YOLOv4目标检测架构。图中的模块包括CMB: 卷积 + 批量归一化 + Mish激活,CBL: 卷积 + 批量归一化 + Leaky ReLU,UP: 上采样,SPP: 空间金字塔池化,以及PANet: 路径聚合网络。图表灵感来自[71]。

86d0cc35758c9e11f734f39539080e95.png

Table 3: YOLOv4最终选择的免费增值方法(BoF)和特殊增值方法(BoS)。BoF是在没有推理成本但训练时间更长的情况下提高性能的方法。另一方面,BoS是在轻微增加推理成本的情况下显着提高准确性的方法。

9.YOLOv5

YOLOv5 [72]于2020年在YOLOv4之后的几个月由Ultralytics的创始人兼首席执行官Glen Jocher发布。它采用了YOLOv4部分描述的许多改进,但是使用了PyTorch而不是Darknet进行开发。YOLOv5集成了一种名为AutoAnchor的Ultralytics算法。这个预训练工具检查并调整锚框,如果它们不适用于数据集和训练设置(如图像大小),就会进行调整。它首先对数据集标签应用k均值函数,以生成遗传演算法(GE)的初始条件。然后,GE算法在默认情况下通过1000代演变这些锚点,使用CIoU损失[68]和最佳可能召回率作为其适应性函数。图12显示了YOLOv5的详细架构。

9.1 YOLOv5架构

骨干网络是修改后的CSPDarknet53,以Stem开头,即一个带有大窗口大小的步幅卷积层,以减少内存和计算成本;接着是从输入图像中提取相关特征的卷积层。SPPF(空间金字塔池化快速)层和随后的卷积层处理不同尺度上的特征,而上采样层增加特征图的分辨率。SPPF层的目标是通过将不同尺度的特征汇总到固定大小的特征图中,加速网络的计算。每个卷积后面都跟有批归一化(BN)和SiLU激活[73]。颈部使用SPPF和修改后的CSP-PAN,而头部类似于YOLOv3。

YOLOv5使用多种增强技术,如Mosaic、copy paste [74]、随机仿射、MixUp [75]、HSV增强、随机水平翻转,以及来自albumentations包[76]的其他增强技术。它还改进了对网格的敏感性,使其更稳定以避免梯度失控的情况。

YOLOv5提供了五个缩放版本:YOLOv5n(nano)、YOLOv5s(small)、YOLOv5m(medium)、YOLOv5l(large)和YOLOv5x(extra large),其中卷积模块的宽度和深度根据特定应用和硬件要求进行调整。例如,YOLOv5n和YOLOv5s是面向低资源设备的轻量级模型,而YOLOv5x则针对高性能进行了优化,尽管牺牲了速度。截至撰写本文时,YOLOv5的发布版本是v7.0,包括能够进行分类和实例分割的YOLOv5版本。

YOLOv5是开源的,并由Ultralytics积极维护,拥有超过250名贡献者,定期推出新的改进。YOLOv5易于使用、训练和部署。Ultralytics为iOS和Android提供了一个移动版本,以及许多用于标注、训练和部署的集成。

在MS COCO数据集test-dev 2017上评估,YOLOv5x在640像素的图像大小下实现了43.5%的AP和65.7%的AP50,速度超过50 FPS,使用NVIDIA V100。使用批大小为32,它可以在NVIDIA V100上实现200 FPS的速度。使用更大的输入大小(1536像素)和测试时间增强(TTA),YOLOv5实现了55.8%的AP。

f741ab4c2d087b47e9e959df7b0b7f23.png

图12: YOLOv5架构。该架构使用修改过的CSPDarknet53骨干网络,,其后是用于提取图像特征的卷积层。一个空间金字塔池化快速(SPPF)层通过将特征汇集到一个固定大小的地图中来加速计算。每个卷积层后面都有批量归一化和SiLU激活。网络的“颈”部分使用了SPPF和修改过的CSP-PAN,而头部类似于YOLOv3。

10.Scaled-YOLOv4

在YOLOv4发布一年后,同一作者在CVPR 2021中提出了Scaled-YOLOv4 [79]。与YOLOv4不同,Scaled YOLOv4是使用PyTorch而不是Darknet开发的。主要的创新点是引入了缩放技术,包括放大和缩小。放大意味着生成一个在减慢速度的代价下提高准确性的模型;另一方面,缩小则意味着生成一个在牺牲准确性的情况下提高速度的模型。此外,缩小的模型需要更少的计算资源,可以在嵌入式系统上运行。缩小的架构被称为YOLOv4-tiny;它专为低端GPU设计,可以在Jetson TX2上以46 FPS运行,或在RTX2080Ti上以440 FPS运行,在MS COCO上实现了22%的AP。放大的模型架构被称为YOLOv4-large,其中包括三种不同的尺寸P5、P6和P7。这个架构专为云GPU设计,实现了最先进的性能,超越了所有先前的模型[80, 81, 82],在MS COCO上达到了56%的AP。

11 YOLOR

YOLOR [83]于2021年5月在ArXiv上由YOLOv4的同一研究团队发表。YOLOR代表You Only Learn One Representation。在这篇论文中,作者采用了一种不同的方法;他们开发了一种多任务学习方法,旨在通过学习通用表示并使用子网络创建任务特定表示,从而为各种任务(例如分类、检测、姿势估计)创建单个模型。凭借对传统联合学习方法通常导致次优特征生成的深刻理解,YOLOR旨在通过将神经网络的隐式知识编码到多任务应用中来克服这一问题,类似于人类如何利用过去的经验来解决新问题。结果表明,引入神经网络的隐式知识对所有任务都有益。在MS COCO数据集test-dev 2017上评估,YOLOR在NVIDIA V100上以30 FPS实现了55.4%的AP和73.3%的AP50。

12 YOLOX

YOLOX [84]于2021年7月由Megvii Technology在ArXiv上发布。它是使用Pytorch开发的,并以Ultralytics的YOLOV3为起点,具有五个主要变化:无锚点架构、多正样本、解耦头部、先进的标签分配和强大的数据增强。它在2021年取得了最先进的结果,在速度和准确性之间实现了最佳平衡,在Tesla V100上实现了50.1%的AP,68.9%的FPS。以下是关于YOLOX相对于YOLOv3的五个主要变化的描述:

  1. 无锚点。自YOLOv2以来,所有后续的YOLO版本都是基于锚点的检测器。受到无锚点最先进的目标检测器(如CornerNet [85]、CenterNet [86]和FCOS [87])的启发,YOLOX返回到了无锚点架构,简化了训练和解码过程。无锚点架构相对于YOLOv3基线提高了0.9个AP点。

  2. 多正样本。为了补偿没有锚点产生的大量不平衡,作者使用中心采样 [87],其中他们将中心3×3区域分配为正样本。这种方法将AP提高了2.1个点。

  3. 解耦头部。在[88, 89]中,已经表明分类置信度和定位准确性之间可能存在不一致。因此,YOLOX将这两者分离为两个头部(如图13所示),一个用于分类任务,另一个用于回归任务,将AP提高了1.1个点,并加快了模型的收敛速度。

  4. 先进的标签分配。在[90]中,已经表明当多个对象的框重叠时,地面实况标签分配可能存在歧义,并将分配过程表述为最优输运(OT)问题。受到这项工作的启发,YOLOX提出了一个简化版本,称为simOTA。这个变化使AP提高了2.3个点。

  5. 强大的数据增强。YOLOX使用MixUP [75]和Mosaic增强。作者发现在使用了这些增强之后,ImageNet预训练不再有益。强大的数据增强使AP提高了2.4个点。

ca3caf49353f85214c280a9c6f987bd2.png

Figure 13: YOLOv3头部和YOLOX解耦头部的区别。对于FPN的每个级别,它们使用1×1卷积层将特征通道减少到256,然后添加了两个平行分支,每个分支都有两个3×3卷积层,用于类置信度(分类)和定位(回归)任务。IoU分支添加到回归头部。

13 YOLOv6

YOLOv6 [91]于2022年9月由美团点评视觉AI部门在ArXiv上发布。该网络设计包括一个高效的主干,采用RepVGG或CSPStackRep块,一个PAN拓扑颈部,以及一个高效的解耦头部,采用混合通道策略。此外,论文介绍了使用后训练量化和通道级蒸馏的增强量化技术,从而实现更快、更准确的检测器。总体而言,YOLOv6在准确性和速度等指标上表现优于以前的最先进模型,如YOLOv5、YOLOX和PP-YOLOE。图14显示了YOLOv6的详细架构。该模型的主要创新点如下:

  1. 一种基于RepVGG [92]的新主干,称为EfficientRep,比以前的YOLO主干具有更高的并行性。对于颈部,他们使用PAN [62],通过RepBlocks [92]或CSPStackRep [61]块进行增强,对于较大的模型,则采用了YOLOX后的高效解耦头部。

  2. 使用TOOD [94]中引入的任务对齐学习方法进行标签分配。

  3. 新的分类和回归损失。他们使用了分类的VariFocal损失 [95]和SIoU [96]/GIoU [97]回归损失。

  4. 回归和分类任务的自蒸馏策略。

  5. 用于检测的量化方案,使用RepOptimizer [98]和通道级蒸馏 [99],有助于实现更快的检测器。作者提供了八个不同规模的模型,从YOLOv6-N到YOLOv6-L6。在MS COCO数据集test-dev 2017上评估时,最大的模型在NVIDIA Tesla T4上以约29 FPS的速度实现了57.2%的AP。

作者提供了八个不同规模的模型,从YOLOv6-N到YOLOv6-L6。在MS COCO数据集的test-dev 2017上进行评估,最大的模型在NVIDIA Tesla T4上以约29 FPS的速度达到了57.2%的AP。

5b3ddfdfb9cd635fde4465e826518091.png

Figure 14: YOLOv6架构。该架构使用了具有RepVGG块的新骨干。Spatial Pyramid Pooling Fast (SPPF) 和 Conv 模块类似于 YOLOv5。然而,YOLOv6 使用了解耦头部。图表基于 [93]。

14YOLOv7

YOLOv7 [100]于2022年7月在ArXiv上发布,由YOLOv4和YOLOR的同一团队的作者发布。当时,它在5 FPS到160 FPS的速度和准确性范围内超越了所有已知的目标检测器。与YOLOv4一样,它仅使用MS COCO数据集进行训练,没有使用预训练的主干网络。YOLOv7提出了一系列架构变化和一系列bag-of-freebies,提高了准确性,而不影响推断速度,只增加了训练时间。

图15显示了YOLOv7的详细架构。YOLOv7的架构变化包括:

  • 扩展的高效层聚合网络(E-ELAN):ELAN [102]是一种策略,允许深度模型通过控制最短的最长梯度路径更有效地学习和收敛。YOLOv7提出的E-ELAN适用于具有无限堆叠计算块的模型。E-ELAN通过混洗和合并基数来增强网络的学习,而不破坏原始梯度路径。

  • 基于连接的模型的模型缩放:缩放通过调整一些模型属性生成不同大小的模型。YOLOv7的架构是一种基于连接的架构,在该架构中,标准的缩放技术(例如深度缩放)导致过渡层的输入通道和输出通道之间的比率变化,从而减少了模型的硬件使用。YOLOv7提出了一种新的基于连接的模型缩放策略,其中块的深度和宽度以相同的因子进行缩放,以保持模型的最佳结构。

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

  • 计划的重参数化卷积:与YOLOv6一样,YOLOv7的架构也受到了重参数化卷积(RepConv)[92]的启发。然而,他们发现在RepConv中的恒等连接破坏了ResNet [53]中的残差和DenseNet [103]中的级联。因此,他们去掉了恒等连接,并称之为RepConvN。

  • 辅助头部的粗标签分配和主头部的细标签分配:主头部负责最终输出,而辅助头部协助训练。

  • 卷积-bn-激活中的批归一化:这将批归一化的均值和方差整合到推断阶段的卷积层的偏差和权重中。

  • 受YOLOR [83]启发的隐式知识。

  • 指数移动平均作为最终推断模型。

a49af58ae280c6e4007cc1e541867205.png

图15:YOLOv7架构。该架构的变化包括ELAN块,通过洗牌和合并基数组合不同组的特征,以增强模型学习,以及修改后的RepVGG,没有身份连接。图表基于[101]。

14.1 与YOLOv4和YOLOR的比较

在这一部分,我们突出了YOLOv7相对于由同一作者开发的先前YOLO模型的改进。与YOLOv4相比,YOLOv7在减少参数方面取得了75%的降低,计算量减少了36%,同时提高了平均精度(AP)1.5%。与YOLOv4-tiny相比,YOLOv7-tiny成功地减少了39%的参数和49%的计算量,同时保持了相同的AP。最后,与YOLOR相比,YOLOv7在参数和计算量方面分别减少了43%和15%,并略微提高了0.4%的AP。在MS COCO数据集test-dev 2017上评估,YOLOv7-E6在输入尺寸为1280像素时实现了55.9%的AP和73.5%的AP50,速度为每秒50帧,使用的是NVIDIA V100。

15 DAMO-YOLO

DAMO-YOLO [104]于2022年11月由阿里巴巴集团发布于ArXiv。受到当前技术的启发,DAMO-YOLO包括以下特点:

  1. 神经架构搜索(NAS)。他们使用了一种称为MAE-NAS [105]的方法,由阿里巴巴开发,可以自动找到一个有效的架构。

  2. 大型neck。在GiraffeDet [106]、CSPNet [61]和ELAN [102]的启发下,作者设计了一个可以实时工作的neck,称为Efficient-RepGFPN。

  3. 小型head。作者发现大neck和小head可以获得更好的性能,他们只保留了一个用于分类和一个用于回归的线性层。他们将这种方法称为ZeroHead。

  4. AlignedOTA标签分配。动态标签分配方法,如OTA[90]和TOOD[94],由于其相对静态方法的显著改进而变得受欢迎。然而,由于分类和回归之间的不平衡,分类和回归之间的不对齐仍然是一个问题。为了解决这个问题,他们的AlignOTA方法将焦点损失 [81]引入到分类成本中,并使用预测和地面真实框的IoU作为软标签,从而使得可以为每个目标选择对齐的样本,并从整体的角度解决这个问题。

  5. 知识蒸馏。他们提出的策略包括两个阶段:第一阶段老师指导学生,第二阶段学生独立微调。此外,他们在蒸馏方法中引入了两个增强:Align Module,将学生特征调整到与老师相同的分辨率;Channel-wise Dynamic Temperature,将老师和学生的特征标准化,以减小实值差异的影响。作者生成了被命名为DAMO-YOLO-Tiny/Small/Medium的规模化模型,其中最佳模型在NVIDIA V100上以233 FPS的速度达到了50.0%的AP。

16 YOLOv8

YOLOv8 [107]是由Ultralytics在2023年1月发布的,这是开发YOLOv5的公司。YOLOv8提供了五个不同规模的版本:YOLOv8n(nano)、YOLOv8s(small)、YOLOv8m(medium)、YOLOv8l(large)和YOLOv8x(extra large)。YOLOv8支持多个视觉任务,包括目标检测、分割、姿态估计、跟踪和分类。

16.1 YOLOv8架构

图16显示了YOLOv8的详细架构。YOLOv8使用了与YOLOv5相似的骨干网络,对CSPLayer进行了一些修改,现在称为C2f模块。C2f模块(带有两个卷积的跨阶段部分瓶颈)将高级特征与上下文信息相结合,以提高检测准确性。

YOLOv8采用了一种无锚模型,带有独立处理物体性质、分类和回归任务的解耦头。这种设计允许每个分支专注于其任务,提高了模型的整体准确性。在YOLOv8的输出层中,他们使用了Sigmoid函数作为物体性质得分的激活函数,表示边界框包含对象的概率。它使用Softmax函数进行类别概率的表示,表示对象属于每个可能类别的概率。

YOLOv8使用了CIoU [68]和DFL [108]损失函数来计算边界框损失,使用二元交叉熵损失来计算分类损失。这些损失在处理较小的对象时提高了目标检测性能。

YOLOv8还提供了一个名为YOLOv8-Seg的语义分割模型。其骨干网络是CSPDarknet53特征提取器,后面跟着一个C2f模块,而不是传统的YOLO颈部架构。C2f模块后面跟着两个分割头,它们学习为输入图像预测语义分割掩模。YOLOv8的检测头与YOLOv8类似,包括五个检测模块和一个预测层。YOLOv8-Seg模型在各种目标检测和语义分割基准上取得了最先进的结果,同时保持了高速和高效。

YOLOv8可以从命令行界面(CLI)运行,也可以作为一个PIP包安装。此外,它配备了用于标注、训练和部署的多个集成工具。在MS COCO数据集test-dev 2017上评估,YOLOv8x在640像素的图像大小下取得了53.9%的AP(而YOLOv5在相同输入大小下为50.7%),在NVIDIA A100和TensorRT上以280 FPS的速度运行。

4400cd37dfb6ccae3c1a78304792a50a.png

Figure 16: YOLOv8架构。该架构使用了修改过的CSPDarknet53骨干网络。C2f模块取代了YOLOv5中使用的CSPLayer。一个空间金字塔池(SPPF)层通过将特征池化成固定大小的地图来加速计算。每个卷积都有批量归一化和SiLU激活。头部解耦,独立处理物体性质、分类和回归任务。图表基于[109]。

17 PP-YOLO,PP-YOLOv2和PP-YOLOE

PP-YOLO模型一直在与我们描述的YOLO模型并行发展。然而,我们决定将它们分组在一个单独的部分,因为它们始于YOLOv3,并逐渐改进之前的PP-YOLO版本。尽管如此,这些模型对YOLO的演变产生了影响。PP-YOLO [82]类似于YOLOv4和YOLOv5,基于YOLOv3。它于2020年7月由百度公司的研究人员在ArXiv上发布。作者使用了百度深度学习平台PaddlePaddle [110],因此得名PP。与我们从YOLOv4开始看到的趋势一样,PP-YOLO添加了十个现有的技巧来提高检测器的准确性,同时保持速度不变。根据作者的说法,这篇论文并不旨在引入一种新颖的目标检测器,而是展示如何逐步构建一个更好的检测器。PP-YOLO使用的大多数技巧与YOLOv4中使用的不同,而重叠的那些则采用了不同的实现。PP-YOLO相对于YOLOv3的变化包括:

  1. 使用ResNet50-vd骨干网络取代DarkNet-53骨干网络,该架构在最后一个阶段增加了可变形卷积[111],并使用蒸馏的预训练模型,该模型在ImageNet上具有更高的分类准确性。这个架构被称为ResNet5-vd-dcn。

  2. 为了提高训练稳定性,增加了批量大小,从64增加到192,并更新了训练计划和学习率。

  3. 保持训练参数的移动平均值,并在最终训练的值之前使用它们。

  4. DropBlock仅应用于FPN。

  5. 添加了IoU损失,在另一个分支中与用于边界框回归的L1损失一起使用。

  6. 添加了IoU预测分支,用于测量定位准确性,以及IoU感知损失。在推断期间,YOLOv3将分类概率和物体性分数相乘以计算最终检测结果,PP-YOLO还将预测的IoU相乘以考虑定位准确性。

  7. 使用与YOLOv4类似的Grid Sensitive方法,以提高边界框中心预测的准确性。

  8. 使用Matrix NMS [112],可以并行运行,比传统NMS更快。

  9. 对于FPN的1×1卷积以及检测头部的第一卷积层,使用CoordConv [113]。CoordConv允许网络学习平移不变性,从而提高检测的定位性能。

  10. 仅在顶部特征图上使用Spatial Pyramid Pooling,以增加骨干网络的感受野。

17.1 PP-YOLO增强和预处理

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

  1. 混合训练 [75],权重从Beta(α,β)分布中采样,其中α = 1.5,β = 1.5。

  2. 随机颜色失真。

  3. 随机扩展。

  4. 随机裁剪和随机翻转,概率为0.5。

  5. RGB通道z得分标准化,均值为[0.485, 0.456, 0.406],标准差为[0.229, 0.224, 0.225]。

  6. 从[320, 352, 384, 416, 448, 480, 512, 544, 576, 608]均匀绘制的多个图像大小。在MS COCO数据集test-dev 2017上评估,PP-YOLO在NVIDIA V100上以73 FPS达到了45.9%的AP和65.2%的AP50。

17.2 PP-YOLOv2

  1. PP-YOLOv2 [114]于2021年4月在ArXiv上发布,对PP-YOLO进行了四项改进,将性能从45.9%的AP提高到了69 FPS的49.5%的AP。PP-YOLOv2相对于PP-YOLO的变化如下:

  2. 骨干网络从ResNet50更改为ResNet101。

  3. 使用路径聚合网络(PAN)替代了FPN,类似于YOLOv4。

  4. Mish激活函数。与YOLOv4和YOLOv5不同,他们仅在检测头中应用mish激活函数,以保持骨干网络与ReLU不变。

  5. 较大的输入尺寸有助于提高小目标的性能。他们将最大输入尺寸从608扩展到768,将每GPU图像的批量大小从24减少到12。输入尺寸均匀绘制自[320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768]。

  6. 修改的IoU感知分支。他们修改了IoU感知损失的计算,使用软标签格式而不是软权重格式。

17.3 PP-YOLOE

  1. PP-YOLOE [115]于2022年3月在ArXiv上发布,对PP-YOLOv2进行了改进,实现了在NVIDIA V100上78.1 FPS的51.4% AP的性能。图17显示了详细的架构图。PP-YOLOE相对于PP-YOLOv2的主要变化包括:

  2. 无锚。与[87, 86, 85, 84]的工作驱动的时间趋势一致,PP-YOLOE使用无锚架构。

  3. 新的骨干和颈部。受TreeNet [116]的启发,作者修改了骨干和颈部的架构,使用RepResBlocks结合残差和密集连接。

  4. 任务对齐学习(TAL)。YOLOX首次提出了任务不对齐的问题,即分类置信度和位置准确性在所有情况下都不一致。为了减少这个问题,PP-YOLOE实施了TOOD [94]中提出的TAL,其中包括动态标签分配结合任务对齐损失。

  5. 高效的任务对齐头(ET-head)。与YOLOX不同,其中分类和位置头部是解耦的,PP-YOLOE改用基于TOOD的单头,以提高速度和准确性。

  6. 变焦(VFL)和分布焦点损失(DFL)。VFL [95]使用目标得分加权正样本的损失,给予具有高IoU的正样本更高的权重。这在训练期间优先考虑高质量样本。同样,两者都使用IoU感知分类分数(IACS)作为目标,允许联合学习分类和定位质量,实现训练和推断之间的一致性。另一方面,DFL [108]将离散标签的焦点损失扩展到连续标签,从而成功优化了改进的表示,结合了质量估计和类别预测。这允许准确描绘实际数据中的灵活分布,消除了不一致。

与先前的YOLO版本一样,作者通过改变骨干和颈部的宽度和深度生成了多个缩放模型。这些模型被称为PP-YOLOE-s(小型)、PP-YOLOE-m(中型)、PP-YOLOE-l(大型)和PP-YOLOE-x(超大型)。

04b82f44550032bfe58dab194152cbb6.png

图17:PP-YOLOE架构。骨干基于CSPRepResNet,颈部使用路径聚合网络,头部使用ES层形成高效的任务对齐头(ET-head)。基于[117]的图表。

18 YOLO-NAS

YOLO-NAS [118]于2023年5月由Deci公司发布,该公司开发生产级模型和工具,用于构建、优化和部署深度学习模型。YOLO-NAS的设计目的是检测小物体,提高定位精度,并增强每次计算的性能比,使其适用于实时边缘设备应用。此外,其开源架构可供研究使用。YOLO-NAS的创新之处包括以下内容:

  • 称为QSP和QCI的量化感知模块[119],结合了8位量化的重新参数化,以在训练后的量化过程中最小化准确度损失。

  • 使用AutoNAC(Deci专有的NAS技术)进行自动架构设计。

  • 采用混合量化方法,选择性地量化模型的某些部分,以平衡延迟和准确性,而不是标准量化,其中所有层都受到影响。

  • 预训练方案使用自动标记的数据、自我蒸馏和大型数据集。

AutoNAC系统在创建YOLO-NAS方面发挥了重要作用,它具有多功能性,可以适应任何任务、数据的特定情况、进行推断的环境以及性能目标的设置。该技术有助于用户确定提供精度和推断速度的完美结合的最适合结构。该技术考虑了涉及推断过程的数据、硬件和其他元素,如编译器和量化。此外,RepVGG块在NAS过程中被纳入模型架构,以与训练后量化(PTQ)兼容。他们通过变化QSP和QCI块的深度和位置生成了三个架构:YOLO-NASS、YOLO-NASM和YOLO-NASL(分别为小、中、大)。图18显示了YOLO-NASL的模型架构。该模型在Objects365[120]上进行了预训练,该数据集包含两百万张图像和365个类别,然后使用COCO数据集生成伪标签。最后,使用COCO数据集的原始118k训练图像对模型进行训练。

截至本文撰写时,已发布了三个YOLO-NAS模型,分别采用FP32、FP16和INT8精度,在MS COCO上实现了52.2%的AP,使用16位精度。

d299a521fbe273963e45aaccb3856816.png

图18:YOLO-NAS架构。该架构通过名为AutoNAC的神经架构搜索(NAS)系统自动发现,以平衡延迟与吞吐量。他们生成了三个架构,分别称为YOLO-NASS(小型)、YOLO-NASM(中型)和YOLO-NASL(大型),变化了QSP和QCI块的深度和位置。图中展示了YOLO-NASL的架构。

19 YOLO与Transformer

随着Transformer在从语言和音频处理到视觉等大多数深度学习任务中的崛起,将Transformers和YOLO结合自然而然。使用Transformer进行目标检测的最早尝试之一是You Only Look at One Sequence或简称YOLOS [122],它将经过预训练的Vision Transformer(ViT)[123]从图像分类转换为目标检测,实现在MS COCO数据集上的42.0%的AP。对ViT所做的更改包括:1)将用于分类的一个[CLS]令牌替换为用于检测的一百[DET]令牌,2)用类似于“端到端目标检测与Transformers” [124]的二分匹配损失替换ViT中的图像分类损失。

许多研究都将Transformers与专为特定应用定制的YOLO相关架构结合起来。例如,张等人[125]受到Vision Transformers对遮挡、扰动和领域变化的强健性的启发,提出了ViT-YOLO,这是一种混合架构,将CSP-Darknet [50]与主动多头自注意力(MHSA-Darknet)相结合,用于主干,以及双向特征金字塔网络(BiFPN)[80]用于颈部,以及类似于YOLOv3的多尺度检测头。他们的具体用例是用于无人机图像的目标检测。图19显示了ViT-YOLO的详细架构。MSFT-YOLO [126]在主干和检测头中添加了基于Transformer的模块,旨在检测钢表面上的缺陷。NRT-YOLO [127](嵌套残差Transformer)试图解决遥感图像中微小物体的问题。通过添加额外的预测头、特征融合层和残差Transformer模块,NRT-YOLO在DOTA数据集[128]上将YOLOv5l的性能提高了5.4%。在遥感应用中,YOLO-SD [129]试图提高合成孔径雷达(SAR)图像中小船检测的准确性。他们从YOLOX [84]出发,结合多尺度卷积(MSC)以改进不同尺度上的检测,并使用特征Transformer模块来捕获全局特征。作者表明,这些变化提高了YOLO-SD在HRSID数据集[130]上的准确性,相较于YOLOX。另一种将YOLO与检测Transformer(DETR)[124]结合的有趣尝试是DEYO [131],它包括两个阶段:基于YOLOv5的模型,后跟类似于DETR的模型。第一阶段生成高质量的查询和锚点,输入到第二阶段。结果显示,DEYO在COCO检测基准上实现了52.1%的AP,收敛速度更快,性能更好。

b40694f419a1ce35797d44dfc08ca4a9.png

图19:ViT-YOLO架构。主干MHSA-Darknet将多头自注意块(MHSA-Dark块)与跨阶段部分连接块(CSPDark块)相结合。颈部使用BiFPN来聚合来自不同主干级别的特征,头部包括五个多尺度检测头。

d73ccd5f7f8fccc9c38698999eb35d3d.png

表4:YOLO架构总结。YOLO和YOLOv2报告的度量标准基于VOC2007,而其余的报告基于COCO2017。报告的NAS-YOLO模型采用16位精度。

20 讨论

本文对16个YOLO版本进行了审查,从最初的YOLO模型到最新的YOLO-NAS。表4提供了讨论的YOLO版本概览。从这个表格中,我们可以识别出一些关键模式:

• 锚点:最初的YOLO模型相对简单,没有使用锚点,而最先进的目标检测器则依赖于带有锚点的两阶段检测器。YOLOv2引入了锚点,提高了边界框预测的准确性。这一趋势持续了五年,直到YOLOX引入了一种无锚点的方法,取得了最先进的结果。此后,后续的YOLO版本都放弃了使用锚点。

• 框架:最初,YOLO是使用Darknet框架开发的,随后的版本也效仿而来。然而,当Ultralytics将YOLOv3移植到PyTorch时,其余的YOLO版本都是使用PyTorch开发的,导致了增强的潮流。另一个深度学习语言使用的是百度初始开发的开源框架PaddlePaddle。

• 主干网络:YOLO模型的主干网络架构随时间的推移发生了重大变化。从Darknet架构开始,其中包含简单的卷积和最大池化层,后来的模型在YOLOv4中引入了跨阶段局部连接(CSP),在YOLOv6和YOLOv7中引入了重新参数化,以及在DAMO-YOLO和YOLO-NAS中引入了神经架构搜索。

• 性能:虽然YOLO模型的性能随着时间的推移而提高,但值得注意的是,它们通常更注重速度和准确性的平衡,而不仅仅是准确性。这种权衡对于YOLO框架至关重要,使其能够在各种应用中实现实时目标检测。

20.1 速度与准确性之间的权衡

YOLO目标检测模型系列始终专注于平衡速度和准确性,旨在在不牺牲检测结果质量的情况下提供实时性能。随着YOLO框架通过各种迭代的演变,这种权衡一直是一个反复出现的主题,每个版本都试图以不同的方式优化这些竞争性的目标。

在最初的YOLO模型中,主要关注的是实现高速目标检测。该模型使用单个卷积神经网络(CNN)直接从输入图像中预测对象的位置和类别,实现了实时处理。然而,这种对速度的强调导致了准确性的妥协,特别是在处理小对象或具有重叠边界框的对象时。

随后的YOLO版本引入了改进和增强,以解决这些局限性,同时保持框架的实时性能。例如,YOLOv2(YOLO9000)引入了锚框和传递层,以提高对象的定位准确性,从而提高了准确性。此外,YOLOv3通过采用多尺度特征提取架构,实现了更好地跨多个尺度进行目标检测。

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

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

21 YOLO的未来

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

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

基准的演进。用于评估目标检测模型的当前基准,COCO 2017,可能会被更先进和更具挑战性的基准所取代。这类似于从最初两个YOLO版本中使用的VOC 2007基准的过渡,反映了随着模型变得更加复杂和准确,需要更为苛刻的基准。

YOLO模型和应用的激增。随着YOLO框架的进展,我们预计每年发布的YOLO模型数量将增加,并伴随着应用领域的扩大。随着框架变得更加多才多艺和强大,它可能会在更多不同的领域中得到应用,从家用电器设备到自动驾驶汽车。

拓展到新领域。YOLO模型有望在超越目标检测和分割的范围内发展,探索视频中的目标跟踪和三维关键点估计等领域。我们预计YOLO模型将过渡到多模态框架,整合视觉、语言、视频和声音处理。随着这些模型的演进,它们可能成为创新解决方案的基础,服务于更广泛的计算机视觉和多媒体任务。

适应多样化硬件。YOLO模型将进一步覆盖从物联网设备到高性能计算集群的硬件平台。这种适应性将使得在不同上下文中部署YOLO模型成为可能,具体取决于应用的要求和约束。此外,通过调整模型以适应不同的硬件规格,YOLO可以变得更加普及和适用于更多的用户和行业。

参考文献:

[1]Terven J, Cordova-Esparza D. A comprehensive review of YOLO: From YOLOv1 and beyond. arXiv 2023[J]. arXiv preprint arXiv:2304.00501.

① 全网独家视频课程

BEV感知、毫米波雷达视觉融合多传感器标定多传感器融合多模态3D目标检测点云3D目标检测目标跟踪Occupancy、cuda与TensorRT模型部署协同感知语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习

d2ec65979be6ef4c6d7db3ea92b937a5.png 视频官网:www.zdjszx.com

② 国内首个自动驾驶学习社区

近2000人的交流社区,涉及30+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(2D检测、分割、2D/3D车道线、BEV感知、3D目标检测、Occupancy、多传感器融合、多传感器标定、目标跟踪、光流估计)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!

d8f3bceab5ade61418558cb393b39fe3.png

③【自动驾驶之心】技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多模态感知、Occupancy、多传感器融合、transformer、大模型、点云处理、端到端自动驾驶、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向。扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)

817a72f974d254364b3a657c443048e5.jpeg

④【自动驾驶之心】平台矩阵,欢迎联系我们!

376e74076f3ff18a247f3248500802f2.jpeg

YOLO系列算法是目标检测领域中的一系列算法,全称为"You Only Look Once",意为"你只看一次"。该算法的核心思想是将目标检测任务转化为一个回归问题,通过从图像中直接预测边界框和类别信息来实现目标的检测。 YOLO算法的第一个版本(YOLOv1)于2015年提出。它将图像分成SxS个网格,每个网格负责检测一个目标,每个网格预测B个边界框和对应的置信度得分。YOLOv1通过使用卷积神经网络进行特征提取,并将其与全连接层结合,同时利用多尺度特征融合来提高检测性能。 为了改进YOLOv1在小目标和定位精度方面的不足,YOLOv2在2016年推出。YOLOv2使用了Darknet-19作为特征提取网络,并引入了锚框(anchor boxes)的概念,可以更好地处理不同大小和宽高比的目标。此外,YOLOv2还采用了多尺度训练和测试策略,提高了对小目标的检测能力。 YOLOv3在YOLOv2的基础上进一步改进,于2018年发布。YOLOv3引入了FPN、PANet等特征金塔结构,使得网络能够更好地捕捉不同尺度的特征。此外,YOLOv3还采用了更细粒度的特征层级,使用了更多的锚框,进一步提高了检测精度。 基于YOLOv3,YOLOv4于2020年提出,通过引入CSPDarknet-53、SAM等创新结构,进一步提升了检测性能和速度。此外,YOLOv4还引入了许多技术改进,如Mish激活函数、CIoU损失函数等,进一步提高了边界框的准确性和目标的定位精度。 综上所述,YOLO系列算法以其高效的检测速度和良好的性能,在目标检测领域取得了重要的突破。随着不断的改进和创新,YOLO系列算法在实时目标检测、工业检测和无人驾驶等应用中有着广泛的应用前景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值