YOLOv5 与YOLOv9:全面技术比较
实时物体检测技术的发展以精度和效率的快速提升为标志。这一历程中的两个重要里程碑是 Ultralytics YOLOv5,该模型为可用性和部署设定了行业标准,以及 YOLOv9和 YOLOv9,后者是一个以研究为重点的架构,推动了深度学习理论的发展。
本技术比较分析了它们的架构、性能指标和理想用例,以帮助开发人员和研究人员为其计算机视觉项目选择合适的工具。
Ultralytics YOLOv5:多功能性的行业标准
自发布以来、 YOLOv5已成为全球最受欢迎的视觉人工智能模型之一。该模型由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 上使用。
- 多功能性:除检测外,YOLOv5 本身还支持实例分割和图像分类,使开发人员能够使用单个框架处理多项视觉任务。
- 部署就绪:内置导出功能,可将数据导出至 ONNX, TensorRT、CoreML 和TFLite 的内置导出功能,简化了从研究到生产的过程。
YOLOv9:最大精度的建筑创新
2024 年发布、 YOLOv9专注于解决深度网络中的信息丢失问题。它引入了新概念来改进数据在模型中的传播方式,在以下基准测试中取得了最先进的结果 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)。
- 参数效率:GELAN 架构可确保模型有效地使用参数,从而提供较高的精度权重比。
- 理论进步:它解决了深度学习中有关深层信息保存的基本问题。
性能对比
在比较这两个模型时,通常需要在速度和绝对准确性之间进行权衡。YOLOv9 在COCO 数据集上获得了更高的mAPval分数,证明了 PGI 和 GELAN 的有效性。但是 Ultralytics YOLOv5在推理速度方面仍然是一个强大的竞争对手,尤其是在 CPU 和边缘设备上,其优化的架构在这些地方大放异彩。
性能平衡
而YOLOv9 则在准确度排行榜上名列前茅、 YOLOv5通常能为实时应用提供更实用的平衡,在标准硬件上提供更快的推理速度(毫秒),同时保持强大的检测能力。
| 模型 | 尺寸 (像素) | 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、移动应用程序和嵌入式系统,在这些系统中,每毫秒的延迟都至关重要。
- 快速原型开发:易用性、广泛的教程和社区支持使得开发周期快得惊人。
- 多任务要求:如果您的项目需要在检测的同时进行分割或分类,YOLOv5 提供统一的解决方案。
- 资源限制:用于训练的GPU 内存有限的项目将受益于YOLOv5 的高效性。
何时选择YOLOv9
- 最大精度:对于医疗成像或高精度工业检测等应用至关重要,因为在这些应用中,错过一次检测的代价是高昂的。
- 学术研究:是研究人员探索最新梯度信息流和网络架构设计的绝佳选择。
- 强大的硬件:最好在有充足的计算资源进行训练和推理时使用,以充分发挥其潜力。
结论
这两种型号都是计算机视觉领域的杰出代表。 Ultralytics YOLOv5仍然是大多数开发人员的务实之选,它提供了无与伦比的速度、可靠性和生态系统支持。它是经过实际部署考验的主力产品。 YOLOv9则让人看到了架构效率的未来,为有需要的人提供了顶级的准确性。
对于那些追求绝对最新性能和多功能性的人,我们还推荐探索 YOLO11,它以YOLOv5 和YOLOv8 的优势为基础,在所有指标上都能提供最先进的结果。
探索其他模型
如果您有兴趣进一步了解,请查看Ultralytics 生态系统中的相关模型:
- YOLO11:最新的 SOTA 型号,性能卓越,用途广泛。
- YOLOv8:一个强大的无锚模型,支持检测、分割、姿势估计和旋转框检测。
- RT-DETR: transformer实时检测器,适用于高精度应用。