YOLOv7 与 YOLOv9#
实时目标检测领域发展迅速,每一代模型都在不断突破边缘设备和云服务器的能力边界。在为计算机视觉项目评估架构时,开发者经常会将成熟的基准模型与新兴创新成果进行比较。本指南全面对比 YOLO 系列中的两个重要里程碑:YOLOv7 和 YOLOv9。
我们将分析它们的架构突破、性能指标和理想部署场景,帮助你为应用选择合适的模型。我们还将探讨 Ultralytics Platform 和 Python API 如何让 YOLOv9 等受支持模型更易于训练、验证和部署。
模型演进与技术规格#
了解这些模型的起源和设计理念,有助于理解它们的能力。两种模型有着相同的研究渊源,但针对不同的架构瓶颈。
YOLOv7:免费赠品组合的先驱#
YOLOv7 于 2022 年年中发布,凭借高度可靠且经过充分优化的架构确立了自己的地位。它引入了结构重参数化和“可训练的免费技巧包”方法,在保持高推理速度的同时,不会牺牲平均精度均值 (mAP)。
- 作者: Chien-Yao Wang、Alexey Bochkovskiy 和 Hong-Yuan Mark Liao
- 机构: 台湾中央研究院资讯科学研究所
- 日期:2022 年 7 月 6 日
- Arxiv:2207.02696
- GitHub: WongKinYiu/yolov7
架构创新:YOLOv7 采用扩展高效层聚合网络(E-ELAN),通过扩展、打乱和合并基数,让模型学习更多样的特征。这种设计充分利用 GPU,并实现出色的推理延迟。不过,与较新的模型相比,它在复杂训练过程中可能需要大量内存。
YOLOv9:解决信息瓶颈#
YOLOv9 于 2024 年初由同一研究团队推出,旨在解决深度神经网络固有的“信息瓶颈”问题。数据经过深层网络时,关键细节往往会丢失。YOLOv9 通过全新的层设计缓解了这一问题。
- 作者:Chien-Yao Wang 和 Hong-Yuan Mark Liao
- 机构: 台湾中央研究院资讯科学研究所
- 日期: 2024 年 2 月 21 日
- Arxiv: 2402.13616
- GitHub: WongKinYiu/yolov9
架构创新:YOLOv9 引入了可编程梯度信息(PGI)和广义高效层聚合网络(GELAN)。PGI 确保可靠的梯度得到保留,并反馈用于准确更新权重。GELAN 最大限度地提高参数效率,让 YOLOv9 能以比前代模型少得多的 FLOPs 实现高准确度。
性能分析#
选择架构时,AI 工程师必须在准确度、推理速度和计算成本之间取得平衡。下表重点展示了这些模型在标准 COCO 数据集上的性能差异。
| 模型 | 尺寸 (像素) | mAP验证集 50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (ms) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv7l | 640 | 51.4 | - | 6.84 | 36.9 | 104.7 |
| YOLOv7x | 640 | 53.1 | - | 11.57 | 71.3 | 189.9 |
| 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 |
要点总结#
- 参数效率:YOLOv9m 仅使用约少 45% 的参数(20.1M 对比 36.9M),就达到了与 YOLOv7l 相同的准确度(mAP 为 51.4%)。参数大幅减少,使 YOLOv9m 更容易部署到内存受限的边缘 AI设备上。
- 微型部署:YOLOv9t(微型)版本的推出,为实时性要求极高的环境带来了惊人的速度(T4 上为 2.3ms TensorRT)。
- 最高准确度:对于精度至关重要的应用,YOLOv9e 将检测准确度提升至 55.6% mAP,显著优于 YOLOv7x。
YOLOv7 和 YOLOv9 实力强劲,而新发布的 YOLO26 则代表着决定性的飞跃。YOLO26 引入了原生的 端到端无 NMS 设计(可通过 nms=False 选用),无需复杂的后处理,并可将 CPU 推理速度提升至多 43%。凭借全新的 MuSGD 优化器以及改进的 ProgLoss + STAL 损失函数,YOLO26 实现了卓越的训练稳定性和小目标检测精度。
Ultralytics 优势#
选择模型架构只是第一步。围绕模型的软件生态决定了你从原型开发迈向生产部署的速度。通过 Ultralytics Python API 集成 YOLOv9 等受支持的模型,能为开发者和研究人员带来显著优势。
易用性与训练效率#
过去,训练 YOLOv7 需要复杂的数据准备和大量定制脚本。Ultralytics 框架将这些深度学习的复杂性抽象化。开发者只需少量代码,就能轻松切换架构、尝试超参数调优,并使用智能数据增强流程。
此外,Ultralytics 还会在训练和推理期间优化内存使用。与庞大的 Transformer 模型(例如 RT-DETR)不同,Ultralytics YOLO 架构的训练速度显著更快,所需 CUDA 内存也少得多,因此非常适合消费级 GPU。
代码示例:简化训练流程#
在 Ultralytics 生态中,训练最先进的模型非常简单。下面是一个可直接运行的示例,演示如何训练和验证 YOLOv9 模型:
from ultralytics import YOLO
# 初始化模型(你可以将 'yolov9c.pt' 替换为 'yolo26n.pt')
model = YOLO("yolov9c.pt")
# 使用 COCO8 示例数据集训练模型
train_results = model.train(
data="coco8.yaml",
epochs=50,
imgsz=640,
device="0", # 如果可用,使用 GPU 0
batch=16, # 优化批次大小以提高内存利用效率
)
# 在验证集上评估模型性能
metrics = model.val()
# 将训练好的模型导出为 ONNX 格式,以便部署
model.export(format="onnx")跨任务的卓越多功能性#
完善维护的生态系统意味着你可以使用多种计算机视觉任务。YOLOv7 主要针对目标检测构建(后来也出现了用于其他任务的实验性分支),而现代 Ultralytics 模型则从设计之初就具备多功能性。开箱即用,你就能轻松完成实例分割、姿态估计、图像分类和旋转框 (OBB)检测。
理想用例与应用#
选择 YOLOv7 还是 YOLOv9,通常取决于你的行业特定限制和硬件可用性。
何时使用 YOLOv7#
- 遗留边缘部署:对于已经针对 YOLOv7 的 E-ELAN 架构进行大量调优和优化的硬件环境,它仍然是工业物联网的可靠选择。
- 交通监控:YOLOv7 的高帧率和经过验证的稳定性,使其非常适用于智慧城市基础设施和实时交通管理。
- 机器人集成:在动态环境中导航需要低延迟处理,而 YOLOv7 的多个变体已在这类场景中经过广泛测试。
何时使用 YOLOv9#
- 医学成像:YOLOv9 中的 PGI 架构能够在深层网络中出色地保留精细细节,这对于处理肿瘤检测等复杂的医学图像分析任务至关重要。
- 零售密集场景分析:在零售货架上跟踪和计数密集摆放的商品时,YOLOv9 的特征融合能提供更高的精度,并减少漏检。
- 航空和无人机影像:YOLOv9m 的参数效率使无人机能够处理高分辨率图像,有助于开展野生动物保护和农业监测,同时避免耗尽电池电量。
结论#
YOLOv7 和 YOLOv9 都已在计算机视觉发展史上占据重要地位。YOLOv7 引入了实时处理所需的重要优化,而 YOLOv9 则解决了深度学习的结构性瓶颈,以最大限度地提升参数效率。
不过,对于如今开始新项目的开发者来说,采用 Ultralytics 生态,尤其是 YOLO11 和 YOLO26 等新一代模型,能在速度、精度和开发体验之间实现最理想的平衡。借助 MuSGD 优化器等创新,以及移除 Distribution Focal Loss (DFL) 以提高硬件兼容性,Ultralytics 持续为视觉 AI 专业人士提供最易上手、功能强大的工具。