YOLOv9 与 YOLOv7#
实时目标检测的发展,源于人们持续追求计算效率与高精度之间的平衡。在这一发展历程中,YOLOv9 和 YOLOv7 是两款里程碑式架构,均由中国台湾中央研究院信息科学研究所的研究人员开发。YOLOv7 引入了革命性的可训练免费赠品组合,而较新的 YOLOv9 则直面深度学习中的信息瓶颈问题。
本技术综合对比将探讨两款模型在架构上的差异、性能指标和理想部署场景,帮助机器学习工程师和研究人员为计算机视觉流程选择合适的工具。
性能与指标对比#
比较这些模型时,原始性能和效率是关键因素。下表详细列出了标准 COCO 数据集基准测试中的平均精度均值(mAP)和计算需求。
| 模型 | 尺寸 (像素) | mAP验证集 50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (ms) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| 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 |
| YOLOv7l | 640 | 51.4 | - | 6.84 | 36.9 | 104.7 |
| YOLOv7x | 640 | 53.1 | - | 11.57 | 71.3 | 189.9 |
请注意,YOLOv9c 的精度(53.0 mAP)与 YOLOv7x(53.1 mAP)大致相同,但所需参数(25.5M 对 71.3M)和 FLOPs 显著更少。这体现了现代架构在性能平衡方面的改进。
YOLOv9:解决信息瓶颈#
YOLOv9 于 2024 年初推出,从根本上改变了深度神经网络在各层中保留数据的方式。
- 作者:Chien-Yao Wang 和 Hong-Yuan Mark Liao
- 机构:中央研究院信息科学研究所
- 日期: 2024 年 2 月 21 日
- 资源:arXiv 论文 | GitHub 代码仓库
架构创新#
YOLOv9 引入了通用高效层聚合网络(GELAN)和可编程梯度信息(PGI)。GELAN 结合 CSPNet 和 ELAN 的优势,以优化参数效率和计算成本,确保在参数量更少的情况下依然保持高精度。PGI 是一种辅助监督框架,旨在防止深层网络中的数据丢失,并在训练过程中生成可靠的梯度来更新权重。
优势与局限#
YOLOv9 的主要优势是能够在不产生巨大计算开销的情况下提取细微特征,因此非常适合医学图像分析等要求特征保真度高的任务。不过,与结构更统一的框架相比,训练过程中复杂的 PGI 结构会让初学者更难进行自定义架构修改。
YOLOv7:免费赠品组合的先驱#
YOLOv7 于 2022 年发布,为消费级硬件所能实现的性能设立了新标杆,并通过架构创新显著提升了实时推理速度。
- 作者: Chien-Yao Wang、Alexey Bochkovskiy 和 Hong-Yuan Mark Liao
- 机构:中央研究院信息科学研究所
- 日期:2022 年 7 月 6 日
- 资源:arXiv 论文 | GitHub 代码仓库
架构创新#
YOLOv7 的核心贡献是扩展高效层聚合网络(E-ELAN)。这种架构使模型能够持续学习更多样的特征。此外,YOLOv7 还采用了“可训练免费赠品组合”,包括预先规划的重参数化卷积和动态标签分配等技术。这些方法能够提高模型训练期间的精度,且不会增加部署时的推理成本。
优势与局限#
YOLOv7 针对实时边缘处理进行了高度优化,在旧系统和旧版 CUDA 环境中仍然广泛应用。如今,它的主要局限在于参数量大于较新的模型。如性能表所示,要达到顶级精度,需要使用大型 YOLOv7x 模型,其所需的 GPU 内存远多于同等的现代架构。
Ultralytics 的优势:简化部署#
YOLOv9 和 YOLOv7 的原始研究代码仓库为学术研究提供了出色的基础,但在生产环境中部署这些模型可能很复杂。通过 ultralytics 包集成 YOLOv9(YOLOv7 仅支持通过导出的 ONNX 或 TensorRT 模型使用),可带来无与伦比的易用性。
借助集成式 Ultralytics Platform,开发者可以使用维护完善的生态系统,其中包括直观的 Python API、活跃的社区支持和强大的实验跟踪功能。
借助 YOLO26 面向未来#
如果你正在启动新的计算机视觉项目,我们强烈建议优先考虑新发布的 YOLO26,而不是 YOLOv9 和 YOLOv7。作为全新的先进标准,YOLO26 带来了突破性进展:
- 端到端无 NMS 设计:可选的一对一检测头(
nms=False)跳过非极大值抑制后处理,大幅降低部署复杂度和延迟。 - CPU 推理速度最高提升 43%:针对边缘计算环境进行了优化,确保你的应用即使没有独立 GPU 也能流畅运行。
- MuSGD 优化器: 这是一种受 LLM 训练启发的混合优化器,可实现高度稳定的收敛并缩短训练时间。
- 移除 DFL: 通过移除 Distribution Focal Loss 简化模型导出,提升与低功耗移动设备的兼容性。
- ProgLoss + STAL: 大幅提升小目标检测性能,因此成为航拍图像和监控场景的首选。
生态系统中的其他热门替代方案包括 Ultralytics YOLOv8 和 YOLO11,两者都能灵活胜任多种任务,例如实例分割和姿态估计。
实现示例#
借助统一 API,训练和导出 YOLOv9 或 YOLO26 非常简单。以下代码展示了 Ultralytics 工具所具备的精简训练效率。
from ultralytics import YOLO
# 初始化 YOLOv9 或推荐的 YOLO26 模型
model = YOLO("yolov9c.pt") # 替换为 "yolo26n.pt" 以提升边缘设备上的运行速度
# 使用内置数据增强在自定义数据集上训练
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, batch=16, device=0)
# 将训练好的模型导出为 ONNX 格式,以便部署
model.export(format="onnx")在消费级硬件上训练时,内存效率至关重要。与 Transformer 模型(例如 RT-DETR)在训练期间往往出现严重内存膨胀不同,Ultralytics 对 YOLOv9 和 YOLO26 的实现经过了大量优化,可减少显存峰值。
实际应用与理想用例#
如何选择这些架构,通常取决于你的生产环境所受的具体限制。
何时使用 YOLOv9: 在需要保留细微细节的场景中,YOLOv9 表现出色。其强大的特征提取能力使它非常适合用于零售分析,例如统计货架上密集摆放的商品;也适用于农业场景,因为识别小叶片上的早期作物病害至关重要。
何时使用 YOLOv7: 对于旧有部署流程,YOLOv7 仍是一个可靠的候选方案。如果你要集成到较旧的硬件系统(例如某些代际的 Google Coral Edge TPU),YOLOv7 简洁的 CNN 架构可能比新模型更容易编译。
何时使用 YOLO26(推荐): 对于任何现代部署场景——从自主无人机到智慧城市交通管理——YOLO26 都是更胜一筹的选择。其无需 NMS 的架构可确保推理时间确定,这对安全关键型机器人至关重要;同时,它在各方面的精度都超过 YOLOv9 和 YOLOv7。