YOLOv5 与 YOLOv9:深入技术比较
过去几年,计算机视觉和实时目标检测领域取得了显著进展。对于机器学习工程师而言,在成熟、经过实战检验的模型和较新的研究架构之间做出选择是一个普遍的挑战。本指南对YOLO系列中两个极具影响力的模型:YOLOv5和YOLOv9进行了全面的技术比较。
无论您是部署到受限边缘设备、研究高保真特征提取,还是构建复杂的目标检测管线,了解这些模型的架构细微之处、性能指标和生态系统差异都至关重要。
模型概述
在深入进行架构比较之前,了解每种模型的起源和主要目标会很有帮助。
Ultralytics YOLOv5
YOLOv5 由 Glenn Jocher 开发,并由Ultralytics于 2020 年 6 月 26 日发布,标志着开发者与视觉模型交互方式的范式转变。通过完全采用 PyTorch 框架,YOLOv5 用直观的、Python 优先的用户体验取代了早期基于 Darknet 模型的复杂编译步骤。
- 作者: Glenn Jocher
- 组织:Ultralytics
- 日期: 2020-06-26
- GitHub:YOLOv5 仓库
- 文档:YOLOv5 平台概述
YOLOv5以其易用性和在各种硬件环境中的稳定性能而闻名。它不仅支持detect,还支持图像分类和实例segment。
YOLOv9
YOLOv9由台湾中央研究院信息科学研究所的王建尧和廖弘源提出,其重点在于架构理论,以缓解深度神经网络中的信息瓶颈问题。
- 作者: Chien-Yao Wang 和 Hong-Yuan Mark Liao
- 组织: 台湾中研院资讯所
- 日期: 2024-02-21
- Arxiv:2402.13616
- GitHub:YOLOv9 仓库
- 文档:YOLOv9 文档
YOLOv9 的核心依赖于两大理论创新:可编程梯度信息 (PGI) 和广义高效层聚合网络 (GELAN)。这些概念有助于模型通过深度网络层保留关键的空间特征。
让您的部署面向未来
尽管YOLOv5和YOLOv9功能强大,但新发布的YOLO26代表了速度和精度的终极平衡。采用端到端NMS-free设计,并提供高达43%的CPU推理速度提升,YOLO26强烈推荐用于现代边缘计算和生产部署。
架构和技术差异
了解这些视觉模型内部的工作原理,对于优化模型部署策略至关重要。
特征提取与信息保留
YOLOv5采用跨阶段部分网络(CSPNet)骨干,有效减少了计算开销,同时在反向传播过程中保持了准确的梯度流。这种设计针对传统的GPU操作进行了高度优化,并确保在训练期间与大型Transformer替代方案相比具有更低的内存需求。
YOLOv9 引入了 GELAN,这是一种扩展 CSPNet 原理的通用架构。结合 PGI——一个辅助可逆分支——YOLOv9 确保深层不会丢失精确目标函数所需的语义数据。这使得 YOLOv9 能够实现高准确性,尤其是在小型对象上,尽管复杂的辅助分支有时会使导出到深度受限的边缘硬件的流程复杂化。
内存要求与训练效率
在训练效率方面,YOLOv5 依然非常强大。维护良好的Ultralytics 生态系统确保 YOLOv5 模型消耗显著更少的 CUDA 内存,从而允许研究人员在消费级 GPU 上最大化批处理大小。虽然 YOLOv9 实现了出色的参数效率(相对于其大小而言具有高精度),但如果未利用优化框架,其训练过程可能会更耗费资源。幸运的是,将 YOLOv9 集成到 Ultralytics API 中,使其在精简资源管理方面更接近 YOLOv5 的水平。
性能与指标
为了客观地评估这些架构,我们会在COCO等标准数据集上比较它们的性能。下面是mAP(平均精度均值)、推理速度和参数数量等指标的详细分解。
| 模型 | 尺寸 (像素) | 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 |
如表所示,YOLOv9在同等层级下实现了更高的原始精度,这反映了其更新的架构。然而,YOLOv5n保持了极低的TensorRT延迟,仅为1.12毫秒,这凸显了其在高速、本地化边缘计算应用中的持久优势。
训练方法与易用性
如今,利用 计算机视觉 的真正优势在于其工具链的易用性。
Ultralytics 优势
尽管像YOLOv9这样的模型的原始研究仓库是基础性的,但它们通常伴随着复杂的依赖矩阵和样板脚本。Ultralytics Python API完全抽象了这种复杂性。借助Ultralytics生态系统,您可以使用相同且统一的语法来训练、评估和导出YOLOv5和YOLOv9。
from ultralytics import YOLO
# Load a pre-trained YOLOv5 model for fast deployment
model_v5 = YOLO("yolov5s.pt")
# Or leverage a YOLOv9 model for high-fidelity accuracy
model_v9 = YOLO("yolov9c.pt")
# Train seamlessly on custom data with automatic MLflow logging
results = model_v9.train(data="coco8.yaml", epochs=50, imgsz=640)
# Export the trained model to ONNX
model_v9.export(format="onnx")
这种单一API方法提供了巨大的 多功能性,不仅支持 detect,还支持 姿势估计 和 旋转框检测 (obb),具体取决于所选模型。此外,与 Comet ML 和 Weights & Biases 等工具的强大集成直接内置于训练循环中。
理想用例和实际应用
这些架构之间的选择主要取决于您的硬件限制以及您的应用领域所需的精度。
何时选择 YOLOv5
YOLOv5 是一个久经考验的“老兵”,在优先考虑稳定性、低内存占用和极高导出兼容性的部署中表现出色。
- 移动部署:将YOLOv5导出到TFLite或CoreML,以便在旧款智能手机上进行设备端推理,这一过程非常无缝。
- 传统边缘硬件:对于树莓派或早期NVIDIA Jetson Nano等设备,YOLOv5的直接卷积确保了稳定的帧率,适用于智能停车管理等应用。
- 快速原型开发:社区教程、自定义 预训练权重 的广泛可用性以及大规模数据集兼容性,使其成为验证概念验证的最快方式。
何时选择 YOLOv9
YOLOv9 非常适用于需要捕捉复杂细节并最大限度地减少漏报的场景,即使这会带来略高的计算开销。
- 航空和卫星影像:PGI 框架非常擅长保持小目标的保真度,这使得 YOLOv9 非常适合基于无人机的农业监测。
- 医学影像诊断:在检测高分辨率扫描中的微小异常或病变时,GELAN 准确的梯度流在召回率方面提供了必要的优势。
- 高端零售分析:密集货架上重叠产品的跟踪显著受益于YOLOv9卓越的特征保留能力。
拓展您的视野
尽管比较YOLOv5和YOLOv9可以清晰地了解架构从2020年到2024年的演变,但AI领域的发展速度比以往任何时候都快。对于追求性能绝对前沿的开发者,强烈建议探索最新的YOLO26模型。通过用原生的端到端NMS-Free设计取代传统的非极大值抑制,并利用先进的MuSGD优化器,YOLO26弥合了研究级准确性与生产级速度之间的差距。凭借DFL移除(移除了分布焦点损失,以简化导出并提高边缘/低功耗设备的兼容性),YOLO26实现了高达43%的CPU推理速度提升,使其成为边缘计算的理想选择。此外,ProgLoss + STAL提供了改进的损失函数,在小目标识别方面有显著提升,这对于物联网、机器人和航空影像至关重要。
您可能也对将这些架构与 RT-DETR 或功能强大的 YOLO11 等其他最先进的模型进行比较感兴趣。利用统一的 Ultralytics 框架可确保无论您选择哪个模型,您的开发流水线都保持整洁、高效且易于扩展。