YOLOv5 对比 YOLOv9:一项全面的技术比较
实时目标检测的发展以精度和效率的快速进步为标志。这一旅程中的两个重要里程碑是Ultralytics YOLOv5,一个为可用性和部署设定行业标准的模型,以及YOLOv9,一个专注于研究并推动深度学习理论边界的架构。
这项技术比较分析了它们的架构、性能指标和理想用例,以帮助开发人员和研究人员为其计算机视觉项目选择合适的工具。
Ultralytics YOLOv5:多功能性行业标准
自发布以来,YOLOv5 已成为全球最受欢迎的视觉 AI 模型之一。由 Ultralytics 开发,它优先考虑卓越的工程、易用性和真实世界性能。它在平衡速度和准确性的同时,通过强大的生态系统提供无缝的用户体验。
技术细节:
- 作者: Glenn Jocher
- 组织:Ultralytics
- 日期: 2020-06-26
- GitHub:https://github.com/ultralytics/yolov5
- 文档:https://docs.ultralytics.com/models/yolov5/
架构与设计
YOLOv5 利用CSPDarknet 主干网络结合PANet 颈部网络,用于高效的特征提取和聚合。其基于锚框的检测头经过高度优化以提高速度,使其适用于各种硬件。与纯粹的学术模型不同,YOLOv5 在设计时就考虑了部署,提供对iOS、Android和边缘设备的原生支持。
主要优势
- 良好维护的生态系统:YOLOv5 受益于多年的活跃开发,从而产生了详尽的文档、社区支持以及与 Ultralytics HUB 等工具的集成。
- 训练效率:与基于Transformer的架构相比,它以快速训练时间和较低的内存需求而闻名,使其在标准消费级GPU上易于使用。
- 多功能性:除了 detect 之外,YOLOv5 原生支持实例分割和图像分类,使开发者能够使用单一框架处理多种视觉任务。
- 部署就绪:凭借内置的导出功能,支持 ONNX、TensorRT、CoreML 和 TFLite 格式,从研究到生产的流程得以简化。
YOLOv9:实现最高精度的架构创新
YOLOv9于2024年发布,专注于解决深度网络中的信息丢失问题。它引入了新颖的概念来改进数据在模型中的传播方式,在COCO等基准测试中取得了最先进的结果。
技术细节:
- 作者: Chien-Yao Wang, Hong-Yuan Mark Liao
- 组织:台湾中央研究院信息科学研究所
- 日期: 2024-02-21
- Arxiv:https://arxiv.org/abs/2402.13616
- GitHub:https://github.com/WongKinYiu/yolov9
- 文档:https://docs.ultralytics.com/models/yolov9/
架构与创新
YOLOv9引入了两项主要的架构改进:
- 可编程梯度信息 (PGI):一种旨在缓解信息瓶颈问题的技术,确保完整的输入信息可用于损失函数计算。
- 广义高效层聚合网络 (GELAN):一种轻量级网络架构,优化了参数效率,使模型能够以比某些前身更少的参数实现更高的准确性。
主要优势
- 高精度:YOLOv9在目标检测精度方面树立了令人印象深刻的基准,尤其是在其更大的配置(YOLOv9-E)中。
- 参数效率:GELAN架构确保模型有效利用参数,提供了出色的精度与模型大小比。
- 理论进展:它解决了深度学习中关于深层信息保存的基本问题。
性能对比
比较这两种模型时,权衡通常在于速度和绝对精度之间。YOLOv9 在 COCO 数据集上取得了更高的 mAPval 分数,这表明 PGI 和 GELAN 的有效性。然而,Ultralytics YOLOv5 在推理速度方面仍然是一个强大的竞争者,特别是在 CPU 和边缘设备上,其优化的架构表现出色。
性能平衡
虽然YOLOv9在准确性排行榜上名列前茅,但YOLOv5通常为实时应用提供更实用的平衡,在标准硬件上提供显著更快的推理速度(毫秒),同时保持强大的detect能力。
| 模型 | 尺寸 (像素) | mAPval 50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (毫秒) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv5n | 640 | 28.0 | 73.6 | 1.12 | 2.6 | 7.7 |
| YOLOv5s | 640 | 37.4 | 120.7 | 1.92 | 9.1 | 24.0 |
| YOLOv5m | 640 | 45.4 | 233.9 | 4.03 | 25.1 | 64.2 |
| YOLOv5l | 640 | 49.0 | 408.4 | 6.61 | 53.2 | 135.0 |
| YOLOv5x | 640 | 50.7 | 763.2 | 11.89 | 97.2 | 246.4 |
| YOLOv9t | 640 | 38.3 | - | 2.3 | 2.0 | 7.7 |
| YOLOv9s | 640 | 46.8 | - | 3.54 | 7.1 | 26.4 |
| YOLOv9m | 640 | 51.4 | - | 6.43 | 20.0 | 76.3 |
| YOLOv9c | 640 | 53.0 | - | 7.16 | 25.3 | 102.1 |
| YOLOv9e | 640 | 55.6 | - | 16.77 | 57.3 | 189.0 |
训练与资源
对于开发者而言,训练效率 往往与推理速度同等重要。Ultralytics YOLOv5 以其“即训即用”的简洁性而闻名。与更新、更复杂的架构,特别是基于 Transformer 的模型(如 RT-DETR)相比,它在训练期间通常需要更少的内存。这种较低的入门门槛使用户能够在适度的硬件配置上训练自定义模型。
YOLOv9 虽然参数效率高,但在训练时可能更耗费资源,因为用于 PGI 的辅助分支结构复杂,这些分支在推理时会被移除,但在训练时会增加开销。
代码示例:统一接口
Ultralytics生态系统的一个主要优势是统一的Python API。您可以通过一行代码在YOLOv5和YOLOv9之间切换,这使得在您的特定数据集上对两者进行基准测试变得异常容易。
from ultralytics import YOLO
# Load an Ultralytics YOLOv5 model (pre-trained on COCO)
model_v5 = YOLO("yolov5su.pt")
# Train the model on your custom data
results_v5 = model_v5.train(data="coco8.yaml", epochs=100, imgsz=640)
# Load a YOLOv9 model for comparison
model_v9 = YOLO("yolov9c.pt")
# Train YOLOv9 using the exact same API
results_v9 = model_v9.train(data="coco8.yaml", epochs=100, imgsz=640)
理想用例
在这些模型之间进行选择取决于您的项目优先级:
何时选择 Ultralytics YOLOv5
- 边缘部署: 非常适合 Raspberry Pi、移动应用和嵌入式系统,在这些场景中,每一毫秒的延迟都至关重要。
- 快速原型开发:易用性、详尽的教程和社区支持使得开发周期极快。
- 多任务需求:如果您的项目需要 segment 或分类以及 detect,YOLOv5 提供了一个统一的解决方案。
- 资源限制:训练时GPU内存有限的项目将受益于YOLOv5的效率。
何时选择 YOLOv9
- 最大精度:对于医学成像或高精度工业检测等应用至关重要,因为漏检的代价高昂。
- 学术研究: 非常适合研究人员探索梯度信息流和网络架构设计的最新进展。
- 强大的硬件:当有充足的计算资源可用于训练和推理时,才能充分发挥其潜力。
结论
两种模型都代表了计算机视觉领域的卓越成就。Ultralytics YOLOv5 仍然是大多数开发者的务实选择,它提供了速度、可靠性和生态系统支持的无与伦比的组合。它是经过实战检验的、适用于实际部署的主力模型。另一方面,YOLOv9 展现了未来架构效率的潜力,为需要顶级精度的用户提供了解决方案。
对于那些寻求性能和多功能性方面绝对最新成果的用户,我们还推荐探索 YOLO11,它在 YOLOv5 和 YOLOv8 的优势基础上,在所有指标上均提供最先进的结果。
探索其他模型
如果您有兴趣进一步探索,请查看 Ultralytics 生态系统中的这些相关模型:
- YOLO11: 最新的 SOTA 模型,提供卓越的性能和多功能性。
- YOLOv8: 是一款强大的无锚框模型,支持detect、segment、姿势估计和旋转框检测。
- RT-DETR: 一种基于 Transformer 的实时 detector,适用于高精度应用。