什么是 YOLOV5:深入了解这款热门物体检测器的内部特性
摘要
本研究对 YOLOv5 目标检测模型进行了全面分析,考察了其架构、训练方法和性能。重点探讨了关键组件,包括跨阶段部分骨干网和路径聚合网络。本文回顾了该模型在各种指标和硬件平台上的性能。此外,本研究还讨论了从 Darknet 到 PyTorch 的过渡及其对模型开发的影响。总而言之,本研究深入分析了 YOLOv5 的功能及其在目标检测领域中的地位,并阐述了它为何是资源受限边缘部署场景的热门选择。
关键词:自动化;计算机视觉;YOLO;YOLOv5;目标检测;实时图像处理;卷积神经网络CNN);YOLO 版本比较
1 引言
计算机视觉是一个快速发展的领域,它使机器[1]能够解释和理解视觉信息[2]。该学科的一个关键组成部分是目标检测[3],它涉及在图像或视频序列中准确识别和定位目标[4]。为了应对这一挑战,人们开发了各种算法方法,近年来取得了显著进展[5]。
其中一项突破性技术是You Only Look Once (YOLO)算法,由Redmon等人于2015年提出[6]。该名称反映了其独特的方法,即仅检查整幅图像一次以识别目标及其位置。与采用两阶段检测过程的传统方法不同,YOLO将目标检测视为一个回归问题[6]。在YOLO范式中,使用单个卷积神经网络来预测整幅图像的边界框和类别概率[7]。这种简化的方法与具有更复杂流程的传统方法不同。本文在YOLO奠定的基础上,深入探讨了YOLOv5架构,这是一种最先进的目标检测模型,因其卓越的性能和效率而备受关注。
研究目标
本研究旨在评估 YOLOv5 目标检测模型与现有最先进模型的性能对比。研究重点在于评估不同 YOLOv5 变体(n、s、m、l、x)的模型精度和推理速度之间的权衡。通过考察这些不同规模的模型,本研究旨在确定满足不同应用需求的性能指标之间的最佳平衡点。本研究将探索 YOLOv5 性能提升的因素,尤其关注以下几个方面:
1. PyTorch 训练方法的作用
2. 架构创新(例如 CSP 主干网和 PA-Net 颈部)的影响
3. 数据增强技术(包括马赛克增强)的有效性
4. 损失计算方法和边界框锚框生成的影响
此外,本研究还将分析 YOLOv5 从 Darknet 框架过渡到 PyTorch 的影响,并考虑模型开发、部署以及自定义目标检测任务的可访问性等因素。通过对YOLOv5的功能和创新进行全面考察,本研究旨在为以下方面做出贡献:加深对高级目标检测算法及其在计算机视觉中实际应用的理解。
2 YOLOv5 的演进
YOLOv5 [8] 代码库是 Glenn Jocher 于 2020 年开发的 YOLOv3 [9] PyTorch 实现的演进版本。它是在 YOLOv4 [10] 发布之后发布的。YOLOv5 因其能够将 YOLOv3 模型从 Darknet 迁移到 PyTorch 以进行生产部署而广受欢迎。Ultralytics 认识到这种基于 PyTorch 的方法的实用性,启动了一项开发计划,旨在增强 PyTorch 框架内的 YOLOv3 架构和训练方法。这项工作旨在赋能更广泛的开发者社区,以便他们能够创建和部署自定义目标检测器。以下是 YOLOv5 的开发时间表:
• 2020 年 4 月 1 日:启动基于 YOLOv3/YOLOv4 架构的一系列复合规模 PyTorch 模型的开发。
• 2020年5月27日:YOLOv5 代码库公开发布,展现了现有 YOLO 实现中最先进的性能。
2020年6月9日:集成 CSP(跨阶段部分)模块,有助于提升模型速度、减小模型大小并提高精度。
2020年6月19日:默认采用 FP16 精度,从而减少检查点数量并加快推理速度。
2020年6月22日:实施 PANet 更新,包括新的检测头、减少参数以及提高 mAP(平均精度均值)。
最初,包含这些改进的模型被命名为 YOLOv4,与 Darknet 框架中同时发布的 YOLOv4 架构保持一致。但为了避免潜在的混淆和不一致,随后将其修订为 YOLOv5。尽管这一变化在研究界引发了一些争论,但为了便于客观评估,研究人员对YOLOv4和YOLOv5进行了比较分析[11]。本研究主要关注YOLOv5框架中引入的新技术和性能指标,这些内容详见GitHub代码库。必须指出的是,YOLOv5模型自诞生以来发展迅速,这表明该领域仍在持续进行研究和开发。因此,YOLOv5应被视为一个动态演进的系统,而非静态模型。
3 YOLOv5 的架构概览
目标检测是 YOLOv5 的主要应用之一,它需要从输入图像中提取显著特征。这些特征随后由预测模型进行处理,以定位和分类图像中的目标。
YOLO 架构通过将边界框回归和目标分类的任务整合到一个神经网络中,引入了端到端、可微分的目标检测方法 [12]。YOLO 网络主要由三个核心组件构成。主干网是一个卷积神经网络,负责将图像信息编码为不同尺度的特征图。这些特征图随后由颈部模块进行处理,该模块由一系列旨在整合和细化特征表示的层组成。最后,头部模块基于处理后的特征生成目标边界框和类别标签的预测。
虽然每个组件的架构设计都具有相当大的灵活性,但 YOLOv4 和 YOLOv5 通过融合其他计算机视觉领域的技术,显著推动了该领域的发展。这种协同方法已证明,YOLO框架内的目标检测性能得到了显著提升。
3.1 YOLOv5 训练方法
目标检测系统的有效性不仅取决于其底层架构,还取决于所采用的训练方法。虽然架构创新往往备受关注,但训练过程在实现最佳性能方面的作用同样至关重要。YOLOv5 采用了两种主要的训练技术:数据增强是 YOLOv5 训练流程的关键组成部分。通过对训练数据集进行各种变换,该技术可以增强模型的鲁棒性和泛化能力。因此,模型能够更好地适应真实世界图像条件的变化。
损失函数是一个综合指标,由三个主要部分组成:广义交并比 (GIoU)、目标性损失和分类损失。这些损失部分经过精心设计,旨在优化平均精度均值 (mAP),mAP 是目标检测模型广泛采用的评估指标。
3.2 过渡到 PyTorch
YOLOv5 通过将 YOLO 架构从 Darknet 框架过渡到 PyTorch [14] 而取得了重大进展。Darknet 框架主要用 C 语言实现,使研究人员能够对网络操作进行精细控制。虽然这种控制级别有利于实验,但由于每次新的实现都需要自定义梯度计算,因此常常阻碍了新研究成果的快速集成。将 Darknet 的训练流程移植到 PyTorch(如 YOLOv3 中所述)本身就是一项复杂的工作。YOLOv5 通过在 PyTorch 生态系统中进一步优化和改进这些流程,扩展了这项工作。
3.3 数据增强
YOLOv5 在其训练流程中集成了数据增强技术,以增强模型的鲁棒性和泛化能力。在每个训练周期中,图像会通过在线数据加载器进行一系列增强,包括:缩放:调整图像大小。色彩空间操作:对颜色通道进行修改。马赛克增强:一种将四张图像合并成四个随机大小图块的新技术。
马赛克数据增强技术最初在 YOLOv3 PyTorch 代码库中引入,随后集成到 YOLOv5 中。该技术已被证明在解决小目标检测难题方面尤为有效,而小目标检测是 COCO(Common Objects in Context)目标检测基准数据集中常见的局限性。通过将多张图像合并成一个训练样本,该技术使模型能够接触到更广泛的目标尺度和空间排列方式,从而增强其准确检测小目标的能力。
3.4 边界框锚点
YOLOv3 PyTorch 代码库引入了一种新颖的锚框生成方法,它采用 K-means 聚类和遗传算法,直接从给定数据集中边界框的分布中提取锚框尺寸。这种方法对于自定义目标检测任务尤为重要,因为目标的尺度和宽高比通常与 COCO 等标准数据集中常见的值存在显著差异。YOLOv5 架构将边界框坐标预测为相对于预定义锚框尺寸集的偏移量。这些锚框尺寸对于初始化预测过程至关重要,并且会显著影响模型的性能。
3.5 损失函数计算
YOLOv5 损失函数由三个部分组成:用于类别预测和目标性的二元交叉熵 (BCE),以及用于定位的完全交并比 (CIoU)。各项损失的加权总和:
Lobj、Lloc 分别代表类别预测的 BCE 损失、目标性 BCE 损失和定位 CIoU 损失。系数 λ1、λ2 和 λ3 是超参数,用于平衡各损失分量对整体优化过程的贡献。
3.6 16 位浮点精度
PyTorch 框架允许在训练和推理过程中将计算精度从 32 位浮点数降低到 16 位浮点数。当应用于 YOLOv5 时,该技术已展现出显著提升推理速度的潜力。然而,必须注意的是,这些性能提升仅取决于特定的 GPU 架构,特别是 YOLOv5 的 V100 和 T4 型号。虽然目前存在硬件兼容性方面的限制,但 NVIDIA 的持续开发表明,这种效率提升有望扩展到更广泛的硬件平台。
3.7 CSP 主干网
YOLOv4 和 YOLOv5 都集成了 CSP(跨阶段部分)瓶颈模块用于特征提取。这项由 WongKinYiu 等人提出的架构创新,解决了大型卷积神经网络主干网中普遍存在的梯度信息冗余问题。通过将特征图解耦为两个主要部分并重新组合,CSP 模块有效地降低了计算成本和模型复杂度,同时又不影响性能。这种效率提升对于 YOLO 系列网络尤为有利,因为快速推理和紧凑的模型尺寸对它们至关重要。
如图 3 所示,
CSP 模型借鉴了 DenseNet 架构,旨在解决深度 CNN 固有的挑战,包括梯度消失问题。DenseNet 通过促进层间直接连接,旨在增强特征传播、促进特征重用并减少网络参数的总数。
CSPResNext50 和 CSPDarknet53 架构对 DenseNet 结构进行了改进,如图 4 所示。
具体来说,基础层生成的特征图被分为两个分支。一个分支经过密集块处理,而另一个分支则直接传递到后续阶段。这种架构改进旨在缓解 DenseNet 固有的计算瓶颈,并通过保留原始特征图的未更改表示来增强学习效果。
3.8 PA-Net 颈部
YOLOv4 和 YOLOv5 都采用了 PA-Net 架构进行特征聚合 [18]。如图 5 所示,
每个 P_i 代表从 CSP 主干网络中提取的一个独立特征层。这种架构选择受到了 EfficientDet 目标检测框架的启发,该框架中 BiFPN 模块被认为是特征集成的最佳选择。虽然 BiFPN 方法可以作为基准,但 YOLO 框架内的其他实现方式也可能带来进一步的性能提升。显然,YOLOv5 在 YOLOv4 的基础研究基础上,选择了最合适的颈部架构。YOLOv4 全面评估了一系列选项,包括 FPN、PAN、NAS-FPN、BiFPN、ASFF 和 SFAM。
4 YOLOv5 架构模型
YOLOv5 架构包含五个不同的模型,从计算效率高的 YOLOv5n 到高精度的 YOLOv5x。
• YOLOv5n:YOLOv5n 专为资源受限环境设计,是该系列中最小、最快的模型。
其体积小巧,INT8 格式小于 2.5 MB,FP32 格式约为 4 MB,
非常适合部署在边缘设备和物联网平台上。与 OpenCV DNN 的兼容性进一步增强了其在移动应用中的实用性。
• YOLOv5s:YOLOv5s 代表基准模型,包含约 720 万个参数。
其性能特点使其适用于基于 CPU 的推理任务。
YOLOv5m:YOLOv5m 定位为中等规模模型,拥有 2120 万个参数,在速度和精度之间实现了平衡。
该模型通常被认为是适用于各种目标检测应用和数据集的通用选择。
• YOLOv5l:YOLOv5l 拥有 4650 万个参数,专为需要更高精度的场景而设计,
尤其适用于检测图像中的小型目标。
• YOLOv5x:作为该系列中最大、最复杂的模型,YOLOv5x 实现了同类模型中最高的 mAP。
然而,由于其 8670 万个参数,这种高性能是以更高的计算需求为代价的。
表 1 全面概述了模型变体,
包括其在 CPU 和 GPU 平台上的推理速度,以及 640 像素图像大小的参数数量。
5 YOLOv5 标注格式
YOLOv5 采用 PyTorch TXT 标注格式,该格式与 YOLO Darknet TXT 标准非常相似,但增加了一个 YAML 文件,用于指定模型配置和类标签。为了与 YOLOv5 兼容,各种工具生成的标注数据可能需要转换。Roboflow 等平台支持多种标注格式,并可将数据直接导出为 YOLOv5 兼容格式。常用的标注工具,包括 VOTT、LabelImg 和 CVAT,也可以使用,但需要进行适当的数据转换步骤。
6 YOLOv5 标注工具
为了高效地进行数据管理和标注,YOLOv5 的开发商 Ultralytics 推荐使用 Roboflow 作为兼容的标注工具 [20]。表 2 概述了与 YOLOv5 兼容的第三方集成平台。
表中列出了每个平台与 YOLOv5 集成后的主要功能。
7 讨论
YOLOv5 代表了目标检测领域的一项重大进步,它建立在其前代产品奠定的基础之上,并引入了以下创新改进:
1. 架构改进:YOLOv5 代表了目标检测领域的一项重大进步,它建立在之前的 YOLO 迭代之上。CSP 骨干网和 PA-Net 颈部的引入提高了计算效率,同时又不影响精度。CSP 模块有效地处理了冗余梯度信息,而 PA-Net 架构则优化了特征聚合。
2. 模型通用性:YOLOv5 模型(n、s、m、l、x)的多样性使其能够灵活满足各种硬件和应用需求。最小的模型 YOLOv5n 将目标检测能力扩展到了边缘设备和物联网平台。
3. 训练方法创新:YOLOv5 强调数据增强,特别是马赛克增强,这提高了小目标检测的性能,并降低了对数据集大小的要求。采用 16 位浮点精度体现了前瞻性的优化方法。
4. 性能与影响:YOLOv5 的高 mAP 分数和低推理时间使其成为实时目标检测的有力竞争者。
向 PyTorch 的过渡使模型的访问更加普及,促进了更广泛的研究和开发。
8 结论
YOLOv5 已成为目标检测领域的一项重大进步,在速度、准确性和用户友好性之间实现了令人信服的平衡。虽然其核心架构建立在既有原则之上,但该模型在 PyTorch 框架内的实现代表着一次巨大的飞跃,提高了开发效率和部署能力。针对不同计算约束定制的多个模型变体的可用性扩展了 YOLOv5 在各个领域的应用,从可再生能源 [24] 到制造业的质量检测 [25]。该模型的易用性,以及与现有工具和平台的兼容性,使 YOLOv5 成为研究和实际应用的多功能解决方案。随着计算机视觉领域的快速发展,YOLOv5 为未来实时目标检测及相关任务的进步奠定了坚实的基础。
参考文献
[1] M. A. Ansari, A. Crampton, and S. Parkinson. A layer-wise surface deformation defect detection by convolutional
neural networks in laser powder-bed fusion images. Materials, 15(20):7166, Oct. 2022.
[2] Muhammad Hussain. Yolov1 to v8: Unveiling each variant–a comprehensive review of yolo. IEEE Access,
12:42816–42833, 2024.
[3] Arsalan Zahid, Muhammad Hussain, Richard Hill, and Hussain Al-Aqrabi. Lightweight convolutional network
for automated photovoltaic defect detection. In 2023 9th International Conference on Information Technology
Trends (ITT), pages 133–138. IEEE, 2023.
[4] Muhammad Hussain. When, where, and which?: Navigating the intersection of computer vision and generative ai
for strategic business integration. IEEE Access, 11:127202–127215, 2023.
[5] Muhammad Hussain and Rahima Khanam. In-depth review of yolov1 to yolov10 variants for enhanced photo
voltaic defect detection. In Solar, volume 4, pages 351–386. MDPI, 2024
[6] Joseph Redmon, Santosh Divvala, Ross Girshick, and Ali Farhadi. You only look once: Unified, real-time object
detection. In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 779–788,
2016.
[7] MuhammadHussain. Yolo-v5 variant selection algorithm coupled with representative augmentations for modelling
production-based variance in automated lightweight pallet racking inspection. Big Data and Cognitive Computing,
7(2):120, 2023.
[8] Ultralytics. Yolov5, 2024. Accessed: 2024-07-23.
[9] Glenn Jocher. ultralytics/yolov3: Yolov3 implementation in pytorch, 2024. Accessed: 2024-07-23.
[10] Z. Yao, Y. Cao, S. Zheng, G. Huang, and S. Lin. Cross-iteration batch normalization. In openaccess.thecvf.com,
2021.
[11] Roboflow Blog. Yolov4 vs. yolov5: Which one should you use?, 2023. Accessed: 2024-07-24.
[12] Rahima Khanam, Muhammad Hussain, Richard Hill, and Paul Allen. A comprehensive review of convolutional
neural networks for defect detection in industrial applications. IEEE Access, 2024.
[13] Alexey Bochkovskiy, Chien-Yao Wang, and Hong-Yuan Mark Liao. Yolov4: Optimal speed and accuracy of
object detection. arXiv preprint arXiv:2004.10934, 2020.
[14] PyTorch. Pytorch brand guidelines. Accessed: 2024-07-25.
[15] Roboflow Blog. What is an anchor box? https://blog.roboflow.com/what-is-an-anchor-box/. Ac
cessed: 2024-07-25.
[16] Gao Huang, Zhuang Liu, Laurens Van Der Maaten, and Kilian Q Weinberger. Densely connected convolutional
networks. In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 4700–4708,
2017.
[17] Chien-Yao Wang, Hong-Yuan Mark Liao, Yueh-Hua Wu, Ping-Yang Chen, Jun-Wei Hsieh, and I-Hau Yeh. Cspnet:
A new backbone that can enhance learning capability of cnn. In Proceedings of the IEEE/CVF conference on
computer vision and pattern recognition workshops, pages 390–391, 2020.
[18] J. Solawetz. YOLOv5 New Version- Improvements and Evaluation. Roboflow Blog, Jun. 2020.
[19] Mingxing Tan, RuomingPang, andQuocVLe. Efficientdet: Scalable and efficient object detection. In Proceedings
of the IEEE/CVF conference on computer vision and pattern recognition, pages 10781–10790, 2020.
[20] Brad Dwyer. Roboflow and ultralytics partner to streamline yolov5 mlops, 2021. Accessed: 2024-07-29.
[21] Deci AI. Deci ai documentation, 2024. Accessed: 2024-07-29.
[22] ClearML. Yolov5 clearml integration documentation, 2021. Accessed: 2024-07-29.
[23] Weights and Biases. Yolov5 weights and biases integration guide, 2021. Accessed: 2024-07-29.
[24] Muhammad Hussain, Mahmoud Dhimish, Violeta Holmes, and Peter Mather. Deployment of ai-based rbf network
for photovoltaics fault detection procedure. AIMS Electronics and Electrical Engineering, 4(1):1–18, 2019.
[25] Tahir Hussain, Muhammad Hussain, Hussain Al-Aqrabi, Tariq Alsboui, and Richard Hill. A review on defect
detection of electroluminescence-based photovoltaic cell surface images using computer vision. Energies,16(10):4012, 2023.
