YOLOv5 与 YOLOv9#
过去几年,计算机视觉和实时目标检测领域取得了显著进展。对于机器学习工程师而言,在经过实践验证的成熟模型与更新的研究架构之间做出选择,往往是一项常见挑战。本指南将对 YOLO 家族中两个极具影响力的模型进行全面技术比较:YOLOv5 和 YOLOv9。
无论你是在受限的边缘设备上进行部署、研究高保真特征提取,还是构建复杂的目标检测流水线,理解这些模型的架构细节、性能指标和生态系统差异都至关重要。
模型概览#
在深入比较架构之前,了解每个模型的起源和主要目标会很有帮助。
Ultralytics YOLOv5#
YOLOv5 由 Glenn Jocher 开发,并于 2020 年 6 月 26 日由 Ultralytics 发布,改变了开发者与视觉模型交互的方式。通过全面采用 PyTorch 框架,YOLOv5 摆脱了早期基于 Darknet 的模型所需的复杂编译步骤,提供了直观、以 Python 为先的用户体验。
- 作者: Glenn Jocher
- 组织: Ultralytics
- 日期: 2020-06-26
- GitHub: YOLOv5 代码仓库
- 文档: YOLOv5 文档
YOLOv5 以易用性和在各种硬件环境中的稳定性能而闻名。它不仅支持检测,还支持图像分类和实例分割。
YOLOv9#
YOLOv9 由来自中国台湾中央研究院信息科学研究所的 Chien-Yao Wang 和 Hong-Yuan Mark Liao 提出,重点关注架构理论,以缓解深度神经网络中的信息瓶颈问题。
- 作者: Chien-Yao Wang 和 Hong-Yuan Mark Liao
- 机构: 中国台湾中央研究院信息科学研究所
- 日期: 2024-02-21
- Arxiv: 2402.13616
- GitHub: YOLOv9 代码仓库
- 文档: YOLOv9 文档
YOLOv9 的核心依赖两项重要的理论创新:可编程梯度信息(PGI)和广义高效层聚合网络(GELAN)。这些概念帮助模型在深层网络层中保留关键的空间特征。
虽然 YOLOv5 和 YOLOv9 功能强大,但新发布的 YOLO26 代表了速度与精度之间的终极平衡。YOLO26 采用端到端、无 NMS 的设计,CPU 推理速度最高提升 43%,非常适合现代边缘计算和生产环境部署。
架构与技术差异#
了解这些视觉模型底层的驱动机制,对于优化模型部署策略至关重要。
特征提取与信息保留#
YOLOv5 使用跨阶段部分网络(CSPNet)骨干网络,在保持反向传播期间梯度准确流动的同时,有效降低计算开销。与大型 Transformer 替代方案相比,这种设计针对传统 GPU 运算进行了高度优化,并确保训练期间所需的内存更少。
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.12ms,凸显了它在高速、本地化边缘计算应用中的持久优势。
训练方法与易用性#
如今,利用计算机视觉的真正优势在于工具链的易用性。
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 方案提供了极大的灵活性,根据所选模型,不仅支持检测,还支持姿态估计和定向边界框(OBB)。此外,它还将与 Comet ML 和 Weights & Biases 等工具的稳健集成直接融入训练循环。
理想用例与实际应用#
在这些架构之间进行选择,很大程度上取决于硬件限制以及应用领域所需的精度。
何时选择 YOLOv5#
YOLOv5 是一位久经考验的成熟模型,擅长稳定性优先、内存占用低且导出兼容性极高的部署场景。
- 移动端部署: 将 YOLOv5 导出为 TFLite 或 CoreML,以便在较旧的智能手机上进行设备端推理,过程非常顺畅。
- 传统边缘硬件: 对于 Raspberry Pi 或早期版本的 NVIDIA Jetson Nano 等设备,YOLOv5 的简洁卷积可确保智能停车管理等应用获得稳定的帧率。
- 快速原型开发: 丰富的社区教程、自定义预训练权重以及广泛的数据集兼容性,使其成为验证概念验证最快的方式。
何时选择 YOLOv9#
当捕捉复杂细节和最大限度减少漏检绝对关键时,YOLOv9 非常理想,即使这需要略高的计算开销。
- 航空与卫星图像: PGI 框架非常擅长保持小目标的保真度,使 YOLOv9 非常适合基于无人机的农业监测。
- 医学影像诊断: 在高分辨率扫描图像中检测微小异常或病灶时,GELAN 准确的梯度流在召回率方面提供了必要的优势。
- 高端零售分析: 在密集货架上跟踪相互重叠的商品,可显著受益于 YOLOv9 更强的特征保留能力。
拓展你的视野#
比较 YOLOv5 和 YOLOv9,可以清晰了解架构从 2020 年到 2024 年的演变,但 AI 领域的发展速度前所未有。对于寻求顶尖性能的开发者,强烈建议探索最新的 YOLO26 模型。YOLO26 以原生的端到端无 NMS 设计取代传统的非极大值抑制,并采用先进的 MuSGD 优化器,弥合了研究级准确率与生产级速度之间的差距。借助 DFL 移除(移除分布焦点损失,以简化导出并提升边缘设备和低功耗设备的兼容性),YOLO26 的 CPU 推理速度最高提升 43%,非常适合边缘计算。此外,ProgLoss + STAL 提供了改进的损失函数,在小目标识别方面取得了显著提升,这对于物联网、机器人和航空图像至关重要。
你可能还会有兴趣将这些架构与其他先进模型进行比较,例如 RT-DETR 或功能强大的 YOLO11。采用统一的 Ultralytics 框架可以确保无论你选择哪个模型,开发流水线都保持简洁、高效并可随时扩展。