专栏名称: 新机器视觉
最前沿的机器视觉与计算机视觉技术
目录
相关文章推荐
佛山电视台  ·  “1个月后才有床位”!这个“羞于启齿”的病, ... ·  21 小时前  
开平广播电视台  ·  别再只知道汤圆!开平元宵还有这些宝藏美食→ ·  昨天  
广东公共DV现场  ·  冲上热搜!女子整个胃被摘除,清理出10斤…… ·  2 天前  
51好读  ›  专栏  ›  新机器视觉

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

新机器视觉  · 公众号  ·  · 2024-09-25 21:05

正文

摘要

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框架的未来发展方向,涉及可能的进一步研究和发展方向,将塑造实时目标检测系统的持续进步。


图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阈值来评估模型在不同定位准确度水平上的性能。


图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处理后的输出。


非极大值抑制伪代码流程



图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。


图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%。


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



图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。


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



图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倍。


图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倍。


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


7 主干网络、颈部和头部

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

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

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

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


图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。


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



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。


图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个点。


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。


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]启发的隐式知识

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


图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的速度运行。


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上发布。作者使用了







请到「今天看啥」查看全文