YOLOv9 与YOLOv5:技术比较
在快速发展的计算机视觉领域,选择正确的物体检测模型是项目成功的关键。本分析报告对 YOLOv9之间进行了详细的技术比较。 Ultralytics YOLOv5之间进行了详细的技术比较。我们将探讨它们的架构差异、性能基准和理想用例,帮助您做出明智的决定。
YOLOv9:最大精度的建筑创新
YOLOv9 将于 2024 年初发布,通过解决深度学习信息流中的基本问题,瞄准物体检测的理论极限。它专为精度要求极高的场景而设计。
作者:王建尧、廖鸿源Chien-Yao Wang, Hong-Yuan Mark Liao
组织:台湾中央研究院信息科学研究所
日期:2024-02-21
Arxiv:arXiv:2402.13616
GitHub:WongKinYiu/yolov9
文档:YOLOv9 文档
核心架构
YOLOv9 引入了两个突破性概念:可编程梯度信息 (PGI)和广义高效层聚合网络 (GELAN )。PGI 可确保损失函数保留完整的输入信息,提高梯度可靠性,从而解决深度神经网络固有的信息瓶颈问题。GELAN 优化了参数效率,与之前利用深度卷积的架构相比,该模型能以更少的计算资源实现更高的精度。
优势与劣势
YOLOv9 的主要优势在于它在COCO 数据集等基准测试中达到了最先进的精度。它在检测其他模型可能无法检测到的小型或遮挡物体方面表现出色。然而,这种对检测准确性的关注是有代价的。它的训练过程可能更耗费资源,虽然它已集成到Ultralytics 生态系统中,但与历史悠久的模型相比,更广泛的社区支持和第三方工具仍未成熟。此外,它的主要重点仍然是检测,而其他模型则提供更广泛的多任务本地支持。
Ultralytics YOLOv5:多功能行业标准
自 2020 年发布以来,Ultralytics YOLOv5 已定义了实用、真实世界人工智能部署的标准。它在性能和可用性之间取得了精确的平衡,使其成为历史上使用最广泛的模型之一。
作者:Glenn JocherGlenn Jocher
组织:Ultralytics
日期:2020-06-26
GitHub:yolov5
文档:YOLOv5 文档
核心架构
YOLOv5 采用了经过改进的基于锚的架构,具有CSPDarknet53 主干网和PANet 颈网,可实现强大的特征聚合。其设计优先考虑推理速度和工程优化。该模型有各种规模(纳米级到超大型),允许开发人员根据自己的硬件限制(从嵌入式边缘设备到云计算 GPU)完美地调整模型。
Ultralytics 的优势
YOLOv9 突破了学术界限,而YOLOv5 则在工程实用性方面表现出色。
- 易用性: YOLOv5 以其 "安装即可运行 "的体验而闻名。精简的Python API和全面的文档大大减少了开发时间。
- 维护良好的生态系统:在Ultralytics 的支持下,YOLOv5 得到了积极的维护,在GitHub 上拥有庞大的社区,并与 MLOps 工具实现了无缝集成。
- 多功能性:除检测功能外,YOLOv5 还支持实例分割和图像分类,为各种视觉任务提供了统一的解决方案。
- 内存效率: Ultralytics 模型经过优化,在训练和推理过程中占用的内存更少,这与transformer的替代方案的高要求形成鲜明对比。
性能指标:速度与准确性
下面的比较凸显了这些模型的不同作用。YOLOv9 通常能达到更高的mAP (平均精度),尤其是在较大的模型尺寸(c 和 e)中。这使它在执行需要细化细节的任务时更胜一筹。
相反,YOLOv5 提供了无与伦比的推理速度,尤其是其 Nano (n) 和 Small (s) 变体。对于NVIDIA Jetson或Raspberry Pi 等边缘硬件上的实时应用,YOLOv5 凭借其轻量级特性和成熟的TensorRT 优化技术,仍然是最佳的竞争者。
| 模型 | 尺寸 (像素) | mAPval 50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (毫秒) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| 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 |
| 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 |
部署提示
为了获得最大的部署灵活性,这两种模型都可以导出为以下格式 ONNX、Ultralytics 和CoreML 等格式。这可确保您的模型在任何目标硬件上高效运行。
培训和可用性
培训方法在用户体验方面存在很大差异。Ultralytics YOLOv5 是专为提高训练效率而设计的,它提供了强大的预设,开箱即用,适用于自定义数据集。它具有自动锚计算、超参数演变和丰富的日志集成功能。
YOLOv9 虽然功能强大,但可能需要更仔细地调整超参数才能实现稳定性和收敛性,尤其是在较小的数据集上。不过,由于其集成到了 ultralytics 现在,开发人员可以使用与YOLOv5 相同的简单语法Python 训练YOLOv5,缩小了可用性方面的差距。
代码示例
使用Ultralytics 库,在这些架构之间切换就像更改模型名称一样简单。本代码段演示了如何加载和运行两种模型的推理:
from ultralytics import YOLO
# Load the established industry standard YOLOv5 (nano version)
model_v5 = YOLO("yolov5nu.pt")
# Run inference on an image
results_v5 = model_v5("path/to/image.jpg")
# Load the high-accuracy YOLOv9 (compact version)
model_v9 = YOLO("yolov9c.pt")
# Run inference on the same image for comparison
results_v9 = model_v9("path/to/image.jpg")
理想用例
何时选择YOLOv9
- 高精度检测:在每个像素都至关重要的制造装配线上检测微小缺陷。
- 高级研究:探索新型深度学习架构(如可编程梯度信息)的项目。
- 复杂环境:在高度遮挡或杂乱的场景中,GELAN 的高级特征聚合功能可提供决定性的优势。
何时选择YOLOv5
- 边缘部署:在电池供电设备或微控制器上运行,功耗和内存占用至关重要。
- 快速原型开发:当您需要在数小时而非数天内完成从数据收集到工作演示的过程时,可利用广泛的教程和社区资源。
- 多任务系统:需要在单个代码库中进行姿势估计 估计或分类以及检测的应用。
- 生产稳定性:企业环境需要久经考验、具有多年可靠性的解决方案。
结论
在YOLOv9 和YOLOv5 之间做出选择取决于您的具体限制条件。 YOLOv9是最大限度提高精确度的最佳选择,它提供了最先进的架构改进。 YOLOv5仍然是多功能性和易用性方面的佼佼者,它提供了一个强大的、支持良好的生态系统,简化了整个人工智能生命周期。
对于寻求两全其美的开发人员--将YOLOv5 的易用性与超越YOLOv9的性能相结合--YOLOv9建议探索 YOLO11.作为Ultralytics 的最新迭代产品,YOLO11 可在所有视觉任务中提供最先进的速度和精度,代表了YOLO 系列的未来。
探索其他模型
- YOLO11: Ultralytics 最新、最强大的检测、细分和姿势估计模型。
- YOLOv8: YOLO11 的前身,功能强大,兼顾各种特性。
- RT-DETR: transformer探测器,针对实时性能进行了优化。