Ultralytics YOLO27: 加入候补名单。
Get Started

YOLOv9 与 YOLOv7#

实时目标检测的发展,源于持续平衡计算效率与高精度的努力。YOLOv9 和 YOLOv7 是这一历程中的两种重要架构,均由台湾中央研究院信息科学研究所的研究人员开发。YOLOv7 引入了可训练的免费增益包方法,而较新的 YOLOv9 则直面深度学习中的信息瓶颈问题。

这篇技术对比将探讨两种模型的架构差异、性能指标和理想部署场景,帮助 ML 工程师和研究人员为计算机视觉流水线选择合适的工具。

性能与指标对比#

比较这些模型时,原始性能和效率是关键因素。下表详细列出了标准 COCO 数据集基准测试中的平均精度均值(mAP)和计算需求。

模型尺寸
(像素)
mAP验证集
50-95
速度
CPU ONNX
(毫秒)
速度
T4 TensorRT10
(ms)
参数
(M)
FLOPs
(B)
YOLOv9t64038.3-2.32.07.7
YOLOv9s64046.8-3.547.226.7
YOLOv9m64051.4-6.4320.176.8
YOLOv9c64053.0-7.1625.5102.8
YOLOv9e64055.6-16.7758.1192.5
YOLOv7l64051.4-6.8436.9104.7
YOLOv7x64053.1-11.5771.3189.9
性能平衡

请注意,YOLOv9c 的精度(53.0 mAP)与 YOLOv7x(53.1 mAP)大致相当,但参数量约少 64%(25.5M 对比 71.3M),FLOPs 也约为其一半(102.8B 对比 189.9B),这表明现代架构在精度与效率的平衡方面取得了显著进步。

YOLOv9:解决信息瓶颈#

YOLOv9 于 2024 年初推出,改变了深度神经网络在各层中保留信息的方式。

架构创新#

YOLOv9 引入了广义高效层聚合网络(GELAN)和可编程梯度信息(PGI)。GELAN 结合 CSPNet 和 ELAN 的优势,以优化参数效率和计算成本,从而以更少的参数实现高精度。PGI 是一种辅助监督框架,旨在防止深层网络中的数据丢失,并在训练过程中生成可靠的梯度来更新权重。

优势与局限#

YOLOv9 的主要优势在于无需大量计算开销就能提取细微特征,因此非常适合需要高特征保真度的任务,例如医学图像分析。不过,与更统一的框架相比,训练期间复杂的 PGI 结构可能会让初学者更难进行自定义架构修改。

了解有关 YOLOv9 的更多信息

YOLOv7:免费赠品组合的先驱#

YOLOv7 于 2022 年发布,为实时检测树立了新的基准,并通过结构创新显著提升了实时推理速度。

架构创新#

YOLOv7 的核心贡献是扩展高效层聚合网络(E-ELAN)。这种架构使模型能够持续学习更多样的特征。此外,YOLOv7 还采用了“可训练免费赠品组合”,包括预先规划的重参数化卷积和动态标签分配等技术。这些方法能够提高模型训练期间的精度,且不会增加部署时的推理成本。

优势与局限#

YOLOv7 针对实时边缘处理进行了高度优化,在传统系统和较旧的 CUDA 环境中仍然广泛使用。它如今的主要局限是参数量比新模型更大。性能表显示,要达到顶级精度,需要使用更大的 YOLOv7x 模型,其 GPU 内存需求远高于性能相当的现代架构。

详细了解 YOLOv7

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。

评论