YOLOv5 与 YOLOv9 对比#
过去几年,计算机视觉和实时目标检测领域取得了显著进展。如何在成熟、经过实战检验的模型与较新的研究架构之间做出选择,是机器学习工程师经常面临的难题。本指南将从技术角度全面比较 YOLO 系列中两款影响深远的模型:YOLOv5 和 YOLOv9。
无论你是在受限的边缘设备上部署、研究高保真特征提取,还是构建复杂的目标检测流水线,了解这些模型在架构细节、性能指标和生态系统方面的差异都至关重要。
模型概述#
在深入比较架构之前,先了解每个模型的起源和主要目标会很有帮助。
Ultralytics YOLOv5#
YOLOv5 由 Glenn Jocher 开发,于 2020 年 6 月 26 日由 Ultralytics 发布,彻底改变了开发者使用视觉模型的方式。YOLOv5 全面采用 PyTorch 框架,以直观、以 Python 为先的用户体验,取代了早期基于 Darknet 的模型所需的复杂编译步骤。
- 作者: 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(平均精度均值)、推理速度和参数量等指标的详细对比。
| 模型 | 尺寸 (像素) | mAP验证集 50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (ms) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv5n | 640 | 28.0 | - | 1.12 | 1.9 | 4.5 |
| YOLOv5s | 640 | 37.4 | - | 1.92 | 7.2 | 16.5 |
| YOLOv5m | 640 | 45.4 | - | 4.03 | 21.2 | 49.0 |
| YOLOv5l | 640 | 49.0 | - | 6.61 | 46.5 | 109.1 |
| YOLOv5x | 640 | 50.7 | - | 11.89 | 86.7 | 205.7 |
| YOLOv9t | 640 | 38.3 | - | 2.3 | 2.0 | 7.7 |
| YOLOv9s | 640 | 46.8 | - | 3.54 | 7.2 | 26.7 |
| YOLOv9m | 640 | 51.4 | - | 6.43 | 20.1 | 76.8 |
| YOLOv9c | 640 | 53.0 | - | 7.16 | 25.5 | 102.8 |
| YOLOv9e | 640 | 55.6 | - | 16.77 | 58.1 | 192.5 |
如表所示,在相同级别下,YOLOv9 的原始准确率更高,体现了其更新的架构。不过,YOLOv5n 的 TensorRT 延迟低至 1.12ms,突显了它在高速、本地化边缘计算应用中的持久优势。
训练方法与易用性#
如今,利用计算机视觉的真正优势在于工具链的易用性。
Ultralytics 优势#
YOLOv9 等模型的原始研究代码仓库固然重要,但往往依赖关系复杂,还包含大量样板脚本。Ultralytics Python API彻底屏蔽了这些复杂性。借助 Ultralytics 生态系统,你可以使用相同的统一语法训练、评估和导出 YOLOv5 与 YOLOv9。
from ultralytics import YOLO
# 加载预训练的 YOLOv5 模型以快速部署
model_v5 = YOLO("yolov5su.pt") # YOLOv5u:适用于 ultralytics 软件包的无锚框 YOLOv5 权重
# 或者使用 YOLOv9 模型获得高保真准确率
model_v9 = YOLO("yolov9c.pt")
# 轻松使用自定义数据训练
results = model_v9.train(data="coco8.yaml", epochs=50, imgsz=640)
# 将训练好的模型导出为 ONNX
model_v9.export(format="onnx")这种单一 API 的方式提供了极强的通用性,不仅支持检测,还能根据所选模型支持姿态估计和有向边界框(OBB)。此外,训练循环还直接集成了与 Comet ML 和 Weights & Biases 等工具的可靠集成。
理想用例和实际应用#
选择哪种架构,主要取决于硬件限制和应用领域对精度的要求。
何时选择 YOLOv5#
YOLOv5 是一款经过实战考验的成熟模型,在注重稳定性、低内存占用和广泛导出兼容性的部署场景中表现出色。
- 移动端部署:将 YOLOv5 导出为 LiteRT 或 CoreML,以便在较旧的智能手机上进行设备端推理,过程非常简单。
- 旧款边缘硬件:对于 Raspberry Pi 或早期一代的 NVIDIA Jetson Nano 等设备,YOLOv5 简洁的卷积操作能为智能停车管理等应用提供稳定的帧率。
- 快速原型开发:丰富的社区教程、大量可用的自定义预训练权重以及对各种数据集的广泛兼容,使它成为验证概念验证最快的方式。
何时选择 YOLOv9#
YOLOv9 适用于必须捕捉细节并尽可能减少漏检的场景,即使这需要稍多一些计算资源。
- 航空与卫星影像:PGI 框架非常擅长保持小目标的保真度,因此 YOLOv9 非常适合无人机农业监测。
- 医学影像诊断:在高分辨率扫描图像中检测微小异常或病灶时,GELAN 准确的梯度流有助于提升召回率。
- 高端零售分析:在货架密集摆放的商品中追踪相互重叠的商品,可以显著受益于 YOLOv9 更强的特征保留能力。
拓展视野#
比较 YOLOv5 和 YOLOv9,可以清楚地看到架构从 2020 年到 2024 年的演进,但 AI 领域的发展速度前所未有。对于希望追求性能前沿的开发者,我们强烈建议探索最新的 YOLO26 模型。YOLO26 提供原生的端到端无 NMS 设计(nms=False),可作为传统非极大值抑制的替代方案,并采用先进的 MuSGD 优化器,弥合研究级准确率与生产级速度之间的差距。通过移除 DFL(移除分布焦点损失,以简化导出并提升对边缘设备和低功耗设备的兼容性),YOLO26 的 CPU 推理速度最高提升 43%,非常适合边缘计算。此外,ProgLoss + STAL 提供了改进的损失函数,显著提升小目标识别能力,这对物联网、机器人和航空影像至关重要。
你可能也会想把这些架构与其他先进模型进行比较,例如 RT-DETR 或功能强大的 YOLO11。借助统一的 Ultralytics 框架,无论你选择哪种模型,开发流水线都能保持简洁、高效,并随时扩展。