YOLOv1 to YOLOv10:
The fastest and most accurate real-time object detection systems
This is a comprehensive review of the YOLO series of systems. Different from previous literature surveys, this review article re-examines the characteristics of the YOLO series from the latest technical point of view. At the same time, we also analyzed how the YOLO series continued to influence and promote real-time computer vision-related research and led to the subsequent development of computer vision and language models. We take a closer look at how the methods proposed by the YOLO series in the past ten years have affected the development of subsequent technologies and show the applications of YOLO in various fields. We hope this article can play a good guiding role in subsequent real-time computer vision development.
这是一篇对YOLO系列系统的全面综述。与以往的文献综述不同,本文从最新的技术角度出发,重新审视了YOLO系列的特点。
同时,本文还分析了YOLO系列如何继续影响和推动实时计算机视觉相关研究,并引领了计算机视觉和语言模型的后续发展。
本文深入探讨了YOLO系列在过去十年中提出的方法如何影响后续技术的发展,并展示了YOLO在各个领域的应用。
本文希望本文能在后续的实时计算机视觉发展中发挥良好的指导作用。
Introduction
目标检测是计算机视觉中的一项基础任务,可以支持广泛的下游任务。例如,它可以用于辅助实例分割、多目标跟踪、行为分析和识别、人脸识别等。因此,它在过去几十年中一直是一个热门的研究课题。近年来,随着移动设备的普及,在边缘进行实时目标检测的能力已成为各种现实世界应用的必要组成部分。属于此类应用的任务包括自动驾驶、工业机器人、身份验证、智能医疗、视频监控等。在众多实时目标检测算法中,近年来开发的YOLO(You Only Look Once)系列(从v1到v10)[1]–[10]尤为突出。它极大地广泛影响了计算机视觉领域的研究。本文将回顾YOLO系列技术及其对当代实时计算机视觉系统发展的影响。
这是一篇对YOLO系列系统的全面综述。与以往的文献综述不同,本文从最新的技术角度出发,重新审视了YOLO系列的特点。同时,本文还分析了YOLO系列如何继续影响和推动实时计算机视觉相关研究,并引领了计算机视觉和语言模型的后续发展。本文深入探讨了YOLO系列在过去十年中提出的方法如何影响后续技术的发展,并展示了YOLO在各个领域的应用。本文希望本文能在后续的实时计算机视觉发展中发挥良好的指导作用。
目标检测是计算机视觉中的一项基础任务,可以支持广泛的下游任务。例如,它可以用于辅助实例分割、多目标跟踪、行为分析和识别、人脸识别等。因此,它在过去几十年中一直是一个热门的研究课题。近年来,随着移动设备的普及,在边缘进行实时目标检测的能力已成为各种现实世界应用的必要组成部分。属于此类应用的任务包括自动驾驶、工业机器人、身份验证、智能医疗、视频监控等。在众多实时目标检测算法中,近年来开发的YOLO(You Only Look Once)系列(从v1到v10)[1]–[10]尤为突出。它极大地广泛影响了计算机视觉领域的研究。本文将回顾YOLO系列技术及其对当代实时计算机视觉系统发展的影响。
YOLO系列
YOLO(You Only Look Once)是当今最先进的实时目标检测器的代名词。YOLO与传统目标检测系统最大的区别在于,它摒弃了以往需要先找到图像中物体可能存在的位置,再逐个分析这些位置内容的两阶段目标检测方法。YOLO提出了一种统一的一阶段目标检测方法,这种方法简洁高效,使得YOLO在各种边缘设备和实时应用中得到了广泛应用。接下来,本文将介绍几个具有代表性的YOLO版本,并且这篇文献综述与以往的不同之处在于,本文将重点放在最新的目标检测方法上,并回顾这些方法的优缺点。
A. YOLO (YOLOv1)
Redmon等人在2015年首次提出了一阶段目标检测器,即YOLOv1,其架构如图1所示。如图所示,输入图像首先通过卷积神经网络(CNN)进行特征提取,然后通过两个全连接层获得全局特征。之后,将上述全局特征重新整形回二维空间进行逐网格预测。YOLOv1具有以下重要特点:
一阶段目标检测器
如图1所示,YOLOv1直接对特征图的每个网格进行分类,并预测B个边界框。每个边界框将分别预测物体的中心(bx, by)、物体的大小(bw, bh)和物体的置信度(bobj)。这种一阶段预测方法不需要依赖于在目标候选生成阶段必须执行的选择性搜索,从而可以避免因手动设计线索不足而导致的漏检。此外,一阶段方法还可以避免第二阶段中全连接层产生的大量参数和计算,以及连接两个阶段RoI操作时所需的不规则操作。因此,YOLO的设计能够更及时有效地捕获特征和进行预测。接下来,本文将更深入地了解YOLOv1中最重要的概念,即无锚点边界框回归、IoU感知的目标性和全局上下文特征。
无锚点边界框回归
在公式1中,YOLOv1直接预测物体在整个图像中长度和宽度的比例。虽然无锚点方法需要优化一个较大的长度和宽度动态范围,这使得收敛更加困难,但它也具有能够更准确地预测一些特殊示例的优势,因为它不受锚点的限制。
IoU感知的目标性
为了更准确地衡量边界框预测的质量,YOLOv1提出的方法是预测某个边界框与分配的真实边界框之间的IoU值,并将其作为IoU感知分支预测的目标性的软标签。最后,边界框的置信度分数由目标性分数和分类概率的乘积确定。
全局上下文特征
为了确保一个网格不仅能看到局部特征而导致预测错误,YOLOv1使用全连接层来检索全局上下文特征。在这样的设计中,无论底层CNN架构是什么,每个网格在预测时都能看到足够范围的特征来预测目标对象。与快速R-CNN相比,这种设计有效地将背景错误减少了一半以上。
B. YOLO9000 (YOLOv2)
除了提出许多具有洞察力的新方法外,Redmon和Farhadi[2]还集成了各种现有技术。他们设计了一个集高精度与速度于一体的目标检测器,如图2所示。他们将整个目标检测架构转换为全卷积网络。随后,他们结合了高分辨率和低分辨率特征,并最终使用基于锚点(anchor-based)的方法进行预测。由于其简单的输入和输出格式,YOLOv2仍然是许多工业场景维护和开发中常用的主流目标检测方法之一,特别是在计算资源非常有限的低端设备上。以下本文将分别就维度聚类、直接位置预测、细粒度特征、分辨率校准以及与WordTree的联合训练等YOLOv2最关键的部分进行讨论。
维度聚类(Dimension Cluster)
YOLOv2建议使用交并比(IoU)距离作为基础,对真实边界框进行k-means聚类以获得锚点。一方面,通过维度聚类获得的锚点可以避免原来手动设置的宽高比,这种宽高比很难学习物体的边界框预测。另一方面,它也比无锚点(anchor-free)方法的边界框回归更容易收敛。
直接位置预测(Direct Location Prediction)
Faster R-CNN以锚点中心为基础,预测物体中心与锚点中心之间的偏移量。上述方法在早期训练过程中非常不稳定。YOLOv2遵循YOLOv1的物体中心回归方法,并直接根据负责预测物体的网格的左上角来预测物体中心的真实位置。
细粒度特征(Fine-grained Feature)
直通层(Passthrough layer)通过将高分辨率特征重新组织为无损的空间到深度的转换,并将其与低分辨率特征相结合来进行预测。这可以在考虑速度的同时,通过高分辨率特征增强细粒度小物体的检测能力。
分辨率校准(Resolution Calibration)
由于骨干卷积神经网络(CNN)通常使用比目标检测训练时分辨率更低的图像进行图像分类预训练,因此预训练模型从未见过较大物体的状态。YOLOv2使用与训练大小图像相同的图像分类预训练,这样目标检测训练过程就不需要额外学习新尺寸物体的信息。
与WordTree的联合训练(Joint Training with WordTree)
YOLOv2设计了使用具有与WordTree相似层次结构的ImageNet进行组softmax的训练,然后使用WordTree将COCO和ImageNet的类别集成在一起。最终,这项技术需要对ImageNet的图像分类任务和COCO的目标检测任务进行联合训练。由于上述设计,YOLOv2能够检测9000种类别的物体。
C. YOLOv3
YOLOv3 [3] 是由Redmon和Farhadi在2018年提出的。他们集成了现有目标检测的先进技术,并对单阶段目标检测器进行了相应的优化。如图3所示,在架构方面,YOLOv3主要结合了特征金字塔网络(FPN)[21],以同时实现多尺度预测。它还引入了残差网络架构,并设计了DarkNet53。此外,YOLOv3还对标签分配任务进行了重大更改。第一个变化是,一个真实边界框只会分配给一个锚点;第二个变化是将IoU感知的对象性从软标签更改为硬标签。至今,YOLOv3仍然是YOLO系列中最受欢迎的版本。接下来,本文详细介绍YOLOv3的特殊设计,即跨尺度预测、高GPU利用率和空间金字塔池化(SPP)。
跨尺度预测(Predictions Across Scales)
YOLOv3结合了FPN以实现跨尺度预测,这可以大大提高小物体的检测能力。
高GPU利用率(High GPU Utility)
在2018年,主流网络架构设计的重点在于减少计算量和参数量。Darknet53的设计比其他架构具有更高的GPU硬件利用率,因此在相同计算量下具有更快的推理速度。这样的设计也导致了后续架构研究侧重于实际的硬件推理速度。
空间金字塔池化(SPP)
YOLOv1使用全连接层来获取全局上下文特征,而YOLOv2使用直通层来结合多个分辨率的特征。YOLOv3设计了多个步长为1的最大池化层,核大小从局部到全局不等。这种设计允许每个网格从局部到全局获得多个分辨率的特征。SPP已被证明是一种简单而有效的方法,可以大大提高准确性。
D. Gaussian YOLOv3
Gaussian YOLOv3 [22] 提出了一种非常有效的方法来显著减少目标检测过程中的误报。Gaussian YOLOv3 主要改变了预测头部的解码方法,所采用的方法是将边界框的数值回归问题转化为预测其分布。其架构如图4所示。
基于分布的边界框回归(Distribution-Based Bounding Box Regression)
图中包含的基于分布的边界框回归模块是预测边界框(x, y, w, h)的高斯分布的不确定性。这种预测方法可以显著减少目标检测的误报。
E. YOLOv4
由于约瑟夫·雷德蒙(Joseph Redmon)因某些原因退出了计算机视觉研究,后续的YOLO版本主要在开源平台GitHub上发布。至于论文的发表时间,它晚于开源时间。YOLOv4 [4] 在2020年4月初由Alexey Bochkovskiy作为草案提交给约瑟夫·雷德蒙,并于2020年4月23日正式发布。YOLOv4主要集成了近年来计算机视觉不同领域的各种技术,以提高实时目标检测器的学习效果。YOLOv4的架构变化是用PAN [23]替换FPN,并引入CSPNet [24]作为骨干网络。随后的大多数类似YOLO架构都遵循了这一架构。鉴于深度学习技术的快速创新,YOLOv4不仅基于DarkNet [25]、[26]进行开发,还在当时最成功的PyTorch YOLOv3 [27]上实现。YOLOv4成功展示了如何使用单个GPU训练出与使用128个以上GPU训练同样准确的目标检测器,同时其推理速度超过三倍。YOLOv4的优异性能也催生了许多后续的目标检测研究。以下是YOLOv4中开发的新功能列表:
Bag of Freebies(免费套餐)
YOLOv4引入了仅增加训练时间而不影响推理时间的训练技术,主要包括损失函数、正则化方法、数据增强方法和标签分配方法。
Bag of Specials(特色套餐)
YOLOv4还引入了仅对推理时间产生轻微影响但可以显著提高准确性的方法,主要包括感受野模块、注意力机制、激活函数和归一化层,并选择有用的组合添加到系统中。
网格敏感解码器(Grid Sensitive Decoder)
开源平台上的用户发现,当目标中心靠近网格边界时,很难进行准确预测。YOLOv4分析了原因,发现Sigmoid函数在极值处的梯度会接近零。然后,YOLOv4的开发人员设计了一种如等式2所示的解码方法,使预测的目标值落在有效梯度范围内。
自对抗训练(Self-Adversarial Training)
YOLOv4还引入了自对抗样本生成训练,以增强目标检测系统的鲁棒性。
带内存共享的训练(Training with Memory Sharing)
YOLOv4还设计为允许GPU和CPU共享内存,以存储梯度更新所需的信息。这种设计使得训练的批量大小不再受GPU内存的限制。
F. Scaled-YOLOv4
2020年,Wang等人[20]延续了YOLOv4的成功,并继续开发了可以在边缘和云端都使用的scaled-YOLOv4。得益于DarkNet和PyTorch YOLOv3社区的活动,scaled-YOLOv4可以放弃ImageNet所需的预训练步骤,并直接使用从头开始训练的方法来获得高质量的目标检测结果。在架构方面,scaled-YOLOv4还将CSPNet引入到了PAN中,从而全面提升了速度、精度、参数数量和计算量的性能。此外,scaled-YOLOv4还设计了适用于各种边缘设备的模型缩放方法,并提供了P5、P6和P7三种类型的模型。在训练部分,scaled-YOLOv4采用了YOLOv5初始版本提出的解码器和标签分配策略。由于上述各种改进,scaled-YOLOv4在所有目标检测器中实现了最高的精度和最快的推理速度。以下列出scaled-YOLOv4的几个独特设计:
复合模型缩放(Compound Model Scaling)
以前的模型缩放方法仅考虑了给定架构的整数超参数。scaled-YOLOv4提出了一种模型缩放方法,该方法同时考虑输入图像分辨率和感受野匹配,并使用缩放模型阶段的数量来设计一种更高效、可应用于高分辨率图像的架构。
硬件友好型架构(Hardware Friendly Architecture)
考虑到ShuffleNetv2[28]和HardNet[29]对硬件性能的分析,设计了高效的CSPDark模块和CSPOSA模块。
一次到位的模型(Naïve Once For All Model)
由于scaled-YOLOv4采用从头开始训练的模式,因此不再存在预训练模型与检测模型之间分辨率不一致的问题。然而,用户输入图像与训练数据之间仍然存在不一致的问题。scaled-YOLOv4中提出的模型缩放方法允许用户在推理阶段无需重新训练即可获得最佳精度,并且只需移除对应阶段的输出即可。
G. YOLOv5
YOLOv5 [5] 延续了PyTorch YOLOv3的设计理念,并简化了整体架构定义方法,至今已有约10个不同版本。初始版本的设计类似于YOLOv3,但遵循EfficientDet [30]的模型缩放模式,以提供具有不同规格的模型。PyTorch YOLOv3是基于Erik的开源代码[31]开发的,因此它使用GPL3许可证,而后续版本则调整为更严格的AGPL3许可证。YOLOv5继承了PyTorch YOLOv3的许多功能,比如使用进化算法进行自动锚点和超参数搜索。当YOLOv5 [5]开源时,其性能略逊于YOLOv3-SPP。在相继结合了YOLOv4使用的CSPNet和scaled-YOLOv4使用的CSPPAN之后,YOLOv5的第一个版本r1.0 [32]于2020年6月正式发布。随后,YOLOv5的开发人员优化了CSP融合层的速度-精度权衡以及激活函数,并引用了基于YOLOR的训练超参数,最终在2021年4月使用了YOLOv5 r5.0 [33]。YOLOv5的最新版本是Glenn在2022年11月发布的YOLOv5 r7.0 [34]。由于公司持续维护和版本更新,YOLOv5目前是最受欢迎的YOLO开发平台。以下是YOLOv5的一些显著特点:
基于幂的解码器(Power-based Decoder)
YOLOv3的长度-宽度回归系统使用指数函数来估计偏移量,这种方法在某些数据集的训练过程中会导致不稳定。YOLOv5在等式3中提出了基于幂的解码器,以增加训练的稳定性。由于基于幂的解码器的输出值范围被限制在锚点的一定缩放范围内,因此理论上会有一个有界的召回率。
邻域正样本(Neighborhood Positive Samples)
为了弥补召回率不足的问题,YOLOv5提出将更多邻近网格作为正样本。同时,为了让这些邻近网格正确预测中心点,它们还放大了YOLOv4中心点解码器的Sigmoid缩放系数。
H. PP-YOLO
PP-YOLO系列有四个版本,分别是PP-YOLO [35]、PP-YOLOv2 [36]、PP-PicoDet [37]和PP-YOLOE [38]。PP-YOLO在YOLOv3的基础上进行了改进。除了采用多种YOLOv4训练技术外,它还增加了CoordConv [39]、Matrix NMS [40]以及更优秀的ImageNet预训练模型等改进方法,而PP-YOLOv2则进一步引入了scaled-YOLOv4的CSPPAN等机制。PP-PicoDet以神经架构搜索为基础设计主干网络,并引入了YOLOX的无锚点解码器[41]。至于PP-YOLOE,它进行了重大变更。它修改了RepVGG,设计了CSPRepResStage,并在TOOD的分布式回归过程中使用了边界框回归[42]。YOLOv6之后的YOLO系列几乎都遵循上述格式。以下是PP-YOLO系列的一些设计特点:
神经架构搜索(Neural Architecture Search)
PP-PicoDet是专为移动设备设计的架构。它结合了ShuffleNetv2 [28]和GhostNet [43]进行一次性神经架构搜索。
重参数化模块(Reparameterization Module)
PP-YOLOE将RepVGG [44]应用于CSPNet,但在训练阶段移除了恒等连接。
提升的分布式回归(Distribution-based Regression Raised)
PP-YOLOE遵循TOOD,使用DFL [45]进行边界框回归。DFL与Gaussian YOLOv3的不同之处在于,它不需要将数据限制为高斯分布,也可以直接学习真实数据的分布。
I. YOLOR
YOLOR [46] 并非YOLO系列的官方版本,但它采用隐变量模型(LVM)作为隐式知识编码器,可以显著提升所有YOLO系列模型的检测效果。YOLOR的多任务模型也在后续的YOLO版本中得到了广泛应用,其提出的先进训练技术也在所有后续版本中得到了延续和推广。以下是YOLOR的一些特别设计特点:
隐式知识建模(Implicit Knowledge Modeling)
YOLOR提出了三种LVM来编码隐式知识,包括基于向量的、基于神经网络的和基于矩阵分解的。上述三种编码方法可以有效地增强深度神经网络的特征对齐、预测优化和多任务学习能力。
多任务模型(Multi-task Model)
YOLOR提供了能够同时进行目标检测、图像分类和多个目标跟踪的模型,并且还提供了基于YOLO-Pose [47]的姿态估计模型。
先进训练技术(Advanced Training Technique)
YOLOR开发了先进的自动机器学习(AutoML)技术 [48],其训练超参数的技术在YOLO系列的最新版本中继续得到应用。YOLOR的模型还采用了大数据集预训练、知识蒸馏、自监督学习和自蒸馏技术。迄今为止,使用上述方法训练的YOLOR仍然是YOLO系列中最准确的模型。
J. YOLOX
YOLOX [41] 集成了当时最实用的技术,主要基于 CSPNet 架构 [24] 和 FCOS 的无锚点检测头 [19],对 OTA [49] 进行了改进,并提出了 SimOTA 动态标签分配方法来替代容易混淆的手动标签分配方法。随后的 YOLO 版本也开始使用或设计不同的动态标签分配方法。以下是 YOLOX 的两个最重要特点:
解耦检测头(Decoupled Head)
YOLOX 采用了 FCOS 的解耦检测头设计,这种设计使得分类和边界框回归更容易学习。
无锚点技术的回归(Anchor-free Strikes Back)
由于基于交并比(IoU)的损失函数的发展,无锚点检测头不再受物体长宽比引起的损失不平衡问题的影响。借助现代技术,无锚点检测头也可以得到很好的训练。对于 YOLOX 来说,它采用了 FCOS 的无锚点检测头来实现其预定的目标。
K. YOLOv6
YOLOv6的初始版本[50]采用了RepVGG[44]作为主要架构。在2.0版本之后的版本中,如Li等人(2022)[6]和Li等人(2023)[51]的研究中,引入了CSPNet[24]。YOLOv6是一个专为工业设计的系统,因此在量化问题上投入了大量精力。YOLOv6的贡献包括使用RepOPT[52]使量化模型更加稳定,以及采用量化感知训练(QAT)和知识蒸馏来提高量化模型的准确性。YOLOv6的3.0版本[51]提出了锚点辅助训练的概念,如图9所示,以提高系统的准确性。随后在YOLOv6的4.0版本[53]中,提出了一种基于深度可分离卷积的轻量级架构YOLOv6-lite,以面向低端计算设备。以下是YOLOv6提出的一些独特特性:
优化器重参数化(Reparameterizing Optimizer)
YOLOv6的2.0版本使用RepOPT来减缓模型量化后的精度损失。
量化感知训练(Quantization Aware Training)
在YOLOv6的2.0版本中,采用QAT来提高量化模型的准确性。
知识蒸馏(Knowledge Distillation)
YOLOv6的2.0版本分别使用自蒸馏和通道级蒸馏来提高模型准确性,并且还使用QAT来减少模型量化后的精度损失。
锚点辅助训练(Anchor-Aided Training)
YOLOv6的3.0版本提出了使用基于锚点的检测头来辅助无锚点检测头的学习,如图9所示,以提高准确性。
L. YOLOv7
YOLOv7 [7] 引入了可训练的辅助架构,这些架构可以在推理阶段被移除或集成,包括YOLOR [46]、近期流行的RepVGG [44] 以及额外的辅助损失。在架构上,YOLOv7 使用 ELAN [54] 替换了 YOLOv4 中使用的 CSPNet,并提出了 E-ELAN 以设计大型模型。YOLOv7 还提供了多种与计算机视觉任务相关的模型,并支持基于锚点和无锚点的架构。YOLOv7 的特性如下:
让RepVGG再次伟大(Make RepVGG Great Again)
RepVGG [44] 提出的重参数化方法允许简单的网络架构在加深时能够收敛,但它无法有效应用于现代流行的深度网络架构。YOLOv7 提出的计划性RepConv技术允许重参数化方法有效地为各种基于残差和拼接的架构带来增益。
一致的标签分配(Consistent Label Assignment)
过去使用的辅助损失方法会导致不同分支的输出目标不一致,从而在训练时产生混淆和不稳定。针对动态标签分配方法的成熟和普及,YOLOv7 提出了一致的标签分配机制,以保持不同分支目标和特征学习方向的一致性。
从粗到细的标签分配(Coarse to Fine Label Assignment)
过去,多阶段细化架构(如 Cascade R-CNN [55] 和 HTC [56])需要额外的理论架构来逐步细化预测。YOLOv7 提出了从粗到细的标签分配机制,该机制可以直接使用辅助损失来指导特征空间中的从粗到细的特征,提供预测细化效果而无需更改架构。
部分辅助损失(Partial Auxiliary Loss)
YOLOv7 允许一些特征接收辅助信息更新,而其余部分仍专注于目标任务学习。YOLOv7 的开发者发现,这种设计对主任务有良好的改进效果。
各种视觉任务(Various Vision Tasks)
YOLOv7 提供了包括目标检测、实例分割和姿态估计在内的模型,并在这些任务中实现了实时最先进的性能。
M. DAMO-YOLO
DAMO-YOLO [57] 在骨干架构、特征融合、预测头和标签分配方面提出了改进方法。DAMO-YOLO的框图如图11所示。其特点总结如下:
MAE-NAS。
DAMO-YOLO 使用 MAE-NAS [58] 来搜索 CSPNet 和 ELAN,以实现更高效的架构。
Efficient GFPN。
DAMO-YOLO 拆解了 GFPN [59] 的女王融合,保留了为实现最佳速度和精度而设计的折衷融合层,以便将其与 ELAN 结合并设计出 RepGFPN。
ZeroHead。
DAMO-YOLO 将复杂的解耦头简化为一个特征投影层。
AlignedOTA。
DAMO-YOLO 提出了 Aligned OTA 来解决分类预测、回归预测和动态标签分配之间的错位问题。
N. YOLOv8
YOLOv8 [8] 是 YOLOv5 [5] 的重构版本,它更新了整体 API 的使用方式,并对底层代码进行了大量优化。在架构上,它改变了 YOLOv7 的 ELAN,并增加了额外的残差连接,而其解码器则与 YOLOv6 2.0 相同。YOLOv8 更多地是一个技术集成平台,而非一个全新的 YOLO 版本,它基本上集成了多个下游任务的 API 并以串联方式连接它们。其最新版本是 Glenn [8],集成了如 YOLOv9 和 YOLO World [60] 等最新技术。由于程序修改和 API 使用不够直观,许多开发者尚未切换到这个平台。但对于专业用户而言,底层程序代码优化带来的性能提升也吸引了许多研发团队使用它。以下是 YOLOv8 的两个特别功能:
代码优化。
YOLOv8 发布的底层程序代码优化带来了约 30% 的训练性能提升。
下游应用 API。
YOLOv8 还提供了一个简单的 API,用于将检测模型与各种下游任务(如分割任务、实例分割、姿态估计、多目标跟踪等)连接起来。
O. YOLO-NAS
YOLO-NAS [61] 没有透露太多技术细节。它主要使用自己的 AutoNAC NAS 来设计量化友好的架构,并采用多阶段训练过程,包括在 Object365 和 COCO Pseudo-Labeled 数据集上进行预训练、知识蒸馏(KD)和分布焦距损失(DFL)。
P. Gold-YOLO
Gold-YOLO [62] 的整体架构与 YOLOv6 3.0 相似。其主要设计是使用 Gather-and-Distribute 机制替换架构中的 PAN,并在训练过程中进行掩码图像建模的预训练。
Gather-and-Distribute 机制。
Gather-and-Distribute 的主要架构如图 12 所示。它主要通过两个 gather-and-distribute 模块收集来自每一层的特征,并使用转换器将它们整合成全局特征。这些整合后的全局特征将分别被分配到低层和高层,分配方法使用信息注入模块将全局特征与已分配到各层的特征进行融合。
Q. YOLOv9
YOLOv9 [9] 提出了一项重要的可信技术——可编程梯度信息(PGI),其架构如图 13 所示。图中的设计架构能够增强模型的可解释性、鲁棒性和通用性。PGI 的设计旨在利用可逆架构和多级信息的概念,以最大限度地保留模型能够保留的原始数据以及完成目标任务所需的信息。YOLOv9 将 ELAN 扩展为 G-ELAN,并展示了 PGI 如何在参数数量较少的模型上实现卓越的准确性、稳定性和推理速度。以下是 YOLOv9 的几个突出特点:
辅助可逆分支。
PGI 利用可逆架构的特性来解决深度神经网络中的信息瓶颈问题。这与通常只最大化要保留的信息的通用可逆架构完全不同。PGI 使用的是以辅助信息的形式将可逆架构保留的信息与主分支共享。在保留目标任务所需信息的前提下,尽可能多地保留原始数据中的信息。
多级辅助信息。
PGI 提出了多级辅助信息的概念,使得主分支的每一层特征都尽可能保留所有任务目标所需的信息。这可以避免过去的方法在浅层容易丢失重要信息,进而导致深层无法获得足够信息的问题。
推广至下游任务。
由于 PGI 能够最大限度地保留原始数据信息,因此通过 PGI 训练的模型在小数据集、迁移学习、多任务学习和适应新下游任务方面表现出更强大的性能。
推广至各种架构。
PGI 还可以应用于其他架构,如传统 CNN、深度卷积 CNN、Transformer 以及不同类型的计算机视觉方法,如基于锚点、无锚点、无需后处理等。因此,PGI 具有绝对优越的通用性。
R. YOLOv10
YOLOv10 [10] 的整体架构与 YOLOv6 3.0 相似,但增加了基于 Transformer 的模块以增强全局特征的提取。他们改变了双头结构,分别采用了一对多和一对一的匹配方式。这一改变使得 YOLO 能够像基于 DETR 的方法一样无需后处理,直接获得端到端的目标检测结果。接下来,本文介绍 YOLOv10 的一些独特特性。
双重标签分配(Dual Label Assignment)。
使用与 DATE [63] 类似的标签分配方法,并在一对一分支中添加停止梯度操作。
无需NMS的目标检测(NMS-free Object Detection)。
一对一匹配机制的设计使得预测过程无需依赖非极大值抑制(NMS)进行后处理。
基于排名的块设计(Rank-guided Block Design)。
提出使用排名来确定哪些阶段使用常规卷积,哪些阶段使用深度卷积。
部分自注意力(Partial Self-attention)。
YOLOv10 结合了 CSPNet 和 Transformer,并提出了自注意力模块。
Impact of YOLO Series
YOLO系列算法具有(1)框架相对简单和(2)部署相对容易的特点。接下来,本文将详细阐述这些特点。
A. Simpler
更简洁的框架
基于DeepMultiBox[64]和OverFeat[65]等最前沿的研究,YOLO提出了一种全新的一阶段目标检测方法,这一新方法对后续的计算机视觉研究产生了深远影响。在YOLO系列算法提出之前,原本需要深度学习进行密集预测的任务主要包括像素级任务,如语义分割和光流估计。而对于目标检测、姿态估计等实例级任务,大多数都被拆分成多个子任务,并以级联的方式进行预测。YOLO的提出,使得许多原本需要采用多阶段和自下而上方法的算法突然转变为端到端、自上而下、一阶段的方法。这类方法的例子包括直接预测边界框和边界框内锚点相对位置的姿态估计和面部特征点检测,以及同时检测和提取再识别特征的多目标跟踪。
更简洁的部署
YOLO不使用特殊结构的模块,因此非常容易部署在各种计算设备上。然而,有许多特殊设计,如感受野模块和注意力机制等,对提高目标检测的准确性非常有帮助,但这些设计并不容易转化为通用且简单的模块。YOLO通过巧妙的设计,将这些特殊模块转化为结构简单的模块。例如,YOLOv3提出使用多分辨率的最大池化来以步长为1的方式扫描特征图,从而改进了原本仅限于固定输入大小的SPP层,以及需要空洞卷积的ASPP层。上述方法能够大大增强模型的多分辨率和全局感知能力。而YOLOv4则提出使用卷积层来替代注意力模块中包含各种池化层和全连接层的小网络。YOLOv4-tiny、YOLOv6和YOLOv7的整个模型甚至被优化到只需要使用1×1卷积、3×3卷积和最大池化来构建。此外,Joseph Redmon用C语言开发的Darknet使得YOLO的训练和推理过程无需依赖额外的软件包。上述对现有设备的友好部署使得YOLO系列算法在各种实际应用系统中得到了广泛应用。
B. Better
除了上一节所述的轻量级和易用性之外,YOLO系列模型还具有一些更高级的功能,如更好的训练技术、更好的模型可扩展性和更好的模型泛化能力。以下本文将详细阐述这些功能。
更好的训练技术
YOLO系列模型提出的训练技术不仅更为先进,而且与当前最先进的训练技术相辅相成。过去的研究大多在基础方法上验证所提出的方法,如用于图像识别的ResNet[66]和ViT[67],或用于目标检测的更快的RCNN[15]和DETR[68]。然而,大多数研究忽略了所提出的方法是否与当前最先进的方法兼容,以及它们是否能相互补充以促进该领域的整体进步。自YOLOv2以来,YOLO系列在设计时就考虑了与最先进技术的兼容性,并同时提出了能够补充这些技术的新方法。在YOLOv3、YOLOv4和PP-YOLO系列模型中,开发人员还尝试分析那些无法相互兼容的技术。这种态度对后续开发人员具有重要的指导作用。
更好的模型可扩展性
YOLO系列模型在进行模型扩展时不需要特殊设置。Scaled-YOLOv4和YOLOv7提出了一些模型扩展的指南,而YOLOv5则遵循EfficientDet的模型扩展方法。这些扩展方法直接集成到框架中,这种设计允许用户在调整模型扩展的超参数时获得稳定且出色的性能。
更好的模型泛化能力
YOLO系列提出的方法可以应用于许多领域。例如,YOLOv1提出的利用预测和真实值计算度量的概念已被广泛应用于各种软标签生成方法中,而YOLOv2提出的使用K-means作为初始锚点的方法已被扩展到姿态估计领域。YOLO提出的WorldTree组softmax方法被转化为处理长尾学习中的不平衡数据分布问题。YOLOX提出的SimOTA被用作各种动态标签分配的基本方法,而YOLOv7提出的混合标签分配方法也得到了广泛应用。YOLO系列提出的方法也适用于多种架构,例如,YOLOv4使用的CSPNet不仅在CNN上表现出色,而且已被证明与Transformer[69]、图神经网络[70]、脉冲神经网络[71]和MAMBA[72]等架构兼容。YOLOv7后续使用的ELAN也在各种计算机视觉领域迅速得到应用。
C. Faster
更快的架构
YOLO系列的另一个特点是其极快的推理速度,这主要得益于其针对硬件实际推理速度而设计的架构。YOLOv3的设计者发现,即使是简单的1x1卷积和3x3卷积相结合的架构,尽管计算量较低,但并不意味着在推理速度上具有优势。因此,他们为实时目标检测设计了DarkNet。至于Scaled-YOLOv4的设计者,他们参考了包括ShuffleNetv2[28]和HarDNet[29]在内的研究,并进一步分析了从边缘到云端不同级别设备所需考虑的高推理速度架构的标准。为了达到同样的目的,Scaled-YOLOv4的开发者设计了Fully CSPOSANet和CSPDarkNet。而YOLOv6的开发者则采用了高效的RepVGG作为主干网络,DAMO-YOLO的设计者则利用NAS技术直接在CSPNet和ELAN中搜索高效的架构。
D. Stronger
更强的适应性
YOLO系列在开源社区中取得了显著的进步和反响。Darknet和PyTorch YOLOv3集成的训练方法使得YOLO系列能够训练目标检测器,而无需依赖ImageNet的预训练模型。由于上述原因,YOLO系列可以轻松地应用于不同领域的数据,而无需依赖大量与该领域相对应的训练模型。这些优势使得YOLO系列能够广泛应用于各种应用领域。此外,YOLO系列也可以轻松地应用于不同的数据集。例如,PyTorch YOLOv3提出了使用进化算法自动搜索超参数,这可以应用于不同的数据集。此外,从YOLOX到PP-YOLOE的基于改进的无锚点YOLO使得YOLO在训练过程中依赖更少的超参数,并可以在各种应用领域中更广泛地使用。
更强的能力
YOLO系列在多种计算机视觉任务中表现出色。例如,在实时目标检测领域得到广泛应用后,基于YOLO开发了许多其他计算机视觉模型,包括YOLACT[73]实例分割模型和JDE[74]多目标跟踪等。以YOLOR为例,它开始将多个任务合并到同一个模型中进行预测。它可以同时进行图像识别、目标检测和多目标跟踪,并显著提高多任务联合学习的效果。在同一任务上,YOLOv5分别训练图像识别和目标检测模型。此外,YOLOv7也在多种计算机视觉领域中展示了出色的性能。当时,它成为实时目标检测、实例分割和姿态估计的最先进方法。在同一问题上,YOLOv8还额外集成了旋转目标检测和姿态估计等任务。此外,YOLOv9进一步将YOLOv7和YOLOR相结合,将多任务模型扩展到视觉-语言领域。
更强的通用性
由于目标检测是许多实际应用中必要的起始步骤,而作为顶尖的目标检测方法,YOLO的设计非常适合与各种下游任务模型相匹配。在这方面,PP-YOLO系列的设计尤为突出,该系列可以为包括面部分析、车牌识别、多目标跟踪、交通统计、行为分析等在内的数十种下游任务提供一个集成的系统。
Reference
YOLO v1-v10 : [1] - [10]
Gaussian YOLOv3 [22]
Scaled-YOLOv4 [20]
PP-YOLO [35], PP-YOLOv2 [36]
YOLOR [46]
DAMO-YOLO [57]
Gold-YOLO [62]
[1] J. Redmon, S. Divvala, R. Girshick, and A. Farhadi, “You only look once: Unified, real-time object detection,” in Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 2016, pp. 779–788.
[2] J. Redmon and A. Farhadi, “YOLO9000: better, faster, stronger,” in Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 2017, pp. 7263–7271.
[3] ——, “YOLOv3: An incremental improvement,” arXiv preprint arXiv:1804.02767, 2018.
[4] A. Bochkovskiy, C.-Y. Wang, and H.-Y. M. Liao, “YOLOv4: Optimal speed and accuracy of object detection,” arXiv preprint arXiv:2004.10934, 2020.
[5] J. Glenn, “YOLOv5 (2020.05),” https://github.com/ultralytics/yolov5, 2020.
[6] C. Li, L. Li, H. Jiang, K. Weng, Y. Geng, L. Li, Z. Ke, Q. Li, M. Cheng, W. Nie et al., “YOLOv6: A single-stage object detection framework for industrial applications,” arXiv preprint arXiv:2209.02976, 2022.
[7] C.-Y. Wang, A. Bochkovskiy, and H.-Y. M. Liao, “YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors,” in Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 2023, pp. 7464–7475.
[8] J. Glenn, “YOLOv8 release v8.1.0,” https://github.com/ultralytics/ ultralytics/releases/tag/v8.1.0, 2024.
[9] C.-Y. Wang, I.-H. Yeh, and H.-Y. M. Liao, “YOLOv9: Learning what you want to learn using programmable gradient information,” in Proceedings of the European Conference on Computer Vision (ECCV), 2024.
[10] A. Wang, H. Chen, L. Liu, K. Chen, Z. Lin, J. Han, and G. Ding, “YOLOv10: Real-time end-to-end object detection,” arXiv preprint arXiv:2405.14458, 2024.
[20] C.-Y. Wang, A. Bochkovskiy, and H.-Y. M. Liao, “Scaled-YOLOv4: Scaling cross stage partial network,” in Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 2021, pp. 13 029–13 038.
[22] J. Choi, D. Chun, H. Kim, and H.-J. Lee, “Gaussian YOLOv3: An accurate and fast object detector using localization uncertainty for autonomous driving,” in Proceedings of the IEEE International Conference on Computer Vision (ICCV), 2019, pp. 502–511.
[35] X. Long, K. Deng, G. Wang, Y. Zhang, Q. Dang, Y. Gao, H. Shen, J. Ren, S. Han, E. Ding et al., “PP-YOLO: An effective and efficient implementation of object detector,” arXiv preprint arXiv:2007.12099, 2020.
[36] X. Huang, X. Wang, W. Lv, X. Bai, X. Long, K. Deng, Q. Dang, S. Han, Q. Liu, X. Hu et al., “PP-YOLOv2: A practical object detector,” arXiv preprint arXiv:2104.10419, 2021.
[46] C.-Y. Wang, I.-H. Yeh, and H.-Y. M. Liao, “You only learn one representation: Unified network for multiple tasks,” Journal of Information Science and Engineering (JISE), vol. 39, no. 2, pp. 691–709, 2023.
[57] X. Xu, Y. Jiang, W. Chen, Y. Huang, Y. Zhang, and X. Sun, “DAMOYOLO: A report on real-time object detection design,” arXiv preprint arXiv:2211.15444, 2022.
[62] C. Wang, W. He, Y. Nie, J. Guo, C. Liu, K. Han, and Y. Wang, “GoldYOLO: Efficient object detector via gather-and-distribute mechanism,” Advances in Neural Information Processing Systems (NeurIPS), 2023.