深度学习论文: YOLOv5, YOLOv8 and YOLOv10: The Go-To Detectors for Real-time Vision
YOLOv5, YOLOv8 and YOLOv10: The Go-To Detectors for Real-time Vision
PDF:https://arxiv.org/pdf/2407.02988v1
PyTorch: https://github.com/shanglianlm0525/PyTorch-Networks
1 概述
本文全面回顾了 YOLO(You Only Look Once)目标检测算法的演进,重点关注了 YOLOv5、YOLOv8 和 YOLOv10。我们分析了这些版本在架构进步、性能提升以及边缘部署适用性方面的情况。YOLOv5 引入了 CSPDarknet 主干和马赛克增强等重大创新,平衡了速度和准确性。YOLOv8 在此基础上通过增强特征提取和无锚点检测,提高了通用性和性能。YOLOv10 通过无NMS训练、空间-通道解耦下采样和大核心卷积等特性,实现了跨越式进步,达到了最先进的性能,同时减少了计算开销。
2 YOLO v5
在Glenn Jocher紧随YOLOv4发布之后,于2020年引入了YOLOv5,这一新版本的目标检测模型在业界引起了广泛关注,它以其前所未有的易用性、卓越的稳健性能和极高的灵活性,成为了目标检测领域的一项重要突破。YOLOv5的成功,很大程度上归功于其引入的一系列关键创新,这些创新不仅提升了模型性能,还极大地促进了模型在边缘计算环境中的部署与应用。
核心创新点
- 跨阶段部分网络(CSPNet)集成:YOLOv5的核心在于其深度集成了CSPNet,这是ResNet架构的一种高效变体。CSPNet通过引入CSP连接,有效地增强了网络的学习能力,同时减少了计算成本,提高了网络整体的效率。这种设计使得YOLOv5在保持高性能的同时,能够更好地适应资源受限的环境。
- 空间金字塔池化(SPP)模块:为了进一步提升特征提取的多样性和鲁棒性,YOLOv5在CSPNet的基础上,融入了多个SPP模块。SPP模块能够在不同尺度上捕获丰富的上下文信息,这对于提高目标检测,尤其是对小目标和遮挡目标的检测能力至关重要。
- 路径聚合网络(PAN)与上采样层:在架构的颈部区域,YOLOv5采用了PAN模块,并增加了额外的上采样层。这种设计有助于实现特征图的多层次融合,增强了特征表示的能力,同时提高了特征图的分辨率,为后续的预测任务提供了更加精细的信息。
- 基于锚点的预测机制:在头部设计中,YOLOv5延续了YOLO系列一贯的基于锚点的预测方法。每个边界框都与一组预定义的锚点框相关联,这些锚点框具有特定的形状和大小,能够覆盖大多数目标的可能形态。这种机制简化了预测过程,提高了预测精度。
- 损失函数优化:YOLOv5的损失函数由两部分组成:一是用于计算类别和目标性损失的二元交叉熵,二是用于衡量定位准确性的完整交并比(CIoU)。CIoU不仅考虑了边界框之间的重叠面积,还考虑了边界框的中心点距离、长宽比等因素,从而能够更准确地评估预测框与真实框之间的相似度。
- 自动增强(AutoAugment):这项技术自动挑选最优的数据增强策略,以增强模型对新情况的适应力。在训练时应用多种数据增强方法,自动增强使模型能够学习到更加稳定的特征,提升其在未知数据上的表现。这在多变的边缘计算环境中尤为重要。
- 马赛克数据增强(Mosaic Augmentation):通过将四张图像合成一张,这种技术使模型更擅长识别较小物体,同时增强了对不同尺寸和比例的适应性。马赛克增强有助于处理真实世界边缘应用中常见的多物体复杂场景,通过提供多样化的训练样本,它提高了模型泛化到新环境的能力。
综上所述,YOLOv5通过一系列精心设计的创新,成功地在目标检测领域树立了新的标杆。其高效、灵活、易用的特点,使得YOLOv5成为了众多应用场景中的首选模型,尤其是在边缘计算、实时检测等领域展现出了巨大的潜力。
3 YOLO v8
YOLOv8,于2023年推出,继承了YOLOv5的成功,并进行了进一步的增强,使其特别适合边缘部署。
核心创新点
- C2f 构建块:新引入的 C2f 构建块,提升特征提取和融合,增强模型捕捉细节和复杂模式的能力,提高检测准确度。
- CSPDarknet 主干:通过分割特征图并结合密集卷积,减少了计算量而保持了准确性。使用 SiLU 激活函数增强了梯度流动和特征表达,使得模型在保持高准确度的同时减小了体积,适合边缘部署。
- PANet 颈部:基于 FPN 设计,增加自底向上的路径,通过特征融合和自适应池化,加强了不同层级间的信息流动和多尺度特征的融合,提升了小目标检测能力,适合多变的边缘应用场景。
- 改进的 NMS:YOLOv8 的 NMS 算法优化了边界框处理,减少误检,提升检测精度。
- 无锚点检测头:摒弃传统锚点框,简化架构,降低计算负担,加快推理速度,增强小目标和密集物体检测能力。
4 YOLO v10
YOLOv10,在2024年推出,是YOLO系列的重要进步,它克服了以往版本的限制,同时引入了创新特性来增强性能和效率。这个最新版本专注于通过在架构和训练协议方面的一系列优化,在效率和准确性之间实现平衡,提升了小目标检测能力,减少误报,并提高预测置信度。。
核心创新点
- 无NMS训练和推理:YOLOv10引入了一种称为一致双重分配的NMS-free训练新方法。即YOLOv10在训练期间采用一对多和一对一策略的组合。一对多分配允许每个真实目标有多个预测,提高了召回率,而一对一分配通过选择最佳预测确保了精确度。这种方法确保了训练和推理之间的一致性,消除了推理期间对非极大值抑制(NMS)的需求,同时显著降低了推理延迟。
- 轻量级分类头:YOLOv10的分类头设计轻巧,减少了分类过程中的计算冗余。这一优化确保了模型可以在不产生过多计算成本的情况下做出准确的预测,使其适合部署在资源有限的设备上。
- 空间-通道解耦下采样:这种技术在下采样期间分离空间和通道信息,优化了特征提取过程。通过解耦这些方面,模型可以更有效地处理输入数据,从而在降低计算需求的同时带来更好的性能。
- 等级引导块设计:等级引导块设计简化了整体架构,提高了计算效率。这种设计使用等级信息指导重要特征的选择,确保模型专注于输入数据最相关的方面。
- 大核心卷积:YOLOv10结合了大核心卷积来提高模型捕获更大空间区域内详细特征的能力。这些卷积使模型能够更好地理解图像中对象的上下文,提高检测准确性。
- 部分自注意力模块:部分自注意力模块以最小的额外计算成本提高准确性。这个模块帮助模型专注于输入数据中的相关特征,提高其准确检测和分类对象的能力。
5 Comparative Analysis of YOLOv5, YOLOv8, and YOLOv10
YOLOv5 到 YOLOv10 的架构演进展示了目标检测网络设计的重大进步。
主干网络演进:
- YOLOv5:引入了CSPDarknet,整合了跨阶段部分网络以平衡计算成本和准确性。
- YOLOv8:增强了CSPDarknet,可能整合了更高效的卷积操作和优化的通道配置。
- YOLOv10:进一步优化了CSPDarknet,可能采用了等级引导块设计,实现更高效的特征提取。
颈部架构:
- YOLOv5:使用PANet(路径聚合网络)进行有效的多尺度特征融合。
- YOLOv8:改进了PANet,可能增强了跳跃连接或特征聚合方法。
- YOLOv10:在PANet中引入了效率优化,可能采用了空间-通道解耦操作,更有效地进行特征传播。
检测头设计:
- YOLOv5:使用基于锚点的方法,为对象检测预定义锚点框。
- YOLOv8:转向无锚点设计,简化了检测过程,可能提高了小目标的性能。
- YOLOv10:采用无锚点设计和双重分配,实现了无NMS训练和推理。
非极大值抑制(NMS):
- YOLOv5和YOLOv8:需要NMS作为后处理步骤来过滤冗余检测。
- YOLOv10:引入了无NMS训练和推理,显著减少了部署期间的计算开销和延迟。
激活函数:
- YOLOv5:使用Leaky ReLU,这是深度学习模型的常见选择。
- YOLOv8:采用SiLU(Swish)激活,以其平滑的梯度和潜在的性能优势而闻名。
特征金字塔网络(FPN):
- YOLOv5:采用标准FPN进行多尺度特征表示。
- YOLOv8:修改了FPN,可能改进了横向连接或特征融合策略。
- YOLOv10:通过空间-通道解耦增强了FPN,可能允许更有效和有效的多尺度特征处理。
损失函数:
- YOLOv5:使用CIoU(完整IoU)损失,平衡边界框回归和分类。
- YOLOv8:引入了特定任务的损失,优化了不同计算机视觉任务的性能。
- YOLOv10:开发了与无NMS训练方法一致的双重分配损失,可能提高了整体检测准确性。
数据增强:
- YOLOv5:实施了马赛克和裁剪增强,增强了模型的鲁棒性。
- YOLOv8:在增强流程中增加了Mixup,进一步提高了泛化能力。
训练策略:
- YOLOv5和YOLOv8:采用单阶段训练,是YOLO模型的典型做法。
- YOLOv10:采用双阶段训练方法,可能允许更精细的特征学习和改进的检测性能。
从 YOLOv5 到 YOLOv10 的架构演进明显趋向于更高效、更准确、更易于部署的设计。特别是 YOLOv10,引入了无NMS训练和空间-通道解耦等创新特性,这些对于边缘部署场景特别有益。这些进步共同促进了在各种部署环境中准确性的提高、计算开销的减少和实时性能的增强。