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 定义了实用、真实世界 AI 部署的标准。它在性能和可用性之间取得了精确的平衡,使其成为历史上使用最广泛的模型之一。
作者:Glenn JocherGlenn Jocher
组织:Ultralytics
日期:2020-06-26
GitHub:yolov5
文档:YOLOv5 文档
核心架构
YOLOv5 采用精细的基于锚框的架构,具有CSPDarknet53 主干网络和PANet 颈部网络,用于鲁棒的特征聚合。其设计优先考虑推理速度和工程优化。该模型有多种尺寸(从 Nano 到超大),允许开发者根据其硬件限制完美适配模型,从嵌入式边缘设备到云端 GPU。
Ultralytics 优势
虽然YOLOv9推动学术边界,但YOLOv5在工程实用性方面表现出色。
- 易用性: YOLOv5 以其“安装即运行”的体验而闻名。简化的 python API 和全面的文档显著缩短了开发时间。
- 完善的生态系统:在Ultralytics的支持下,YOLOv5享有积极的维护、GitHub上的庞大社区以及与MLOps工具的无缝集成。
- 多功能性:除了 detect 之外,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 |
部署提示
为了最大限度地提高部署灵活性,两种模型都可以使用 Ultralytics 导出模式导出为 ONNX、TensorRT 和 Core ML 等格式。这确保了您的模型在任何目标硬件上高效运行。
训练与可用性
训练方法在用户体验方面存在显著差异。Ultralytics YOLOv5 旨在实现 训练效率,提供开箱即用的强大预设,适用于自定义数据集。它具有自动锚点计算、超参数演进和丰富的日志集成功能。
YOLOv9 虽然功能强大,但可能需要更仔细地调整超参数以实现稳定性和收敛性,尤其是在较小的数据集上。然而,由于它已集成到 ultralytics Python 包,开发者现在可以使用与 YOLOv5 相同的简单语法训练 YOLOv9,弥合了可用性差距。
代码示例
借助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
何时选择 YOLOv5
- 边缘部署: 在电池供电设备或微控制器上运行,在这些场景中,功耗和 内存占用 至关重要。
- 快速原型开发:当您需要利用详尽的教程和社区资源,在数小时而非数天内从数据收集到可工作的演示时。
- 多任务系统:在单一代码库中需要姿势估计或分类以及 detect 的应用。
- 生产稳定性:需要经过多年可靠性验证且久经考验的解决方案的企业环境。
结论
YOLOv9 和 YOLOv5 之间的选择取决于您的具体限制。YOLOv9 是最大化准确性的卓越选择,提供了尖端的架构改进。YOLOv5 仍然是多功能性和易用性的典范,提供了一个强大且支持良好的生态系统,简化了整个 AI 生命周期。
对于寻求两全其美——结合 YOLOv5 的易用性与超越 YOLOv9 的性能——的开发者而言,我们推荐探索 YOLO11。作为 Ultralytics 的最新迭代,YOLO11 在所有视觉任务中提供了最先进的速度和准确性,代表着 YOLO 家族的未来。
探索其他模型
- YOLO11: Ultralytics 最新的、最强大的模型,用于 detect、segment 和 姿势估计。
- YOLOv8: 是YOLO11强大的前代产品,在功能方面实现了很好的平衡。
- RT-DETR: 一种基于 Transformer 的 detector,针对实时性能进行了优化。