YOLO的全面综述:从YOLOv1到最新版本

news/2024/7/11 1:53:36 标签: YOLO

文章目录

  • 摘要
  • 1、简介
  • 2、YOLO在不同领域的应用
  • 3、目标检测的度量标准和非最大值抑制(NMS)
    • 3.1. AP如何工作?
    • 3.2. 计算AP
    • 3.3、非极大值抑制(NMS)
  • 4、YOLO: You Only Look Once
    • 4.1、YOLOv1的工作原理
    • 4.2、YOLOv1架构
    • 4.3、YOLOv1训练
    • 4.4、YOLOv1的优点和限制
  • 5、YOLOv2:更好、更快、更强
    • 5.1、YOLOv2体系结构
    • 5.2、YOLO9000是一个更强大的YOLOv2
  • 6、YOLOv3
    • 6.1、YOLOv3架构
    • 6.2、YOLOv3多尺度预测
  • 7、主干、颈部和头部
  • 8、YOLOv4
  • 9、YOLOv5
  • 11、YOLOR
  • 14、YOLOv7
  • 15、DAMO-YOLO
  • 16、YOLOv8
  • 17、PP-YOLO、PP-YOLOv2 和 PP-YOLOE
    • 17.1、PP-YOLO的数据增强和预处理
    • 17.2、PP-YOLOv2
    • 17.3 PP-YOLOE
  • 18、YOLO-NAS
  • 19、使用Transformer的YOLO
  • 20、讨论
    • 20.1、速度与精度之间的权衡
  • 21、YOLO的未来
  • 致谢

摘要

https://arxiv.org/pdf/2304.00501.pdf
YOLO已成为机器人、无人驾驶汽车和视频监控应用的核心实时目标检测系统。我们全面分析了YOLO的演变,研究了从原始YOLOYOLOv8、YOLO-NAS和带有Transformer的YOLO的每次迭代的创新和贡献。我们首先描述了标准指标和后处理;然后,我们讨论了每个模型在网络架构和训练技巧方面的主要变化。最后,我们总结了YOLO开发的重要经验教训,并对其未来提出了看法,强调了增强实时目标检测系统的潜在研究方向。
在这里插入图片描述

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

1、简介

实时目标检测已成为许多应用中的关键组成部分,跨越多个领域,如自动驾驶汽车、机器人、视频监控和增强现实。在各种目标检测算法中,YOLO(你只需看一次)框架因其速度和精度方面卓越的平衡而脱颖而出,能够在图像中快速可靠地识别目标。自其问世以来,YOLO系列已经通过多次迭代发展起来,每个版本都是在前一个版本的基础上进行改进,以解决局限性并提高性能(如图1所示)。本文旨在全面回顾YOLO框架的发展,从最初的YOLOv1到最新的YOLOv8,阐明每个版本之间的关键创新、差异和改进。

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

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

YOLO_17">2、YOLO在不同领域的应用

YOLO的实时目标检测功能在自动驾驶汽车系统中非常有价值,能够快速识别和跟踪各种物体,如车辆、行人、自行车和其他障碍物[1,2]。这些功能已应用于许多领域,包括视频监控[8]、体育分析[9]、人机交互[10]中的动作识别。

YOLO模型已应用于农业,以检测和分类农作物[11,12]、害虫和疾病[13],协助精确农业技术和自动化耕种过程。它们还适用于生物识别、安全和面部识别系统中的面部检测任务[14,15]。

在医学领域,YOLO已用于癌症检测[16,17]、皮肤分割[18]和药片识别[19],从而提高诊断准确性和更有效的治疗过程。在遥感领域,YOLO用于卫星和航空图像中的目标检测和分类,协助土地利用制图、城市规划和环境监测[20,21,22,23]。

安全系统已集成YOLO模型,用于实时监控和分析视频流,快速检测可疑活动[24]。这些模型还应用于表面检测以检测缺陷和异常,提高制造和生产过程中的质量控制[26,27,28]。

在交通应用中,YOLO模型已用于车牌检测[29]和交通标志识别[30],为智能交通系统和交通管理解决方案的发展做出了贡献。它们已应用于野生动物检测和监测,以识别濒危物种,促进生物多样性和生态系统管理[31]。最后,YOLO已广泛应用于机器人应用[32,33]和无人机目标检测[34,35]。

3、目标检测的度量标准和非最大值抑制(NMS)

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

YOLOv1和YOLOv2中,用于训练和基准测试的数据集是PASCAL VOC 2007和VOC 2012[36]。然而,从YOLOv3开始,使用的是Microsoft COCO(上下文中的通用对象)数据集[37]。对于这些数据集,AP的计算方式是不同的。以下部分将讨论AP背后的理由,并解释如何计算它。

3.1. AP如何工作?

AP度量标准基于精度-召回度量标准,处理多个对象类别,并使用交并比(IoU)来定义一个正面的预测。

精度和召回:精度衡量模型正面预测的准确性,而召回衡量模型正确识别的实际正例的比例。精度和召回之间往往存在权衡;例如,增加检测到的对象数量(更高的召回率)可能会导致更多的假阳性(更低的精度)。为了解释这种权衡,AP度量标准通过考虑不同置信阈值的精度-召回曲线,整合了精度和召回。这个度量标准通过考虑精度-召回曲线下的面积,对精度和召回进行平衡评估。

处理多个对象类别:目标检测模型必须识别和定位图像中的多个对象类别。AP度量标准通过分别计算每个类别的平均精度(AP),然后取所有类别的AP的平均值(这就是为什么也称其为平均平均精度),来解决这个问题。这种方法确保了对每个类别分别评估模型的表现,从而为模型的总体表现提供了更全面的评估。

交并比:目标检测旨在通过预测边界框来准确地定位图像中的对象。AP度量标准纳入了交并比(IoU)测量来评估预测边界框的质量。IoU是预测边界框和地面真实边界框的交集区域与并集区域的比值。它衡量了地面真实边界框和预测边界框之间的重叠。COCO基准考虑了多个IoU阈值来评估模型在不同定位精度水平上的表现。
在这里插入图片描述

3.2. 计算AP

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

VOC数据集
这个数据集包含20个对象类别。为了在VOC中计算AP,我们遵循以下步骤:

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

Microsoft COCO数据集
这个数据集包含80个对象类别,并使用更复杂的方法来计算AP。它不是使用11点的插值,而是使用101点的插值,即它以0.01为增量从0到1计算101个召回阈值的精度。此外,除了一个称为AP_{50}的公共AP指标之外,AP是通过取多个IoU值的平均值而不是一个单一的IoU阈值来获得的,其中AP_{50}是在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后的输出。

在这里插入图片描述

我们准备开始描述不同的YOLO模型。
在这里插入图片描述

YOLO_You_Only_Look_Once_75">4、YOLO: You Only Look Once

在2016年的CVPR上,Joseph Redmon等人发表了YOLO [38]。这是第一次提出了一种实时端到端的物体检测方法。YOLO的名字代表“你只需要看一次”,这表明它能够通过单次网络运行来完成检测任务,与以前的方法不同,以前的方法要么使用滑动窗口后跟一个需要进行数百次或数千次运行的分类器,要么使用更先进的方法将任务分为两个步骤,第一步检测可能包含物体的区域或区域提议,第二步对提议进行分类器的运行。此外,YOLO使用更直接的输出,仅通过回归来预测检测输出,而Fast R-CNN使用了两个单独的输出,一个用于分类概率,另一个用于框坐标的回归。

YOLOv1_78">4.1、YOLOv1的工作原理

YOLOv1通过同时检测所有边界框来统一目标检测步骤。为了实现这一点,YOLO将输入图像划分为S×S网格,并预测每个网格元素属于C个不同类别的B个边界框。每个边界框预测包括五个值:Pc、bx、by、bh、bw,其中Pc是边界框的置信分数,反映了模型对边界框中包含物体以及边界框准确性的自信程度。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显示了一个简化的输出向量,其中考虑了一个3×3的网格、三个类别以及每个网格的一个单一类别,共八个值。在这种情况下,YOLO的输出将是3×3×8。

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

YOLOv1_89">4.2、YOLOv1架构

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

YOLOv1_94">4.3、YOLOv1训练

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

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

YOLOv1使用多个平方和误差的和作为损失函数,如图5所示。在损失函数中, λ c o o r d λ_{coord} λcoord=5是一个比例因子,它给边界框预测更多的权重,而 λ n o o b j = 0.5 λ_{noobj}=0.5 λnoobj=0.5是一个比例因子,它降低了不包含物体的边界框的重要性。
在这里插入图片描述

这段文本描述了一种目标检测算法——YOLOv1(You Only Look Once)的损失函数。这个损失函数由五个部分组成:两个定位损失(localization loss)项、两个置信度损失(confidence loss)项和一个分类损失(classification loss)项。

  • 定位损失:计算预测边界框的位置(x, y)和大小(w, h)的误差。这些误差仅在包含物体的边界框中计算(由 1 i j o b j \mathbb{1}_{i j}^{o b j} 1ijobj 表示),如果网格单元格中存在物体,才会对其进行惩罚。
  • 置信度损失:第三项和第四项代表置信度损失。第三项测量在边界框内检测到物体时的置信度误差 ( 1 i j o b j ) \left(\mathbb{1}_{i j}^{o b j}\right) (1ijobj),第四项测量在边界框内未检测到物体时的置信度误差( ( 1 i j n o o b j ) \left(\mathbb{1}_{i j}^{n o o b j}\right) (1ijnoobj))。由于大多数边界框为空,因此该损失由 λ noobj  \lambda_{\text {noobj }} λnoobj  参数进行加权。
  • 分类损失:最后一个损失组件是分类损失,它测量每个类别的条件概率的平方误差,但仅当物体出现在单元格 ( 1 i o b j ) \left(\mathbb{1}_{i}^{o b j}\right) (1iobj)中时才进行测量。

这段文本强调了YOLOv1的一个重要特性,即同时预测物体的位置、大小和类别,以及每个预测的置信度。这种同时进行预测的方法使得YOLOv1在处理速度和准确性方面具有优势。

YOLOv1_111">4.4、YOLOv1的优点和限制

YOLO的简单架构以及其新颖的全图一次性回归使其比现有的目标检测器快得多,从而实现实时性能。

然而,虽然YOLO比任何目标检测器都更快,但与先进的Fast R-CNN[39]等方法相比,其定位误差要大。这一限制主要有三个原因:

  1. 它只能在网格单元中检测同一类别的最多两个对象,限制了其预测附近对象的能力。
  2. 对于训练数据中未出现过的长宽比的对象,YOLO很难进行预测。
  3. 由于下采样层,它从粗粒度的对象特征中学习。

YOLOv2_119">5、YOLOv2:更好、更快、更强

YOLOv2由Joseph Redmon和Ali Farhadi于2017年在CVPR上发表[44]。与原始YOLO相比,YOLOv2在速度保持不变的同时进行了多项改进,使其变得更好、更快、更强——能够检测9000个类别!这些改进包括:

  1. 在所有卷积层上使用批量归一化,这改善了收敛性,并作为正则化器来减少过拟合。

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

  3. 全卷积。他们去掉了密集层并使用了全卷积体系结构。

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

  5. 维度聚类。选择好的先验框有助于网络学习预测更准确的边界框。作者在训练边界框上运行k-means聚类以找到好的先验框。他们选择了五个先验框,在召回和模型复杂性之间提供了一个良好的折衷。

  6. 直接位置预测。与其他方法预测偏移量不同[45],YOLOv2遵循相同的理念并预测相对于网格单元的位置坐标。网络为每个单元格预测五个边界框,每个边界框有五个值 t x , t y , t w , t h 和 t o t_{x},t_{y},t_{w},t_{h}和t_{o} txtytwthto,其中 t o t_{o} to等同于YOLOv1中的Pc,最终边界框坐标如图7所示而获得。

  7. 更精细的特征。与YOLOv1相比,YOLOv2去掉了一层池化层,以获得13×13的特征图网格,用于416×416的输入图像。YOLOv2还使用了一个 passthrough 层,该层采用了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的平均精度为63.4%。

YOLOv2_135">5.1、YOLOv2体系结构

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

表2显示了整个Darknet-19主体与目标检测头。当使用PASCAL VOC数据集时,YOLOv2预测五个边界框,每个边界框有五个值和20个类别。

目标分类头用具有1000个滤波器的单个卷积层替换了最后四个卷积层,接着是全局平均池化层和Softmax。

YOLO9000YOLOv2_143">5.2、YOLO9000是一个更强大的YOLOv2

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

YOLOv3_147">6、YOLOv3

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

  1. 边界框预测。与YOLOv2类似,网络为每个边界框预测四个坐标 t x 、 t y 、 t w 和 t h t_{x}、t_{y}、t_{w}和t_{h} txtytwth;然而,这一次,YOLOv3使用逻辑回归为每个边界框预测一个对象性得分。对于与地面真实值重叠最高的锚框,该分数为1,对于其他锚框,该分数为0。与Faster R-CNN不同,YOLOv3只为每个地面真实对象分配一个锚框。此外,如果没有为对象分配锚框,则只会产生分类损失,而不会产生定位损失或置信损失。
  2. 类别预测。他们使用二元交叉熵代替softmax来进行分类训练,将问题作为多标签分类问题来处理。这种变化允许将多个标签分配给同一个框,这在某些具有重叠标签的复杂数据集上可能发生。例如,同一个对象可以是人又是人。
  3. 新主干网络。YOLOv3具有一个更大的特征提取器,由具有残差连接的53个卷积层组成。第6.1节更详细地描述了该架构。
  4. 空间金字塔池化(SPP)。尽管论文中没有提到,但作者还在主干网络中添加了一个修改过的SPP块[48],该块将多个最大池化输出进行连接,而无需下采样(步幅=1),其中每个最大池化输出具有不同的内核大小 k × k k \times k k×k,其中k=1,5,9,13,允许更大的接收场。这个版本被称为YOLOv3-spp,是表现最好的版本,将 A P 50 AP_{50} AP50提高了2.7%。
  5. 多尺度预测。类似于特征金字塔网络(Feature Pyramid Networks,FPN) [49],YOLOv3在三个不同尺度上预测三个框。第6.2节更详细地描述了多尺度预测机制。
  6. 边界框先验。与YOLOv2类似,作者也使用k-means来确定每个单元格的边界框先验。不同的是,在YOLOv2中,每个单元格使用了总共五个先验框,而在YOLOv3中,对于三个不同的尺度,它们使用了三个先验框。

YOLOv3_157">6.1、YOLOv3架构

YOLOv3中提出的架构主干被称为Darknet-53。它用带步长的卷积替换了所有的最大池化层,并增加了残差连接。总的来说,它包含53个卷积层。图8显示了架构的细节。
在这里插入图片描述

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

YOLOv3_164">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时实现了平均精度AP为36.2%和AP50为60.6%,达到了当时的状态-of-the-art,速度提高了2倍。

7、主干、颈部和头部

到目前为止,目标检测器的架构开始分为三个部分来描述:后干、颈部和头部。图10显示了一个高层次的主干、颈部和头部图。
在这里插入图片描述

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

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

头部是目标检测器的最后一个组件,它负责基于主干和颈部提供的特征进行预测。它通常由一个或多个特定于任务的子网络组成,执行分类、定位,以及最近的实例分割和姿势估计。头部处理颈部提供的特征,为每个对象候选生成预测。最后,通过非极大值抑制(NMS)等后处理步骤,过滤掉重叠的预测并仅保留最自信的检测结果。

YOLO模型的剩余部分中,我们将使用主干、颈部和头部来描述架构。

YOLOv4_189">8、YOLOv4

两年过去了,YOLO没有推出新版本。直到2020年4月,Alexey Bochkovskiy、Chien-Yao Wang和Hong-Yuan Mark Liao在ArXiv上发表了YOLOv4的论文[50]。起初,不同的作者推出了新的“官方”版本的YOLO,这感觉很奇怪;然而,YOLOv4保留了YOLO的相同理念——实时、开源、单次射击和darknet框架,并且改进非常令人满意,以至于该社区迅速将此版本作为官方YOLOv4采用。

YOLOv4试图通过尝试多种变化来找到最佳平衡,这些变化被归类为“bag-of-freebies”和“bag-of-specials”。Bag-of-freebies是指仅改变训练策略并增加训练成本,但不会增加推理时间的方法,最常见的是数据增强。另一方面,bag-of-specials是指稍微增加推理成本但显著提高准确性的方法。这些方法的例子包括扩大接收场[48、51、52]、组合特征[53、49、54、55]和后处理[56、40、57、58]等等。
在这里插入图片描述

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

  • 具有Bag-of-Specials(BoS)集成的增强架构。作者尝试了多种用于骨干网的架构,例如ResNeXt50 [59]、EfficientNet-B3 [60]和Darknet-53。表现最佳的架构是使用跨阶段部分连接(CSPNet)修改的Darknet-53,以及Mish激活函数[57]作为骨干网(参见图11)。对于颈部,他们使用了从YOLOv3-spp修改过的空间金字塔池化(SPP)的修改版本[48],以及与YOLOv3相同的multi-scale预测,但是使用路径聚合网络(PANet)的修改版本而不是FPN,以及修改后的空间注意力模块(SAM) [63]。最后,对于检测头,他们使用与YOLOv3相同的锚点。因此,该模型被称为CSPDarknet53-PANet-SPP。添加到Darknet-53的跨阶段部分连接(CSP)有助于减少模型的计算量,同时保持相同的准确性。与原始PANet论文中不同,SPP块中的特征是通过连接而不是添加来合并的。
  • 集成bag-of-freebies (BoF) 以进行高级训练方法。除了常规的增强,例如随机亮度、对比度、缩放、裁剪、翻转和旋转,作者实现了mosaic增强,将四个图像合并成一个图像,这允许检测超出其通常上下文的物体,并减少对大的mini-batch size的需求,以进行批量归一化。对于正则化,他们使用了DropBlock [64],它作为Dropout [65]的替代品,但是针对卷积神经网络以及类别标签平滑 [66, 67]。对于检测器,他们添加了CIoU损失 [68]和交叉小批量归一化(CmBN) [69],以便从整个批次而不是单个mini-batch收集统计信息。
  • 自我对抗训练(SAT)。为了使模型对扰动更加鲁棒,他们对输入图像进行对抗攻击,制造一个欺骗,即地面真实目标不在图像中,但保留原始标签以检测正确的目标。
  • 使用遗传算法进行超参数优化。为了找到用于训练的最佳超参数,他们在前10%的训练周期上使用遗传算法,并使用余弦退火调度器 [70] 来改变训练期间的学习率。它开始时缓慢降低学习率,然后在训练过程的中途快速降低学习率,最后以轻微的降低结束。
    在这里插入图片描述

表3列出了用于骨干网和检测器的最终选择的bag-of-freebies (BoF) 和 bag-of-specials (BoS)。

在 MS COCO 2017 测试开发集上评估,YOLOv4 在 NVIDIA V100 上以超过 50 FPS 的速度实现了 43.5% 的 AP 和 65.7% 的 AP50。

YOLOv5_207">9、YOLOv5

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

YOLOv5_212">9.1、YOLOv5架构

该骨干网络是经过修改的CSPDarknet53,它以一个主干(Stem)开始,这是一个具有大窗口大小的带步长卷积层,可以降低内存和计算成本;其后面是卷积层,从输入图像中提取相关特征。SPPF(空间金字塔池快速)层和后续卷积层处理不同尺度的特征,而上采样层增加特征图的分辨率。SPPF层旨在通过将不同尺度的特征池化到固定大小的特征图中来加速网络的计算。每个卷积后面都跟随批量归一化(Batch Normalization,BN)和SiLU激活函数[73]。该网络使用SPPF和一个经过修改的CSP-PAN作为“脖颈”,而“头”类似于YOLOv3。

YOLOv5使用了多种数据增强方法,如Mosaic、copy-paste [74]、随机仿射变换、MixUp [75]、HSV数据增强、随机水平翻转以及来自albumentations包的其它增强方法 [76]。它还提高了网格对梯度消失的敏感性,使其更加稳定。

YOLOv5提供了五个不同尺度的版本:YOLOv5n(nano)、YOLOv5s(small)、YOLOv5m(medium)、YOLOv51(large)和YOLOv5x(extra large)。其中,卷积模块的宽度和深度各不相同,以满足特定的应用和硬件要求。例如,YOLOv5n和YOLOv5s是针对低资源设备的轻量级模型,而YOLOv5x则针对高性能进行了优化,但速度会相对较慢。

截至本文撰写时,已发布的YOLOv5版本为v7.0,其中包括支持分类和实例分割的YOLOv5版本。

YOLOv5是开源的,并由Ultralytics积极维护,拥有超过250位贡献者,并且经常推出新的改进。YOLOv5易于使用、训练和部署。Ultralytics提供了针对iOS和Android的移动版本以及许多用于标记、训练和部署的集成。

在MS COCO数据集2017年测试开发版上进行评估,YOLOv5x取得了 50.7 % 50.7\% 50.7% mAP的成绩,图像大小为640像素。使用大小为32的批量大小时,在NVIDIA V100上可达到每秒200 FPS的速度。使用1536像素的更大输入大小和测试时间增强(TTA)时,YOLOv5取得了 55.8 % 55.8\% 55.8% mAP的成绩。

YOLOv4发布一年后,同一作者在2021年的CVPR会议上推出了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。

YOLOR [83]是由YOLOv4的同一研究团队于2021年5月在arXiv上发表的。它代表You Only Learn One Representation。在这篇论文中,作者们采用了不同的方法;他们开发了一种多任务学习的方法,旨在通过学习一般表示和使用子网络来创建特定任务的表示来为各种任务(例如,分类,检测,姿势估计)创建单个模型。由于传统的联合学习方法往往导致特征生成次优,YOLOR旨在通过将神经网络的隐式知识编码为应用于多个任务的表示来克服这个问题,就像人类利用过去的经验来解决新问题一样。结果表明,将隐式知识引入神经网络对所有任务都有益。

在MS COCO数据集2017年测试开发版上进行评估,YOLOR取得了55.4%的AP和73.3%的 A P 50 \mathrm{AP}_{50} AP50,在NVIDIA V100上的运行速度为30 FPS。

YOLOR_233">11、YOLOR

YOLOR [83]是由YOLOv4的同一研究团队于2021年5月在arXiv上发表的。它代表You Only Learn One Representation。在这篇论文中,作者们采用了不同的方法;他们开发了一种多任务学习的方法,旨在通过学习一般表示和使用子网络来创建特定任务的表示来为各种任务(例如,分类,检测,姿势估计)创建单个模型。由于传统的联合学习方法往往导致特征生成次优,YOLOR旨在通过将神经网络的隐式知识编码为应用于多个任务的表示来克服这个问题,就像人类利用过去的经验来解决新问题一样。结果表明,将隐式知识引入神经网络对所有任务都有益。

在MS COCO数据集2017年测试开发版上进行评估,YOLOR取得了55.4%的AP和73.3%的 A P 50 \mathrm{AP}_{50} AP50,在NVIDIA V100上的运行速度为30 FPS。

YOLOX [84]是Megvii Technology于2021年7月在arXiv上发表的。它是在PyTorch中开发并使用Ultralytics的YOLOV3作为起点,具有五个主要变化:无锚点架构、多个正样本、解耦头、先进的标签分配和强大的增强。它在特斯拉V100上以50.1%的AP和68.9%的FPS达到了2021年的最佳平衡速度和准确性。下面我们描述了YOLOX相对于YOLOv3的五个主要变化:

  1. 无锚点。自YOLOv2以来,所有后续的YOLO版本都是基于锚点的检测器。YOLOX受到Anchor-free state-of-the-art目标检测器(如CornerNet [85],CenterNet [86]和FCOS [87])的启发,回归到无锚点架构,简化了训练和解码过程。与YOLOv3基线相比,无锚点增加了0.9个AP点。
  2. 多正样本。为了弥补因缺少锚点而产生的大不平衡,作者使用了中心采样[87],其中将中心3x3区域分配为正样本。这种方法使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个点。
    在这里插入图片描述

YOLOv6 [91]是美团视觉AI部门于2022年9月在arXiv上发表的论文。该网络设计包括一个高效的骨干网络,使用RepVGG或CSPStackRep块,一个PAN拓扑颈和一个高效的解耦头,采用混合通道策略。此外,该论文还介绍了使用后训练量化(post-training quantization)和通道热图蒸馏(channel-wise distillation)的增强量化技术,从而实现更快更精确的检测器。总体而言,YOLOv6在准确性和速度指标上超越了先前的最先进模型,如YOLOv5,YOLOX和PP-YOLOE。
在这里插入图片描述

图14显示了YOLOv6的详细架构。
该模型的主要创新点总结如下:

  1. 基于RepVGG [92]的新的骨干网络称为EfficientRep,其并行性高于先前的YOLO骨干网络。对于颈,他们为较大的模型使用增强过的RepBlocks [92]或CSPStackRep [61] Blocks的PAN [62]。同时,借鉴YOLOX的设计,他们开发了一个高效的解耦头。
  2. 使用在TOOD [94]中引入的任务对齐学习(Task alignment learning)方法进行标签分配。
  3. 新的分类和回归损失。他们使用了一个分类的VariFocal损失[95]和一个SIoU [96]/GIoU [97]回归损失。
  4. 针对回归和分类任务的自我指导策略。
  5. 使用RepOptimizer[98]和通道热图蒸馏[99]的量化方案进行检测,有助于实现更快的检测器。

作者提供了八个缩放模型,从YOLOv6-N到YOLOv6-L6。在MS COCO数据集的2017年测试开发版本上进行评估,最大的模型在NVIDIA Tesla T4上实现了57.2%的AP,运行速度约为29 FPS。

YOLOv7_260">14、YOLOv7

YOLOv7 [100]于2022年7月在ArXiv上发表,其作者与YOLOv4和YOLOR相同。当时,它在速度和准确性方面超越了所有已知的目标检测器,运行速度在5FPS到160FPS之间。与YOLOv4一样,它是仅使用MS COCO数据集训练的,没有使用预训练的主干网络。YOLOv7提出了一些架构更改和一系列“免费赠品”,这些赠品在不影响推理速度的情况下提高了准确性。
在这里插入图片描述

图15显示了YOLOv7的详细架构。

YOLOv7的架构更改如下:

  1. 扩展高效层聚合网络(E-ELAN)。ELAN [102]是一种策略,通过控制最短的最长梯度路径,使深层模型能够更有效地学习和收敛。YOLOv7提出了E-ELAN,该网络适用于具有无限堆叠计算块的模型。E-ELAN通过洗牌和合并基数来组合不同组的功能,以增强网络的学习能力,同时不破坏原始梯度路径。
  2. 基于连接模型的模型缩放。缩放通过调整一些模型属性来生成不同大小的模型。YOLOv7的架构是一种基于连接的架构,在这种架构中,标准的缩放技术(如深度缩放)会导致过渡层的输入通道与输出通道之间的比率变化,这反过来又导致模型硬件使用率的下降。YOLOv7提出了一种新的策略,用于缩放基于连接的模型,其中块的深度和宽度以相同的因子进行缩放,以保持模型的最佳结构。

YOLOv7使用的免费赠品包括:

  • 计划重新参数化卷积。与YOLOv6一样,YOLOv7的架构也受到重新参数化卷积(RepConv)的启发[92]。然而,他们发现RepConv中的恒等连接破坏了ResNet中的残差[53]和DenseNet中的连接[103]。因此,他们去掉了恒等连接,并将其称为RepConvN。
  • 为辅助头进行粗标签分配,为主头进行精细标签分配。主头负责最终输出,而辅助头则辅助训练。
  • conv-bn-activation中的批量归一化。在推理阶段,将批量归一化的均值和方差整合到卷积层的偏差和权重中。
  • YOLOR[83]中的隐式知识的启发。
  • 使用指数移动平均作为最终推理模型。

YOLOv4YOLOR_280">14.1、与YOLOv4和YOLOR的比较

在本节中,我们强调了YOLOv7相比于同一作者开发的先前YOLO模型的增强功能。

YOLOv4相比,YOLOv7减少了75%的参数和36%的计算量,同时将平均精度(AP)提高了1.5%。

相比之下,YOLOv7-tiny减少了39%的参数和49%的计算量,同时保持了相同的AP。

最后,与YOLOR相比,YOLOv7减少了43%的参数和15%的计算量,同时AP略有增加0.4%。

在MS COCO数据集test-dev 2017上评估了YOLOv7-E6,其AP为55.9%,\mathrm{AP}_{50}为73.5%,输入大小为1280像素,在NVIDIA V100上的速度为50 FPS。

YOLO_292">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和小neck可以产生更好的性能,他们只留下一个用于分类的线性层和一个用于回归的线性层。他们将这种方法称为ZeroHead。
  4. AlignedOTA标签分配。动态标签分配方法,如OTA [90]和TOOD [94],已经因为对静态方法的显著改进而流行起来。然而,分类和回归之间的不匹配仍然是一个问题,部分原因是分类和回归损失的不平衡。为了解决这个问题,他们的AlignedOTA方法将焦点损失 [81] 引入到分类成本中,并使用预测和地面真实框的IoU作为软标签,从而可以对每个目标选择对齐的样本,并从全局角度解决问题。
  5. 知识蒸馏。他们提出的方法分为两个阶段:在第一个阶段中,教师指导学生;在第二个阶段中,学生独立进行微调。此外,他们在蒸馏方法中纳入了两个增强功能:Align模块,它将学生的特征调整为与教师的相同分辨率;通道动态温度,它将教师和学生特征归一化以减少实数值差异的影响。

作者生成了缩放模型,名为DAMO-YOLO-Tiny / Small / Medium,其中最好的模型在NVIDIA V100上实现了233 FPS的AP为50.0%。

YOLOv8_303">16、YOLOv8

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

YOLOv8_305">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-Seg模型在各种目标检测和语义分割基准上取得了最先进的结果,同时保持了高速度和效率。

YOLOv8可以从命令行界面(CLI)运行,也可以作为PIP包安装。此外,它还附带了多个集成标签、训练和部署。

在MS COCO数据集测试开发版本上进行评估2017,YOLOv8x的AP为53.9%,图像大小为640像素(与相同输入大小上的YOLOv5的50.7%相比),在NVIDIA A100和TensorRT上的速度为280 FPS。

YOLOPPYOLOv2__PPYOLOE_319">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 增加了 10 个现有技巧来提高检测器的准确性,同时保持速度不变。根据作者的说法,这篇论文的目的不是介绍一种新的目标检测器,而是展示如何逐步构建一个更好的检测器。PP-YOLO 使用的大部分技巧都不同于 YOLOv4 中使用的技巧,而与之重叠的技巧使用不同的实现。与 YOLOv3 相比,PP-YOLO 的变化包括:

  1. 采用具有可变形卷积的架构增强了最后阶段的 DarkNet-53 主干的 ResNet50-vd 主干,以及具有在 ImageNet 上更高的分类精度的蒸馏预训练模型。这种架构被称为 ResNet5-vd-dcn。
  2. 使用更大的批量大小来提高训练稳定性,从 64 增加到 192,同时更新训练计划和学习率。
  3. 维护训练参数的移动平均值,并使用它们而不是最终训练值。
  4. 将 DropBlock 仅应用于 FPN。
  5. 在另一个分支中添加 IoU 损失以及用于边界框回归的 L1 损失。
  6. 添加 IoU 预测分支来衡量定位精度以及 IoU 感知损失。在推理期间,YOLOv3 将分类概率和对象性得分相乘以计算最终检测结果,PP-YOLO 也将预测的 IoU 相乘以考虑定位精度。
  7. 采用与 YOLOv4 类似的网格敏感方法来改善网格边界处的边界框中心预测。
  8. 使用可以并行运行的矩阵 NMS,使其比传统 NMS 更快。
  9. 在 FPN 的 1 × 1 1 \times 1 1×1 卷积和检测头中的第一个卷积层上使用 CoordConv。CoordConv 使网络学习平移不变性,从而提高检测定位的准确性。
  10. 仅在顶层特征图上使用空间金字塔池化来增加主干网络的接收域。

YOLO_333">17.1、PP-YOLO的数据增强和预处理

PP-YOLO使用了以下数据增强和预处理方法:

  1. 使用Mixup Training [75],其中权重按照Beta(α,β)分布进行采样,其中α=1.5和β=1.5。
  2. 随机颜色失真。
  3. 随机扩展。
  4. 以 0.5 的概率进行随机裁剪和随机翻转。
  5. 使用均值为 [0.485,0.456,0.406],标准差为 [0.229,0.224,0.225] 的 RGB 通道 z-score 归一化。
  6. 从 [320, 352, 384, 416, 448, 480, 512, 544, 576, 608] 中均匀绘制多个图像大小。

在 MS COCO 测试集上进行了评估,PP-YOLO 在 NVIDIA V100 上达到了 45.9% 的 AP 和 65.2% 的 A P 50 \mathrm{AP}_{50} AP50,速度为 73 FPS。

YOLOv2_345">17.2、PP-YOLOv2

PP-YOLOv2 [114] 于 2021 年 4 月发表在 ArXiv 上,通过对 PP-YOLO 进行四项改进,将性能从 45.9% AP 提高到 49.5% AP,同时保持 69 FPS 的速度在 NVIDIA V100 上运行。与 PP-YOLO 相比,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 感知损失的计算。

YOLOE_354">17.3 PP-YOLOE

PP-YOLOE [115] 于 2022 年 3 月发表在 ArXiv 上。它在 PP-YOLOv2 的基础上进行了改进,在 NVIDIA V100 上实现了 51.4% AP 和 78.1 FPS 的性能。图 17 显示了详细的架构图。PP-YOLOE 与 PP-YOLOv2 的主要区别如下:

  1. 无锚点。遵循 [87, 86, 85, 84] 的工作趋势,PP-YOLOE 使用无锚点架构。
  2. 新的主干网络和颈部。受 TreeNet [116] 的启发,作者修改了主干网络和颈部的架构,使用结合残差连接和密集连接的 RepResBlocks。
  3. 任务对齐学习 (TAL)。YOLOX 是第一个提出任务不对齐问题(即分类置信度和位置精度在所有情况下不一致)的。为了减少这个问题,PP-YOLOE 实现了基于 TOOD [94] 的 TAL,其中包括动态标签分配和任务对齐损失。
  4. 高效任务对齐头 (ET-head)。与 YOLOX 中分类和位置头解耦的情况不同,PP-YOLOE 使用基于 TOOD 的单个头,以提高速度和准确性。
  5. Varifocal (VFL) 和分布焦点损失 (DFL)。VFL [95] 使用目标分数为正样本的损失加权,为具有高 IoU 的样本赋予更高的权重。这可以在训练期间优先考虑高质量样本。类似地,两者都使用 IoU 感知分类分数 (IACS) 作为目标,允许分类和定位精度的联合学习,从而实现训练和推理之间的一致性。另一方面,DFL [108] 将焦点损失从离散扩展到连续标签,使得能够成功优化改进的表示,结合质量估计和类别预测。这可以准确描述真实数据中的灵活分布,消除不一致的风险。
    在这里插入图片描述

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

YOLONAS_366">18、YOLO-NAS

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

YOLO-NAS 的新颖性包括以下内容:

  • 量化感知模块 [119],称为 QSP 和 QCI,结合重新参数化进行 8 位量化以最小化后训练量化过程中的准确性损失。
  • 使用 AutoNAC 的自动架构设计,这是 Deci 的专有 NAS 技术。
  • 混合量化方法,选择性地对模型的某些部分进行量化,以平衡延迟和准确性,而不是标准量化,即所有层都会受到影响。
  • 使用自动标记数据、自我蒸馏和大型数据集进行预训练。

AutoNAC 系统在创建 YOLO-NAS 方面发挥了重要作用,它具有多种功能,可以适应任何任务、数据细节、推断环境以及性能目标设置。它可以帮助用户确定最合适的结构,为其特定用途提供精确性和推断速度的完美结合。这项技术考虑了参与推断过程的数据和硬件以及编译器和量化等其他因素。此外,在 NAS 过程中,为了与后训练量化 (PTQ) 兼容,他们将 RepVGG 块合并到模型架构中。通过改变 QSP 和 QCI 块的深度和位置,他们生成了三个架构:YOLO-NAS-S、YOLO-NAS-M 和 YOLO-NAS-L(S、M、L 分别代表小型、中型和大型)。图 18 显示了 YOLO-NAS-L 的模型架构。
在这里插入图片描述

该模型在包含 200 万张图像和 365 个类别的 Objects365 [120] 上进行了预训练,随后使用 COCO 集生成了伪标签。最后,模型使用 COCO 集的原始 11.8 万张训练图像进行训练。

截至目前,已发布了三种 YOLO-NAS 模型,分别采用 FP32、FP16 和 INT8 精度,在 MS COCO 上以 16 位精度实现了 52.2% 的 AP。

YOLO_382">19、使用Transformer的YOLO

随着Transformer在大多数深度学习任务中的兴起,从语言和音频处理到视觉,很自然地要将Transformer和YOLO相结合。在将Transformer用于目标检测的首次尝试中,有一个名为“你只关注一个序列”或YOLOS的模型,它将预训练的视觉Transformer(ViT)从图像分类转换为目标检测,在MS COCO数据集上实现了42.0%的AP。对ViT进行了两个改动:1)用100个[DET]标记替换用于分类的一个[CLS]标记,2)用与End-to-End Object Detection类似的双边匹配损失替换ViT中的图像分类损失。

许多作品都将Transformer与YOLO相关架构结合起来,专门针对特定应用。例如,受到Vision Transformer对遮挡、扰动和域转移的鲁棒性的启发,Zhang等人[125]提出了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]中改进了YOLOv51 5.4 %。

在遥感应用中,YOLO-SD [129]试图提高合成孔径雷达(SAR)图像中小型船舶的检测精度。他们从YOLOX [84]开始,结合多尺度卷积(MSC)来提高不同尺度的检测和特征Transformer模块来捕获全局特征。作者们表明,与YOLOX相比,这些变化提高了YOLO-SD在HRSID数据集[130]上的准确性。

另一种有趣的方法是将YOLO与DETR[124]相结合,例如DEYO [131],它包括两个阶段:一个基于YOLOv5的模型,接着是一个DETR类似的模型。第一阶段生成高质量查询和锚框作为第二阶段的输入。结果表明,与DETR相比,DEYO具有更快的收敛速度和更好的性能,在COCO检测基准上实现了 52.1 % A P 52.1 \% AP 52.1%AP

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-YOLOYOLO-NAS中引入了神经架构搜索。
  • 性能:虽然YOLO模型的性能随着时间的推移而提高,但值得注意的是,它们通常优先考虑平衡速度和准确性,而不是只关注准确性。这种权衡对于YOLO框架至关重要,允许在各种应用程序中进行实时目标检测。
    在这里插入图片描述

20.1、速度与精度之间的权衡

YOLO系列目标检测模型一直致力于平衡速度和精度,旨在在不牺牲检测结果质量的情况下提供实时性能。随着YOLO框架通过各种迭代不断发展,这种权衡一直是一个持续的主题,每个版本都寻求以不同的方式优化这些相互竞争的目标。在原始的YOLO模型中,主要重点是实现高速目标检测。该模型使用单个卷积神经网络(CNN)直接从输入图像预测对象位置和类别,从而实现实时处理。然而,对速度的这种重视导致了在处理小物体或具有重叠边界框的物体时的精度妥协。

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

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

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

YOLO_413">21、YOLO的未来

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

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

基准的演变。目前用于评估目标检测模型的基准,COCO 2017,最终可能会被一个更先进、更具挑战性的基准所取代。这与从第一版YOLO使用的VOC 2007基准的转变相似,反映了随着模型变得越来越复杂和准确,需要一个更具挑战性的基准。

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

扩展到新领域。YOLO模型有可能超越目标检测和分割,探索视频中的目标跟踪和3D关键点估计等领域。我们预计YOLO模型将过渡到多模态框架,整合视觉和语言、视频和音频处理。随着这些模型的发展,它们可以成为创新解决方案的基础,满足更广泛的计算机视觉和多媒体任务需求。

适应各种硬件。YOLO模型将进一步跨越硬件平台,从物联网设备到高性能计算集群。这种适应性将根据应用的要求和约束条件,使YOLO模型能够在各种环境中部署。此外,通过调整模型以适应不同的硬件规格,可以使YOLO对于更多的用户和行业更加便捷和高效。

致谢

感谢国家科学技术委员会(CONACYT)通过国家研究系统(SNI)提供的支持。


http://www.niftyadmin.cn/n/5245456.html

相关文章

解析5种常用的Python设计模式

大家好,Python是一种非常流行的编程语言,它易于学习、灵活且功能强大,在各个领域广泛应用。很多人误认为Python是一种面向过程的语言,无法很好地支持面向对象的编程风格。这种观念是错误的,Python不仅支持面向对象编程…

【LeeCode】454. 四数相加 II

给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < n nums1[i] nums2[j] nums3[k] nums4[l] 0 示例 1&#xff1a; 输入&#xff1a;nums1 [1,2],…

软件开发自动化到智能文档检索:大语言模型驱动的开源项目盘点 | 开源专题 No.46

shroominic/codeinterpreter-api Stars: 2.4k License: MIT 这是一个 ChatGPT 代码解释器的开源实现项目&#xff0c;使用了 LangChain 和 CodeBoxes 进行后端沙盒式 Python 代码执行。该项目具有以下特性和优势&#xff1a; 数据集分析、股票图表绘制、图像处理等功能支持网…

Linux篇:进程间通信

一、进程间通信原理&#xff1a; 1、通信是有成本的&#xff1a;两个或者多个进程&#xff0c;实现数据层面的交互&#xff0c;因为进程独立性的存在&#xff0c;导致进程通信的成本比较高。 2、进程间通信的方式&#xff1a; ①基本数据 ②发送命令 ③某种协同 ④通知 .....…

Qt之QGraphicsView —— 笔记1:绘制简单图元(附完整源码)

效果 相关类介绍 QGraphicsView类提供了一个小部件,用于显示QGraphicsScene的内容。QGraphicsView在可滚动视口中可视化。QGraphicsView将滚动其视口,以确保该点在视图中居中。 QGraphicsScene类 提供了一个用于管理大量二维图形项的场景。请注意,QGraphicsScene没有自己的视…

QML与C++之间结构体输出

1.定义带有结构体的头文件TrackClass.h #ifndef TRACKCLASS_H #define TRACKCLASS_H#include <QGuiApplication> #include "QObject" #include <QVector>struct TrackPoint {Q_GADGETQ_PROPERTY(qreal lat MEMBER lat)Q_PROPERTY(qreal lon MEMBER lon)…

Tap虚拟网卡

1 概述 Tap设备通常用于虚拟化场景下&#xff0c;其驱动代码位于drivers/net/tun.c&#xff0c;tap与tun复用大部分代码&#xff0c; 注&#xff1a;drivers/net/tap.c并不是tap设备的代码&#xff0c;而是macvtap和ipvtap&#xff1b; 下文中&#xff0c;我们统一称tap&#…

2、Linux_远程操作

远程操作 1.配置ifconfig 1.1输入 ifconfig 查看 ip 的命令( ifconfig ) 1.2搜索 ifconfig 命令&#xff08;yum search ifconfig&#xff09; 1.3配置网卡 进入如下目录配置网卡 cd /etc/syscofig/network-scripts编辑 ifcfg-ens33 vi ifcfg-ens33按 i 键进入编辑模式 按 …