A COMPREHENSIVE REVIEW OF YOLO: FROM YOLOV1 AND BEYOND
期刊:UNDER REVIEW IN ACM COMPUTING SURVEYS
摘要:YOLO has become a central real-time object detection system for robotics, driverless cars, and video monitoring applications. We present a comprehensive analysis of YOLO’s evolution, examining the innovations and contributions in each iteration from the original YOLO to YOLOv8 and YOLO-NAS. We start by describing the standard metrics and postprocessing; then, we discuss the major changes in network architecture and training tricks for each model. Finally, we summarize the essential lessons from YOLO’s development and provide a perspective on its future, highlighting potential research directions to enhance real-time object detection systems.
YOLO已经成为机器人技术、无人驾驶汽车和视频监控应用程序的中心实时目标检测系统。我们对YOLO的演变进行了全面的分析,检查了从原始YOLO到YOLOv8和YOLO-NAS的每次迭代中的创新和贡献。我们首先描述标准度量和后处理;然后,我们讨论了网络架构的主要变化和每个模型的训练技巧。最后,我们总结了YOLO发展的基本教训,并对其未来提供了展望,强调了增强实时目标检测系统的潜在研究方向。
关键词:Keywords YOLO · Object detection · Deep Learning · Computer Vision
主要创新点:
本文首先探讨了原始YOLO模型的基本概念和体系结构,这为YOLO家族的后续发展奠定了基础。接下来,我们将深入研究在每个版本中引入的改进和增强,范围从YOLOv2到YOLOv8。这些改进包括各种方面,如网络设计、损失功能修改、锚盒自适应和输入分辨率缩放 。通过检查这些发展,我们的目标是提供对YOLO框架的演变及其对对象检测的影响的整体理解。
除了讨论每个YOLO版本的具体进展外,本文还强调了在整个框架的开发过程中出现的速度和准确性之间的权衡。这强调了在选择最合适的YOLO模型时,考虑特定应用程序的上下文和要求的重要性。最后,我们展望了YOLO框架的未来发展方向,并探讨了进一步研究和发展的潜在途径,这将塑造实时目标检测系统的持续进展。
跨不同领域的YOLO应用程序
YOLO的实时目标检测能力在自动驾驶车辆系统中是非常宝贵的,能够快速识别和跟踪各种物体,如车辆、行人[1,2]、自行车和其他障碍物[3,4,5,6]。这些功能已应用于许多领域,包括监控[8]视频序列中的动作识别[7]、运动分析[9]和人机交互[10]。
YOLO模型已在农业中用于检测和分类作物[11,12]、害虫和疾病[13],辅助精确农业技术和自动化农业过程。它们也被用于生物识别、安全和人脸识别系统[14,15]中的人脸检测任务。
在医学领域,YOLO已被用于癌症检测[16,17]、皮肤分割[18]和药丸识别[19],从而提高了诊断的准确性和更有效的治疗过程。在遥感方面,它已被用于卫星和航空图像中的目标探测和分类,有助于土地利用测绘、城市规划和环境监测[20,21,22,23]。
安全系统集成了YOLO模型,用于实时监控和分析视频源,允许快速检测可疑活动[24]、社交距离和口罩检测[25]。该模型还应用于表面检测,检测缺陷和异常,加强制造和生产过程中的质量控制。
在交通应用中,YOLO模型已被用于车牌检测[29]和交通标志识别[30]等任务,有助于智能交通系统和交通管理解决方案的开发。它们已被用于野生动物的检测和监测,以确定濒危物种的生物多样性保护和生态系统管理[31]。最后,YOLO已广泛应用于机器人应用[32,33]和无人机[34,35]的目标检测。
对象检测度量和非最大抑制(NMS)
平均精度(AP),传统上称为平均平均精度(mAP),是用于评估目标检测模型性能的常用度量指标。它测量所有类别的平均精度,提供一个值来比较不同的模型。COCO数据集不区分AP和mAP。在本文的其余部分中,我们将把这个度量标准称为AP。
在YOLOv1和YOLOv2中,用于训练和基准测试的数据集是PASCAL VOC 2007和VOC 2012 [36]。然而,从YOLOv3开始,使用的数据集是微软COCO(上下文中的公共对象)[37]。对这些数据集的AP的计算方法不同。下面的部分将讨论AP背后的基本原理,并解释如何计算它。
AP是如何工作的?
AP度量基于精确召回度量,处理多个对象类别,并使用联合上的交集(IoU)定义一个积极的预测。
Precision and Recall: 精度衡量模型的积极预测的准确性,而recall则衡量模型正确识别的正样本的比例。精度和查全率之间经常存在权衡;例如,增加检测对象的数量(更高的查全率)可能会导致更多的误报(较低的精度)。为了解释这种权衡,AP度量包含了精度-召回曲线,该曲线绘制了不同置信阈值的召回精度。该度量通过考虑精度-查全率曲线下的面积,提供了对精度和查全率的平衡评估。
**Handling multiple object categories:**对象检测模型必须识别和定位图像中的多个对象类别。AP度量通过分别计算每个类别的平均精度(AP)来解决这一问题,然后取所有类别的平均值(这也就是为什么它也被称为平均平均精度)。这种方法确保了对每个类别都要单独评估模型的性能,从而对模型的整体性能提供了更全面的评估。
**Intersection over Union: **目标检测旨在通过预测边界框来精确定位图像中的目标。AP度量包含了联合交叉点(IoU)度量,以评估预测的边界盒的质量。IoU是预测边界框与真实边界框的相交面积与联合面积的比率(见图2)。它测量了真实值和预测的边界框之间的重叠。COCO基准考虑多个IoU阈值来评估模型在不同定位精度水平上的性能。
计算AP
AP在VOC和COCO数据集中的计算方式不同。在本节中,我们将描述如何在每个数据集上计算它。
VOC Dataset
这个数据集包括20个对象类别。要计算VOC中的AP,我们遵循下一个步骤:
1.对于每个类别,通过改变模型预测的置信度阈值来计算精度-召回率曲线。
2.计算每个类别的平均精度(AP)使用插值11点抽样的精度召回曲线。
3.通过取所有20个类别的APs的平均值来计算最终的平均精度(AP)。
Microsoft COCO Dataset
该数据集包括80个对象类别,并使用一种更复杂的方法来计算AP。它不使用11点插值,而是使用101点插值,也就是说,它以0.01为增量计算101个召回阈值的精度。此外,AP是通过对多个IoU值进行平均而不是仅仅一个值来获得的,除了一个称为AP50的公共AP度量,它是单个IoU阈值为0.5的AP。在COCO中计算AP的步骤如下:
1.对于每个类别,通过改变模型预测的置信度阈值来计算精度-召回率曲线。
2.使用10个1个召回阈值计算每个类别的平均精度(AP)。
3.计算基于Union(IoU)阈值在不同交叉口的AP,通常从0.5到0.95,步长为0.05。更高的IoU阈值需要更准确的预测才能被认为是真正的阳性。
4.对于每个IoU阈值,取所有80个类别的ap的平均值。
5.最后,通过平均在每个IoU阈值下计算的AP值来计算总体AP。
AP计算的差异使得很难直接比较两个数据集上的目标检测模型的性能。目前的标准使用了COCO AP,因为它对模型在不同的IoU阈值下的表现进行了更细粒度的评估。
非最大抑制(NMS)
非最大抑制(NMS)是在目标检测算法中使用的一种后处理技术,以减少重叠边界盒的数量,提高整体检测质量。对象检测算法通常在同一对象周围生成具有不同置信度分数的多个边界框。NMS过滤掉了冗余的和不相关的边界框,只保留了最准确的边界框。算法1描述了这个过程。图3显示了包含多个重叠边界框的对象检测模型的典型输出和NMS之后的输出。
YOLO: You Only Look Once
Joseph Redmon等人的YOLO发表于CVPR 2016 [38]。它首次提出了一种实时的端到端目标检测方法。YOLO这个名字代表“你只看一次”,指的是它是能够完成检测任务与单一的网络,而不是以前的方法,使用滑动窗口之后一个分类器,需要运行数百或数千次每个图像或更先进的方法将任务分为两步,第一步检测可能与对象或区域建议和第二步运行一个分类器的建议。此外,YOLO使用了一个仅基于回归的更直接的输出来预测检测输出,而Fast R-CNN [39]使用了两个单独的输出,即概率的分类和盒子坐标的回归。
YOLOv1是如何工作的?
YOLOv1通过同时检测所有的边界框,统一了目标检测步骤。为了实现这一点,YOLO将输入图像划分为一个S×S网格,并预测同一类的B个边界框,以及每个网格元素对C个不同类的置信度。每个边界框预测由五个值组成: P c、bx、by、bh、bw,其中Pc是盒子的置信度得分,反映了模型对盒子包含对象的置信度以及盒子的准确性。bx和by坐标是框相对于网格单元格的中心,bh和bw是框相对于整个图像的高度和宽度。YOLO的输出是S×S×(B×5 + C)的张量,然后可选择进行非最大抑制(NMS),以消除重复检测。
在最初的YOLO论文中,作者使用了包含20个类的数据集[36],(C = 20);7×7(S = 7)和每个网格元素最多2类(B = 2),给出了7×7×30的输出预测。图4显示了一个简化的输出向量,考虑了一个三到三个的网格、三个类和每个网格的8个值的单个类。在这个简化的情况下,YOLO的输出将是3×3×8。YOLOv1在PASCAL VOC2007数据集上的平均精度(AP)为63.4。
YOLOv1 Architecture
YOLOv1体系结构包括24个卷积层,然后是两个完全连接的层,用来预测边界框的坐标和概率。除最后一层使用线性激活函数外,所有层均使用 leaky rectified linear unit activations泄漏校流线性单位激活[40]。受GoogLeNet [41]和网络[42]网络的启发,YOLO使用1×1卷积层来减少特征映射的数量,并保持参数的数量相对较低。作为激活层,表1描述了YOLOv1体系结构。作者还引入了一个更轻的模型,称为快速YOLO,由9个卷积层组成。
YOLOv1 Training
作者使用ImageNet数据集[43],以224×224的分辨率预先训练了YOLO的前20层。然后,他们将最后四层随机初始化权重,并使用PASCAL VOC 2007和VOC 2012数据集[36]对模型进行微调,分辨率为448×448,以增加细节,以实现更准确的目标检测。对于增强,作者使用了最多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)中的类条件概率的平方误差。
YOLOv1的优点和局限性
YOLO的简单架构,加上它新颖的全图像一次回归,使它比现有的对象探测器快得多,允许实时性能。然而,虽然YOLO比任何对象检测器都快,但与Fast R-CNN [39]等最先进的方法相比,定位误差更大。造成这一限制的主要有三个原因:
1.它最多只能检测到网格单元中两个同一类别的物体,这限制了它预测附近物体的能力。
2.它难以预测训练数据中没有的高宽比的物体。
3.由于向下采样层,它从粗糙的对象特征中学习。
YOLOv2: Better, Faster, and Stronger
《YOLOv2》由约瑟夫·雷德蒙和阿里·法哈迪在CVPR 2017 [44]上发表。它包括了对原始YOLO的几个改进,以使它更好,保持相同的速度和更强——能够检测9000个类别!-。改进措施如下:
1. Batch normalization 在所有的卷积层上都提高了收敛性,并作为一个正则化器来减少过拟合。
2. High-resolution classifier 和YOLOv1一样,他们在224×224处使用ImageNet对模型进行了预训练。然而,这一次,他们在ImageNet上细化了十个时代的模型,分辨率为448×448,提高了在更高分辨率输入下的网络性能。
3. Fully convolutional 他们去掉了密集的图层,并使用了一个完全卷积的体系结构。
4. Use anchor boxes to predict bounding boxes 它们使用一组先前的框或锚定框,这些框是具有预定义形状的框,用于匹配对象的原型形状,如图6所示。为每个网格单元定义了多个锚框,系统会预测每个锚框的坐标和类。网络输出的大小与每个网格单元的锚盒数量成正比。
5. Dimension Clusters 选择好的先验框有助于网络学会预测更准确的边界框。作者在训练边界框上进行了k-means聚类,以寻找良好的先验。他们选择了五个之前的盒子,这在召回率和模型复杂性之间提供了一个很好的权衡。
6. Direct location prediction 与其他预测偏移量[45]的方法不同,YOLOv2遵循相同的哲学和相对于网格单元的预测位置坐标。该网络为每个单元格预测了5个边界框,每个单元格都有5个值tx、ty、tw、th和to,其中to相当于YOLOv1中的Pc,最终得到的边界框坐标如图7所示。
7. Finner-grained features 与YOLOv1相比,YOLOv2删除了一个池化层,得到了416×416的输入图像的13×13的输出特征图或网格。YOLOv2还使用了一个直通层,它可以获取26×26×512的特征图,并通过将相邻的特征堆叠成不同的通道来重新组织它而不是通过空间子采样来失去它们。这将生成13个×13×2048特征图,并在通道维度上与较低分辨率的13×13×1024地图相连接,以获得13个×13×3072特征图。建筑结构的细节见表2。
8. Multi-scale training 由于YOLOv2不使用完全连接的图层,所以输入可以是不同的大小。为了使YOLOv2对不同的输入大小具有鲁棒性,作者对模型进行了随机训练,每10批将输入大小从320×320改变到608×608。
Figure 5: YOLO cost function: includes localization loss for bounding box coordinates, confidence loss for object
presence or absence, and classification loss for category prediction accuracy.图5: YOLO成本函数:包括边界框坐标的定位损失、对象存在或不存在的置信度损失和类别预测精度的分类损失。
通过所有这些改进,YOLOv2在PASCAL VOC2007数据集上实现了78.6%的平均精度(AP),而YOLOv1获得的平均精度为63.4%。
YOLOv2 Architecture
YOLOv2使用的主干架构被称为Darknet-19,包含19个卷积层和5个最大池化层。与YOLOv1的架构类似,它的灵感来自于网络[42]中,在3×3之间使用1×1卷积来减少参数的数量。此外,如上所述,它们使用批处理规范化来规范化和帮助收敛。
表2显示了具有目标检测头的整个 Darknet-19主干。当使用PASCAL VOC数据集时,YOLOv2预测了5个边界框,每个边界框都有5个值和20个类。对象分类头用一个包含1000个过滤器的单一卷积层替换了最后四个卷积层,然后是一个全局平均池化层和一个Softmax。
YOLO9000 is a stronger YOLOv2
作者在同一篇论文中介绍了一种训练联合分类和检测的方法。它利用COCO [37]的检测标记数据学习边界框坐标和ImageNet的分类数据,增加可以检测的类别数量。在训练过程中,他们将两个数据集组合起来,当使用检测训练图像时,它反向传播检测网络,当使用分类训练图像时,它反向传播体系结构的分类部分。结果是一个YOLO模型能够检测超过9000个类别,因此命名为YOLO9000。
YOLOv3
《YOLOv3 [46]》于2018年由约瑟夫·雷德蒙和阿里·法哈迪在ArXiv杂志上发表。它包括重大的变化和一个更大的架构,以与最先进的,同时保持实时性能。在下面,我们描述了关于YOLOv2的变化。
1. Bounding box prediction 与YOLOv2一样,该网络为每个边界框tx、ty、tw和th预测四个坐标;然而,这一次,YOLOv3使用逻辑回归预测了每个边界框的客观性得分。与地面真实值重叠最高的锚盒为1,其余锚盒为0。与更快的R-CNN [45]相比,YOLOv3只为每个地面真实对象分配一个锚定框。此外,如果没有将锚定盒分配给一个对象,它只会导致分类损失,而不会导致定位损失或置信度损失。
2. Class Prediction 他们没有使用softmax来进行分类,而是使用二元交叉熵来训练独立的逻辑分类器,并将这个问题作为一个多标签分类来提出。这种更改允许为同一个框分配多个标签,这可能会发生在一些带有重叠标签的复杂数据集[47]上。例如,同一对象可以是人和一个人。
3. New backbone YOLOv3具有一个更大的特征提取器,由53个卷积层和剩余连接层组成。第6.1节更详细地描述了该体系结构。
4. Spatial pyramid pooling (SPP) 虽然在论文中没有提到,作者还在主干中添加了一个修改的SPP块[48],它连接多个最大池输出而没有子采样(步幅= 1),每个都有不同的内核大小,其中k = 1,5,9,13允许更大的接受域。这个版本被称为YOLOv3-spp,是性能最好的、将AP50提高了2.7%的版本。
5. Multi-scale Predictions 与特征金字塔网络[49]类似,YOLOv3预测了三个不同尺度上的三个盒子。第6.2节详细描述了多尺度预测机制。
6. Bounding box priors 与YOLOv2一样,作者还使用k-means来确定锚框的边界框先验。不同之处在于,在YOLOv2中,他们对每个单元格总共使用了五个之前的盒子,而在YOLOv3中,他们为三个不同的尺度使用了三个之前的盒子。
YOLOv3 Architecture
YOLOv3中提供的架构主干称为Darknet-53。它用分层卷积和添加剩余连接替换了所有最大池层。它总共包含53个卷积层。图8显示了体系结构的细节。
图8: YOLOv3 Darknet-53主干。YOLOv3的体系结构由53个卷积层组成,每个层都有批处理归一化和泄漏的ReLU激活。此外,剩余连接将横跨整个网络的1×1卷积的输入与3×3卷积的输出连接起来。这里显示的体系结构只包括主干;它不包括由多尺度预测组成的检测头。
YOLOv3 Multi-Scale Predictions
除了一个更大的架构之外,YOLOv3的一个基本特性是多尺度的预测,即在多种网格大小下的预测。这有助于获得更精细的详细的方框,并显著提高了对小物体的预测,这是YOLO以前版本的主要弱点之一。
图9所示的多尺度检测体系结构的工作原理如下:标记为y1的第一个输出相当于YOLOv2输出,其中一个13×13网格定义了输出。第二输出y2通过将暗网-53的(Res×4)之后的输出与之后的输出(Res×8)连接而组成。特征图有不同的大小,即13×13和26×26,所以在连接之前有一个上采样操作。最后,使用上采样操作,第三个输出y3将26个×26特征图与52个×52特征图连接起来。
为80类别的数据集,每个规模提供了一个输出张量的形状N×N×[3×(4+1+80)]N×N特征的大小地图(或网格细胞),3表示每个细胞和4 + 1包括四个坐标和客观的得分。
图9: YOLOv3多尺度检测架构。Darknet-53主干的输出被分支到三个不同的输出,分别标记为y1、y2和y3,每个输出都提高了分辨率。最终的预测盒子使用非最大抑制进行过滤。CBL(卷积-批规范-泄漏ReLU)块包括一个具有批归一化和泄漏ReLU的卷积层。Res块由一个CBL和两个具有残余连接的CBL结构组成,如图8所示。
YOLOv3 Results
当YOLOv3发布时,目标检测的基准已经从帕斯卡VOC改为微软COCO [37]。因此,从这里开始,所有的YOLOs都在MS COCO数据集中进行评估。在20 FPS条件下,YOLOv3-spp和YOLOv3-spp实现了36.2%的平均精度AP和AP50的60.6%,实现了当时最先进的技术和更快的2×。
Backbone, Neck, and Head
此时,物体探测器的结构开始分为三部分来描述:主干、颈部和头部。图10显示了一个高级的主干、颈部和头部图。
骨干人员负责从输入的图像中提取有用的特征。它通常是一个卷积神经网络(CNN)训练的大规模图像分类任务,如ImageNet。主干捕获不同尺度的层次特征,在较早层次提取较低级特征(如边缘和纹理),在较深层次提取较高层次特征(如对象部分和语义信息)。
颈部是连接主干和头部的中间组成部分。它对主干提取的特征进行聚合和细化,通常侧重于在不同尺度上增强空间和语义信息。颈部可能包括额外的卷积层,特征金字塔网络(FPN)[49],或其他机制来改善特征的表示。
头部是物体探测器的最后一个组成部分;它负责根据主干和颈部提供的特征做出预测。它通常由一个或多个特定于任务的子网组成,这些子网分别执行分类、定位,以及最近进行的实例分割和姿态估计。头部处理颈部提供的特征,为每个候选对象生成预测。最后,一个后处理步骤,如非最大抑制(NMS),过滤掉重叠的预测,只保留最自信的检测。
在其余的YOLO模型中,我们将使用主干、颈部和头部来描述架构。
图10:现代物体探测器的体系结构可以描述为主干、颈部和头部。主干,通常是一个卷积神经网络(CNN),从不同尺度的图像中提取重要特征。颈部细化了这些特征,增强了空间和语义信息。最后,头部使用这些改进的特征来进行目标检测预测。
YOLOv4
两年过去了,现在已经没有新版本的约罗了。直到2020年4月,博奇科夫斯基、王建耀和廖宏源才在ArXiv上发布了为YOLOv4 [50]的报纸。起初,不同的作者提出了一个新的“官方”版本的YOLO;然而,YOLOv4保持了相同的YOLO哲学——实时、开源、单镜头和暗网框架——改进是如此令人满意,以至于社区迅速接受这个版本作为官方的YOLOv4。
YOLOv4试图通过尝试许多分为免费赠品包和特价赠品包的变化来找到最佳的平衡。免费赠品包是一种只改变训练策略、增加训练成本而不增加推理时间的方法,其中最常见的是数据增强。另一方面,特殊包是一种稍微增加推理成本但显著提高准确性的方法。这些方法的例子是扩大接受野[48,51,52],结合特征[53,49,54,55],和后处理[56,40,57,58]等。
我们对YOLOv4的主要变化进行了如下几点的总结:
An Enhanced Architecture with Bag-of-Specials (BoS) Integration 作者尝试了多种主干架构,如ResNeXt50 [59]、高效net-B3[60]和Darknet-53。性能最好的架构是对Darknet-53的修改,使用跨阶段部分连接(CSPNet)[61],和Mish激活函数[57]作为主干(见图11。对于颈部,他们使用了YOLOv3-spp中修改版本的空间金字塔池(SPP)[48]和YOLOv3中的多尺度预测,但使用了修改版本的路径聚合网络(PANet)[62]而不是FPN,以及改进版本的空间注意模块(SAM)[63]。最后,对于检测头,他们使用YOLOv3中的锚。因此,该模型被称为CSPDarknet53-PANet-SPP。添加到Darknet-53中的跨阶段部分连接(CSP)有助于降低模型的计算量,同时保持相同的精度。SPP块,如YOLOv3-spp在增加接受域而不影响推理速度。修改后的PANet连接了这些特性,而不是像原来的PANet论文中那样添加它们。
Integrating bag-of-freebies (BoF) for an Advanced Training Approach. 除了常规的增强,如随机亮度、对比度、缩放、裁剪、翻转和旋转,作者实现了马赛克增强,将四个图像组合成一个,允许检测常规环境之外的对象,也减少了对大型小批量批量标准化的需要。为了正则化,他们使用了DropBlock [64],它可以代替Dropout[65],但可以用于卷积神经网络以及类标签平滑[66,67]。对于检测器,他们添加了CIoU损失[68]和Cross mini-bath normalization(CmBN),用于从整个批次收集统计数据,而不是像常规批次归一化[69]那样从单个小批次收集统计数据。
Self-adversarial Training (SAT) 为了使模型对扰动更具鲁棒性,对输入图像进行对抗性攻击,以制造一种欺骗,即地面真实对象不在图像中,而是保留原始标签以检测正确的对象。
基于遗传算法的超参数优化 为了找到用于训练的最优超参数,他们在前10%的周期上使用遗传算法,以及余弦退火调度器[70]来改变训练期间的学习速率。它开始缓慢地降低学习率,然后在训练过程的中途迅速减少,最后有轻微的减少。
图11:用于对象检测的YOLOv4架构。图中的模块是CMB:卷积+批处理归一化+ Mish激活,CBL:卷积+批处理归一化+ Leaky ReLU,UP:上采样,SPP:空间金字塔池,和PANet:路径聚合网络。图灵感来自[71]。
Table 3 lists the final selection of BoFs and BoS for the backbone and the detector表3列出了主干和检测器的bof和BoS的最终选择
在MS COCO数据集测试-dev2017上进行评估,YOLOv4在NVIDIA V100上在超过50 FPS时达到43.5%,AP50为65.7%。
Table 3: YOLOv4 final selection of bag-of-freebies (BoF) and bag-of-specials (BoS). BoF are methods that increase
performance with no inference cost but longer training times. On the other hand, BoS are methods that slightly increase
the inference cost but significantly improve accuracy.
表3:YOLOv4免费赠品包(BoF)和特价赠品包(BoS)的最终选择。BoF是在没有推理成本但更长训练时间的情况下提高性能的方法。另一方面,BoS是一种略微提高推理成本但显著提高精度的方法。
YOLOv5
YOLOv5 [72]是在YOLOv4之后的2020年几个月由格伦·乔彻发布的。它使用了YOLOv4部分中描述的许多改进,但都是在Pytorch而不是 Darknet中开发的。YOLOv5集成了一种被称为自动锚定的超催化算法。如果这个训练前工具检查和调整锚框不适合数据集和训练设置,如图像大小。它首先对数据集标签应用一个k-means函数,以生成遗传进化(GE)算法的初始条件。然后,GE算法在默认情况下发展这些锚点超过1000代,使用CIoU损失[68]和最佳可能召回作为其适应度函数。图12显示了YOLOv5的详细架构。
YOLOv5 Architecture
主干是一个改进的CSPDarknet53,它从茎开始,这是一个具有大窗口大小的分层卷积层,以减少内存和计算成本;然后是卷积层,从输入图像中提取相关特征。SPPF(空间金字塔快速池)层和下面的卷积层在不同的尺度上处理特征,而上采样层提高了特征图的分辨率。SPPF层的目的是通过将不同尺度的特征汇集到一个固定大小的特征图中,来加快网络的计算速度。每个卷积之后都进行批归一化(BN)和SiLU激活[73]。颈部使用SPPF和改良的CSP-PAN,而头部类似于YOLOv3。
YOLOv5使用了一些增强,如马赛克,复制粘贴[74],随机仿射,MixUp [75],HSV增强,随机水平翻转,以及来自蛋白包[76]的其他增强。它还提高了网格的灵敏度,使其对失控的梯度更稳定。
YOLOv5提供了5个缩放版本: YOLOv5n(nano)、YOLOv5s(小)、YOLOv5m(中)、YOLOv5l(大)和YOLOv5x(特大号),其中卷积模块的宽度和深度不同,以适应特定的应用和硬件要求。例如,YOLOv5n和YOLOv5s是针对低资源设备的轻量级模型,而YOLOv5x是为高性能而优化的,尽管以牺牲速度为代价。
在撰写本文时,YOLOv5发布的版本是v7.0,其中包括能够进行分类和实例分割的YOLOv5版本。
YOLOv5是开源的,由超催化技术积极维护,有超过250个贡献者和新的改进。YOLOv5易于使用、培训和部署。超催化技术为iOS和Android提供了一个移动版本,以及许多用于标签、培训和部署的集成。
Figure 12: YOLOv5 Architecture. The architecture uses a modified CSPDarknet53 backbone with a Stem, followed by
convolutional layers that extract image features. A spatial pyramid pooling fast (SPPF) layer accelerates computation by
pooling features into a fixed-size map. Each convolution has batch normalization and SiLU activation. The network’s
neck uses SPPF and a modified CSP-PAN, while the head resembles YOLOv3. Diagram based in [77] and [78].图12:YOLOv5体系结构。该架构使用了一个改进的CSPDarknet53主干和一个茎,然后是提取卷积层的图像特征。空间金字塔快速池化(SPPF)层通过将特征池化到一个固定大小的地图中来加速计算。每个卷积都有批处理标准化和SiLU激活。该网络的颈部使用了SPPF和一个改进的CSP-PAN,而头部类似于YOLOv3。基于[77]和[78]中的图表。
在MS COCO数据集测试-dev2017上进行评估,YOLOv5x在图像大小为640像素时获得了50.7%的AP。使用32的批大小,它可以在NVIDIA V100上实现200 FPS的速度。使用更大的1536像素的输入大小和测试时间增强(TTA),YOLOv5实现了55.8%的AP。
Scaled-YOLOv4
在YOLOv4出现一年后,同样的作者在CVPR 2021中提出了Scaled-YOLOv4 [79]。与YOLOv4不同的是,缩放的YOLOv4是在Pytirch而不是Darknet中开发的。主要的新颖之处是引入了放大和缩小技术。放大意味着产生一个以较低速度为代价提高精度的模型;另一方面,缩小规模需要产生一个提高速度而牺牲精度的模型。此外,缩小后的模型需要更少的计算能力,并且可以在嵌入式系统上运行。
缩小的架构称为YOLOv4-tini;它是为低端gpu设计的,可以在Jetson TX2上以46 FPS运行,在RTX2080Ti上以440 FPS运行,在MS COCO上达到22%的AP。
扩展的模型架构被称为YOLOv4-large,它包括三种不同大小的P5、P6和P7。该架构是为云GPU设计的,并实现了最先进的性能,超过了之前所有型号的[80,81,82],在MS COCO上的使用性能为56%。
YOLOR
YOLOR [83]于2021年5月由YOLOv4的同一研究团队在ArXiv上发表。它代表你只学习一种表示。在本文中,作者采用了一种不同的方法;他们开发了一种多任务学习方法,旨在通过学习一般表示和使用子网络创建特定任务的表示,为各种任务(例如,分类、检测、姿态估计)创建一个单一模型。由于传统的联合学习方法经常导致次优特征生成,YOLOR的目标是通过编码神经网络的隐式知识以应用于多个任务来克服这一问题,类似于人类利用过去的经验来处理新问题的方式。结果表明,将内隐知识引入神经网络有利于所有任务的完成。
在MS COCO数据集测试-dev2017上评估,YOLOR在NVIDIA V100上以30 FPS实现了55.4%,AP50为73.3%。
YOLOX
YOLOX [84]于2021年7月由Megvii技术公司在ArXiv网站上发表。它在Pytolch中开发,使用超催化的YOLOV3作为起点,它有五个主要的变化:无锚架构,多个积极,解耦的头,高级标签分配,和强大的增强。它在2021年取得了最先进的结果,在速度和精度之间达到了50.1%的AP,在特斯拉V100之间的最佳平衡。下面,我们描述了YOLOX相对于YOLOv3的五个主要变化:
1. Anchor-free 自从YOLOv2以来,所有后续的YOLO版本都是基于锚点的检测器。YOLOX受到无锚最先进的对象检测器,如网络Net[85]、CenterNet [86]和FCOS [87]的启发,回到了无锚架构,简化了训练和解码过程。无锚点比YOLOv3基线增加了0.9个点。
2. Multi positives. 为了弥补产生的锚缺乏的巨大失衡,作者使用中心采样[87],他们将中心3×3区域指定为阳性。这种方法使AP提高了2.1个百分点。
3. Decoupled head 在[88,89]中,分类置信度和定位精度之间可能存在偏差。因此,YOLOX将这两个头分成两个头(如图13所示),一个用于分类任务,另一个用于回归任务,使AP提高1.1点,提高模型的收敛速度。
4. Advanced label assignment 在[90]中,研究表明,当多个对象的盒子重叠时,地面真实标签的分配可能会有歧义,并将分配过程表示为一个最优传输(OT)问题。受这项工作的启发,YOLOX提出了一个名为simOTA的简化版本。这一变化使AP增加了2.3个百分点。
5. Strong augmentations YOLOX使用MixUP [75]和马赛克增强器。作者发现,在使用这些增强功能后,ImageNet的预训练不再有益。强劲的增强使AP增加了2.4个百分点。
Figure 13: YOLOv3头和YOLOX解耦头之间的区别。对于FPN的每一层,他们使用1×1卷积层将特征通道减少到256,然后添加两个并行分支,每个分支有两个3×3卷积层,用于类置信度(分类)和定位(回归)任务。IoU分支被添加到回归头中。
YOLOv6
YOLOv6 [91]于2022年9月在ArXiv上发布。该网络设计包括一个带有RepVGG或CSPStackRep块的高效主干、一个PAN拓扑颈部和一个具有混合通道策略的高效解耦头。此外,本文还介绍了使用训练后量化和通道级蒸馏的增强量化技术,从而产生了速度更快、更准确的检测器。总的来说,YOLOv6在精度和速度指标上优于以前最先进的模型,如YOLOv5、YOLOX和PP-YOLOE。
图14显示了YOLOv6的详细架构。
该模型的主要新颖性总结如下:
1. A new backbone based on RepVGG 它使用了比以前的YOLO骨干更高的并行性。对于颈部,他们使用PAN [62]增强的RepBlocks修复块[92]或CSPStackRep[61]块的较大的模型。在YOLOX之后,他们开发了一种高效的decoupled head解耦头。
2. Label assignment 使用在TOOD [94]中引入的任务对齐学习方法。
3. New classification and regression losses 他们使用了classification VariFocal loss分类变异病灶损失[95]和SIoU [96]/GIoU [97]回归损失。
4. A self-distillation 针对回归和分类任务的策略。
5. A quantization scheme 用于使用RepOptimizer重新优化器[98]和channel-wise distillation通道蒸馏[99],帮助实现更快的检测器。
作者提供了8个缩放模型,从YOLOv6-N到YOLOv6-L6。在MS COCO数据集测试-dev2017上,最大的模型,在NVIDIA Tesla T4上以约29 FPS达到了57.2%的AP。
YOLOv7
YOLOv7 [100]是由YOLOv4和YOLOR的同一作者于2022年7月在ArXiv杂志上发表。当时,它在速度和精度在5 FPS到160 FPS的范围内超过了所有已知的物体探测器。与YOLOv4一样,它只使用MS COCO数据集进行训练,而没有经过预先训练的骨干。YOLOv7提出了一些架构更改和一系列免费赠品,它们在不影响推理速度的情况下提高了准确性,而只提高了训练时间。
图15显示了YOLOv7的详细架构。
YOLOv7的体系结构变化如下:
图14:YOLOv6体系结构。该架构使用了一个新的主干,并使用RepVGG块[92]。空间金字塔池快速(SPPF)和Conv模块类似于YOLOv5。然而,YOLOv6使用了一个解耦的头。基于[93]的图。
Extended efficient layer aggregation network (E-ELAN) 。ELAN [102]是一种通过控制最短最长梯度路径,允许深度模型更有效地学习和收敛的策略。YOLOv7提出了E-ELAN,它适用于具有无限堆叠计算块的模型。E-ELAN通过变换和合并基数来结合不同组的特征,在不破坏原始梯度路径的情况下增强网络的学习能力。
Model scaling for concatenation-based models。缩放是通过调整一些模型属性来生成不同大小的模型的。YOLOv7的体系结构是一种基于连接的体系结构,其中标准的缩放技术,如深度缩放,会导致过渡层的输入通道和输出通道之间的比率变化,进而导致模型的硬件使用的减少。YOLOv7提出了一种新的基于连接的模型缩放策略,其中块的深度和宽度用相同的因子进行缩放,以保持模型的最优结构。
The bag-of-freebies used in YOLOv7 include:
Planned re-parameterized convolution。与YOLOv6一样,YOLOv7的体系结构也受到了重新参数化卷积(RepConv)[92]的启发。然而,他们发现RepConv中的身份连接破坏了ResNet [53]中的残差和DenseNet [103]中的连接。因此,他们删除了身份连接,并称之为RepConvN。
Coarse label assignment for auxiliary head and fine label assignment for the lead head。 lead head负责最终的输出,而auxiliary head辅助头协助训练。
Batch normalization in conv-bn-activation。这将批归一化的均值和方差整合到推理阶段卷积层的偏差和权重中。
Implicit knowledge。灵感来自YOLOR [83]。
Exponential moving average。作为最终的推理模型。
图15:YOLOv7体系结构。该体系结构的变化包括ELAN块,它通过改组和合并基数来结合不同组的特征,以增强模型学习和修改没有身份连接的RepVGG。基于[101]的图。
与YOLOv4和YOLOR的比较
在本节中,我们将重点介绍YOLOv7与之前由相同作者开发的YOLO模型相比的增强功能。与YOLOv4相比,YOLOv7实现了7次减少75%的参数,计算减少了36%,同时平均精度(AP)提高了1.5%。与YOLOv4-tiny相比,YOLOv7-tity在保持相同的AP的同时,分别将参数和计算量减少了39%和49%。最后,与YOLOR相比,YOLOv7的参数数量和计算量分别减少了43%和15%,AP略有增加了0.4%。
在MS COCO数据集测试-dev2017上进行评估,YOLOv7-E6在NVIDIA V100上,输入大小为1280像素,速度为50FPS,AP为55.9%,AP50为73.5%。
DAMO-YOLO
DAMO-YOLO [104]于阿里巴巴集团于2022年11月在ArXiv上发布。受当前技术的启发,DAMO-YOLO包括以下内容:
1. A Neural architecture search (NAS).他们使用了阿里巴巴开发的一种名为MAE-NAS [105]的方法来自动找到一个高效的架构。
2. A large neck.受女朋友Det[106]、CSPNet [61]和ELAN [102]的启发,作者设计了一种可以实时工作的颈部,称为高效-repgfPN。
3. A small head.作者发现,大颈和小颈可以产生更好的性能,他们只留下一个线性层用于分类,另一个层用于回归。他们称这种方法为零头。
4. AlignedOTA label assignment. 动态标签分配方法,如OTA[90]和TOOD[94],由于其相对于静态方法的显著改进而获得了流行。然而,分类和回归之间的失调仍然是一个问题,部分原因是分类和回归损失之间的不平衡。为了解决这个问题,他们的木质方法将焦损失[81]引入分类成本,并使用预测和地面真实盒的IoU作为软标签,能够为每个目标选择对齐的样本,并从全局的角度解决问题。
5. Knowledge distillation.他们提出的策略包括两个阶段:第一阶段教师指导学生,第二阶段学生独立微调。此外,他们在蒸馏方法中加入了两个增强功能:对齐模块,使学生特征适应与教师相同的分辨率;通道动态温度,使教师和学生特征正常化,以减少真实价值差异的影响。
作者生成了名为DAMO-YOLO-Tiny/小/Medium的比例模型,最佳模型在NVIDIA V100上以233 FPS的速度实现了50.0 %的AP。
** YOLOv8**
YOLOv8 [107]于2023年由开发YOLOv5的超催化公司于2023年1月发布。YOLOv8提供了5个缩放版本: YOLOv8n(nano)、YOLOv8((小)、YOLOv8m(中)、YOLOv8l(大号)和YOLOv8x(特大号)。YOLOv8支持多种视觉任务,如目标检测、分割、姿态估计、跟踪和分类。
YOLOv8 Architecture
图16显示了YOLOv8的详细架构。YOLOv8使用了与YOLOv5类似的主干,并在CSPLayer上进行了一些更改,现在称为C2f模块。C2f模块(具有两个卷积的跨阶段部分瓶颈)结合了高级特征和上下文信息,以提高检测精度。
YOLOv8使用一个带有解耦头的无锚模型来独立地处理客观性、分类和回归任务。这种设计允许每个分支专注于其任务,并提高了模型的整体精度。在YOLOv8的输出层中,他们使用sigmod函数作为目标得分的激活函数,表示边界框包含对象的概率。它对类的概率使用softmax函数,表示属于每个可能的类的对象的概率。
YOLOv8使用CIoU [68]和DFL [108]损失函数表示边界框损失,使用二值交叉熵表示分类损失。这些损失提高了目标检测性能,特别是在处理较小的对象时。
YOLOv8还提供了一个名为YOLOv8-Seg模型的语义分割模型。其主干是一个CSPDarknet53特征提取器,然后是一个C2f模块,而不是传统的YOLO颈部结构。C2f模块之后是两个分割头,它们学习预测输入图像的语义分割掩码。该模型具有与YOLOv8相似的检测头,由5个检测模块和一个预测层组成。YOLOv8-Seg模型在各种对象检测和语义分割基准测试上取得了最先进的结果,同时保持了高速和效率。
YOLOv8可以从命令行界面(CLI)运行,也可以作为PIP包安装。此外,它还提供了针对标签、培训和部署的多种集成。
在MS COCO数据集测试-dev2017上评估,YOLOv8x在图像大小为640像素的情况下(相同输入大小的YOLOv5以280帧的速度为50.7%)。
PP-YOLO, PP-YOLOv2, and PP-YOLOE
PP-YOLO模型已经与我们描述的YOLO模型相平行。然而,我们决定将它们分组在一个单独的部分中,因为它们从YOLOv3开始,并且在之前的PP-YOLO版本上逐步改进。然而,这些模型已经对YOLO的演变产生了影响。类似于YOLOv4和YOLOv4的PP-YOLO [82]是基于YOLOv3的。百度公司的研究人员于2020年7月在ArXiv网站上发表了该报告。作者使用了桨桨[110]深度学习平台,因此得名PP。按照我们从YOLOv4开始看到的趋势,PP-YOLO增加了10个现有的技巧来提高探测器的准确性,保持速度不变。作者认为,本文并不是要介绍一种新的目标探测器,而是要展示如何逐步建立一个更好的探测器。PP-YOLO使用的大多数技巧都与YOLOv4中使用的技巧不同,而那些重叠的技巧则使用了不同的实现。PP-YOLO对YOLOv3的变化如下:
1. A ResNet50-vd backbone 在最后阶段用可变形卷积[111]增强的架构和改进的预训练模型替代黑暗主干,该模型在MmageNet上具有更高的分类精度。这个体系结构被称为ResNet5-vd-dcn。
2. A larger batch size 为了提高训练的稳定性,他们从64增加到192,同时更新了训练时间表和学习率。
3. Maintained moving averages 对于训练过的参数,并使用它们,而不是最终的训练值。
4. DropBlock 仅适用于FPN。
5. An IoU loss 在另一个分支中添加一个物单位损失和l1损失作为边界盒回归。
6. An IoU prediction branch 增加了一个IoU预测分支来测量定位精度和一个IoU感知损失。在推理过程中,YOLOv3将分类概率和客观得分相乘计算最终检测,PP-YOLO还将预测的IoU乘考虑定位精度。
7. Grid Sensitive approach 采用类似YOLOv4的网格敏感方法改进网格边界的边界盒中心预测。
8. Matrix NMS 使用了Matrix NMS [112],可以并行运行,比传统NMS更快。
9. CoordConv CoordConv [113]用于FPN的1×1卷积,以及在检测头的第一个卷积层上。CoordConv允许网络学习平移不变性,改进了检测定位。
10. Spatial Pyramid Pooling 空间金字塔池只在顶部的特征图上使用,以增加主干的接受域。
图16:YOLOv8体系结构。该架构使用了一个改进的CSPDarknet53主干。C2f模块取代了YOLOv5中使用的CSPLayer。空间金字塔池(SPPF)层通过将特征池化到固定大小的地图来加速计算。每个卷积都有批处理标准化和SiLU激活。头部被解耦为独立地处理客观性、分类和回归任务。基于[109]的图。
PP-YOLO augmentations and preprocessing
PP-YOLO使用了以下增强功能和预处理功能:
1.混合训练[75]的权重采样从Beta(α,β)分布,其中α = 1.5和β = 1.5。
2.随机颜色失真。
3.随机展开。
4.随机裁剪和随机翻转,概率为0.5。
5.RGB通道z-score归一化,平均值为[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数据集测试-dev2017上进行评估,PP-YOLO的NVIDIA V100在73 FPS下实现了45.9%,AP50为65.2%。
PP-YOLOv2
PP-YOLOv2 [114]于2021年4月发表在ArXiv上,并对PP-YOLO进行了4项改进,将NVIDIA V100上的性能从45.9% AP提高到69 FPS时的49.5% AP。PP-YOLOv2对PP-YOLO的变化如下:
1.主干从ResNet50更改为ResNet101。
2. Path aggregation network (PAN) instead of FPN similar to YOLOv4.
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感知损失计算的计算。
PP-YOLOE
PP-YOLOE [115]于2022年3月在ArXiv杂志上发表。它在PP-YOLOv2上增加了改进,在NVIDIA V100上以78.1 FPS实现了51.4% AP的性能。图17显示了一个详细的体系结构图。PP-YOLOE对PP-YOLOv2的主要变化有:
1. Anchor-free. 根据[87,86,85,84]工作驱动的时间趋势,PP-YOLOE使用无锚架构。
2. New backbone and neck. 受TreeNet [116]的启发,作者用结合残余和密集连接的修复块修改了主干和颈部的结构。
3. Task Alignment Learning (TAL). YOLOX是第一个提出任务错位问题的人,在那里分类置信度和位置精度在所有情况下都不一致。为了减少这个问题,PP-YOLOE实现了在TOOD [94]中提出的TAL,其中包括一个动态标签分配和一个任务对齐损失。
4. Efficient Task-aligned Head (ET-head). 与YOLOX解耦分类头和位置头不同,PP-YOLOE使用了基于TOOD的单个头来提高速度和准确性。
5. Varifocal (VFL) and Distribution focal loss (DFL). VFL [95]对阳性样本的目标评分的权重降低,给那些智商高的人更高的权重。这将在训练过程中优先考虑高质量的样本。类似地,两者都使用iou感知的分类评分(IACS)作为目标,允许分类和定位质量的联合学习,从而导致训练和推理之间的一致性。另一方面,DFL [108]将焦点损失从离散标签扩展到连续标签,能够成功地优化结合质量估计和类预测的改进表示。这允许准确地描述真实数据中的灵活分布,消除了不一致的风险。
Figure 17: PP-YOLOE Architecture. The backbone is based on CSPRepResNet, the neck uses a path aggregation
network, and the head uses ES layers to form an Efficient Task-aligned Head (ET-head). Diagram based in [117].图17: PP-YOLOE架构。主干基于CSPRepResNet,颈部使用路径聚合网络,头部使用ES层形成一个高效的任务对齐头部(ET-head)。基于[117]中的图表。
与之前的YOLO版本一样,作者通过改变主干和颈部的宽度和深度来生成多个缩放模型。这些模型被称为PP-YOLOE-s(小)、PP-YOLOE-m(中)、PP-YOLOE-l(大)和PP-YOLOE-x(超大)。
YOLO-NAS
YOLO-NAS [118]由Deci公司于2023年5月发布,该公司是一家开发生产级模型和工具来构建、优化和部署深度学习模型的公司。YOLO-NAS旨在检测小物体,提高定位精度,提高计算性能比,使其适合实时边缘设备应用。此外,它的开源体系结构也可用于研究用途。
YOLO-NAS的新颖之处包括:
量化感知模块[119]被称为QSP和QCI,它们结合了8位量化的重新参数化,以最小化训练后量化过程中的精度损失。
使用AutoNAC的自动架构设计,Deci的专有NAS技术。
混合量化方法,有选择地量化模型的某些部分,以平衡延迟和准确性,而不是标准量化,即所有层都受到影响的标准量化。
一个具有自动标记数据、自蒸馏和大型数据集的预训练方案。
AutoNAC系统在创建YOLO-NAS方面发挥了重要作用,它是通用的,可以容纳任何任务、数据的细节、进行推断的环境和性能目标的设置。它帮助用户识别出最合适的结构,为他们的特定用途提供了精度和推理速度的完美混合。该技术考虑数据和硬件以及推理过程中涉及的其他元素,如编译器和量化。此外,在NAS过程中,RepVGG块被整合到模型架构中,以与训练后量化(PTQ)兼容。他们通过改变QSP和QCI块的深度和位置生成了三种架构: YOLO-NASS、YOLO-NASM和YOLO-NASL(分别为小、中、大的S、M、L)。图18显示了YOLO-NASL的模型架构。
图18: YOLO-NAS架构。该体系结构通过一个称为AutoNAC的神经体系结构搜索(NAS)系统自动找到,以平衡延迟和吞吐量。他们生成了三种架构,分别称为YOLO-NASS(小)、YOLO-NASM(中)和YOLO-NASL(大),它们改变了QSP和QCI块的深度和位置。图中显示了YOLO-NASL架构。
表4:YOLO体系结构的摘要。YOLO和YOLOv2的指标在2007年VOC2007,其余的在CO17年COCO。所报告的NAS-YOLO模型具有16位精度。
该模型在对象365[120]上进行预训练,其中包含200万张图像和365个类别,然后使用COCO数据集生成伪标签。最后,利用COCO数据集的原始118k训练图像对模型进行训练。
在本文中,在FP32、FP16和INT8中发布了三种YOLO-NAS模型,在MS COCO上以16位精度实现了52.2%的AP。
Discussion
本文研究了16个YOLO版本,从原始的YOLO模型到最近的YOLO-NAS。表4提供了所讨论的YOLO版本的概述。从这个表中,我们可以确定以下几个关键的模式:
Anchors:最初的YOLO模型相对简单,不使用锚点,而最先进的模型依赖于带有锚点的两级探测器。YOLOv2结合了锚点,从而提高了边界盒的预测精度。这一趋势持续了五年,直到YOLOX引入了一种无锚的方法,取得了最先进的结果。从那时起,随后的YOLO版本已经放弃了锚点的使用。
Framework:最初,YOLO是使用暗网框架开发的,随后的版本也是如此。然而,当超催化技术将YOLOv3移植到PyTorch时,其余的YOLO版本都是使用PyTorch开发的,这导致了增强功能的激增。另一种使用的深度学习语言是桨,这是最初由百度开发的开源框架。
Backbone:随着时间的推移,YOLO模型的主干架构发生了重大变化。从由简单卷积和最大池化层组成的暗网结构开始,后来的模型在YOLOv4中包含跨阶段部分连接(CSP),在YOLOv6和YOLOv7中重新参数化,在DAMO-YOLO和YOLO-NAS中合并神经结构搜索。
Performance: 虽然YOLO模型的性能随着时间的推移而有所改善,但值得注意的是,它们通常优先考虑平衡速度和准确性,而不是仅仅专注于准确性。这种权衡对于YOLO框架是至关重要的,它允许跨各种应用程序进行实时对象检测。
Tradeoff between speed and accuracy在速度和准确性之间的权衡
YOLO系列的目标检测模型一直专注于平衡速度和准确性,旨在在不牺牲检测结果的质量的情况下提供实时性能。随着YOLO框架通过其各种迭代不断发展,这种权衡是一个反复出现的主题,每个版本都试图以不同的方式优化这些相互竞争的目标。在原始的YOLO模型中,主要的重点是实现高速目标检测。该模型利用一个单一的卷积神经网络(CNN)来直接预测物体的位置和目标的位置从输入图像中获得的类,从而启用实时处理。然而,这种对速度的强调导致了准确性上的妥协,主要是在处理小物体或有重叠边界框的物体时。
随后的YOLO版本引入了改进和增强,以解决这些限制,同时维护框架的实时功能。例如,YOLOv2(YOLO9000)引入了锚定盒和直通层,以提高对象的定位,从而获得更高的精度。此外,YOLOv3通过使用多尺度特征提取体系结构提高了模型的性能,允许在不同尺度上进行更好的对象检测。
随着YOLO框架的发展,速度和准确性之间的权衡变得更加微妙。像YOLOv4和YOLOv5这样的模型引入了创新,如新的网络骨干、改进的数据增强技术和优化的训练策略。这些发展导致了精度的显著提高,而没有显著影响模型的实时性能。
从YOLOv5开始中,所有官方的YOLO模型都调整了速度和准确性之间的权衡,提供了不同的模型规模,以适应特定的应用程序和硬件需求。例如,这些版本通常提供针对边缘设备优化的轻量级模型,以降低计算复杂度和更快的处理时间。
** The future of YOLO**
随着YOLO框架的不断发展,我们预计以下趋势和可能性将影响未来的发展:
Incorporation of Latest Techniques。研究人员和开发人员将继续通过利用深度学习、数据增强和训练技术中的最先进的方法来改进YOLO架构。这个正在进行的创新过程可能会提高模型的性能、鲁棒性和效率。
Benchmark Evolution.当前评估目标检测模型的基准,COCO 2017,可能最终会被一个更先进和更具挑战性的基准所取代。这反映了从前两个YOLO版本中使用的VOC 2007基准测试的转变,反映了随着模型变得更加复杂和准确,对更苛刻的基准测试的需求。
Proliferation of YOLO Models and Applications.随着YOLO框架的进展,我们预计将看到每年发布的YOLO模型数量的增加,以及应用程序的相应扩展。随着该框架变得更加通用和强大,它很可能会被应用于更多样化的领域,从家用电器设备到自动驾驶汽车。
Expansion into New Domains.YOLO模型有潜力扩展到目标检测和分割之外,探索视频中的目标跟踪和三维关键点估计等领域。在未来,我们预计YOLO模型将过渡到多模态框架,结合视觉和语言、视频和声音处理。随着这些模型的发展,它们可能作为迎合更广泛的计算机视觉和多媒体任务的创新解决方案的基础。
Adaptability to Diverse Hardware.YOLO模型将进一步跨越硬件平台,从物联网设备到高性能计算集群。这种适应性将支持在各种上下文中部署YOLO模型,这取决于应用程序的需求和约束。此外,通过定制模型以适应不同的硬件规格,YOLO可以为更多的用户和行业提供访问和有效。
Acknowledgments
我们要感谢国家科学技术委员会(CONACYT)通过国家研究系统(SNI)提供的支持。