YOLOv9 与 YOLOv7#
实时目标检测的发展,源于持续平衡计算效率与高精度的努力。YOLOv9 和 YOLOv7 是这一历程中的两种重要架构,均由台湾中央研究院信息科学研究所的研究人员开发。YOLOv7 引入了可训练的免费增益包方法,而较新的 YOLOv9 则直面深度学习中的信息瓶颈问题。
这篇技术对比将探讨两种模型的架构差异、性能指标和理想部署场景,帮助 ML 工程师和研究人员为计算机视觉流水线选择合适的工具。
性能与指标对比#
比较这些模型时,原始性能和效率是关键因素。下表详细列出了标准 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)大致相当,但参数量约少 64%(25.5M 对比 71.3M),FLOPs 也约为其一半(102.8B 对比 189.9B),这表明现代架构在精度与效率的平衡方面取得了显著进步。
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 面向未来#
如果你要启动新的计算机视觉项目,Ultralytics 推荐选择于 2026 年 1 月发布的 YOLO26,而不是 YOLOv9 或 YOLOv7。YOLO26 带来了多项改进:
- 端到端无 NMS 设计:可选的单对单检测头(
nms=False)会跳过非极大值抑制(NMS)后处理,从而降低部署复杂度和延迟。 - CPU 推理速度最高提升 43%:YOLO26n 在 CPU 上的运行速度比 YOLO11n 快 43%,因此即使没有独立 GPU,应用也能在边缘计算环境中流畅运行。
- MuSGD 优化器:受 LLM 训练启发的 SGD 与 Muon 混合优化器,可实现稳定收敛并缩短训练时间。
- 移除 DFL: 通过移除 Distribution Focal Loss 简化模型导出,提升与低功耗移动设备的兼容性。
- ProgLoss + STAL:渐进式损失和小目标感知标签分配(STAL)可改善小目标检测,有利于航空影像和监控任务。
生态系统中的其他热门替代方案包括 Ultralytics YOLOv8 和 YOLO11,两者都支持多种任务,例如实例分割和姿态估计。
实现示例#
如下方代码所示,借助统一 API,训练和导出 YOLOv9 或 YOLO26 都很简单。
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。