YOLOv9: 目标检测 技术的飞跃#
YOLOv9 标志着实时对象检测领域的一项重大进步,引入了可编程梯度信息 (PGI) 和广义高效层聚合网络 (GELAN) 等突破性技术。该模型在效率、准确率和适应性方面展现出显著提升,并在 MS COCO 数据集上树立了新的基准。YOLOv9 项目由独立的开源团队开发,但建立在 Ultralytics YOLOv5 提供的稳健代码库之上,展现了 AI 研究社区的协作精神。
Watch: YOLOv9 Training on Custom Data using Ultralytics | Industrial Package Dataset

YOLOv9 简介#
在追求最优实时对象检测的过程中,YOLOv9 采用创新方法应对深度神经网络固有的信息丢失难题。通过集成 PGI 和灵活的 GELAN 架构,YOLOv9 不仅提升了模型的学习能力,还确保在整个检测过程中保留关键信息,从而实现卓越的准确率和性能。
YOLOv9 的核心创新#
YOLOv9 的进步深深植根于对深度神经网络信息丢失问题的解决。信息瓶颈原理和可逆函数的创新应用是其设计的核心,确保 YOLOv9 保持高效率和高准确率。
信息瓶颈原理#
信息瓶颈原理揭示了深度学习中的一个基本挑战:随着数据经过网络的连续层,信息丢失的可能性会增加。这一现象可用数学方式表示为:
I(X, X) >= I(X, f_theta(X)) >= I(X, g_phi(f_theta(X)))其中,I 表示互信息,f 和 g 分别表示参数为 theta 和 phi 的变换函数。YOLOv9 通过实现可编程梯度信息 (PGI) 来应对这一挑战,帮助在网络深度方向保留关键数据,确保生成更可靠的梯度,进而实现更好的模型收敛和性能。
可逆函数#
可逆函数的概念是 YOLOv9 设计的另一基石。如果一个函数可以在不丢失任何信息的情况下求逆,则称其为可逆函数,表示为:
X = v_zeta(r_psi(X))其中,psi 和 zeta 分别是可逆函数及其逆函数的参数。对于深度学习架构而言,这一属性至关重要,因为它使网络能够保留完整的信息流,从而更准确地更新模型参数。YOLOv9 在其架构中引入可逆函数,以降低信息退化的风险,尤其是在更深层中,确保为对象检测任务保留关键数据。
对轻量级模型的影响#
解决信息丢失问题对于轻量级模型尤为重要,因为这类模型通常参数不足,并且容易在前馈过程中丢失大量信息。YOLOv9 的架构通过使用 PGI 和可逆函数,确保即使采用精简模型,也能保留并有效利用准确对象检测所需的关键信息。
可编程梯度信息 (PGI)#
PGI 是 YOLOv9 引入的一项新概念,用于解决信息瓶颈问题,确保在深度网络层之间保留关键数据。这有助于生成可靠的梯度,促进准确的模型更新,并提升整体检测性能。
广义高效层聚合网络 (GELAN)#
GELAN 代表了一项战略性的架构进步,使 YOLOv9 能够实现更优的参数利用率和计算效率。其设计支持灵活集成各种计算模块,使 YOLOv9 能够适应广泛的应用场景,同时不牺牲速度或准确率。

YOLOv9 基准测试#
使用 Ultralytics 对 YOLOv9 进行基准测试,包括评估你训练并验证的模型在真实场景中的性能。此过程包括:
- **性能评估:**评估模型的速度和准确率。
- **导出格式:**在不同导出格式下测试模型,确保其符合必要标准,并在各种环境中表现良好。
- **框架支持:**在 Ultralytics 软件包中提供一个全面的框架,以促进这些评估并确保结果的一致性和可靠性。
通过基准测试,你可以确保模型不仅在受控测试环境中表现良好,也能在实际应用中保持高性能。
Watch: How to Benchmark the YOLOv9 Model Using the Ultralytics Python Package
MS COCO 数据集上的性能#
YOLOv9 在 COCO 数据集上的性能体现了其在实时对象检测方面的显著进步,并在各种模型规模上树立了新的基准。表 1 对当前最先进的实时对象检测器进行了全面比较,展示了 YOLOv9 卓越的效率和准确率。
YOLOv9 的各个版本,从小型 t 变体到大型 e 模型,不仅在准确率(mAP 指标)方面有所提升,还通过减少参数数量和计算需求(FLOPs)提高了效率。该表突出了 YOLOv9 在保持或降低计算开销的同时提供高精确率的能力,相较于早期版本和竞品模型亦是如此。
相比之下,YOLOv9 展现出显著优势:
- 轻量级模型:YOLOv9s 在参数效率和计算负载方面超过 YOLO MS-S,同时 AP 提高了 0.4∼0.6%。
- 中型到大型模型:YOLOv9m 和 YOLOv9e 在平衡模型复杂度与检测性能之间的权衡方面取得了显著进展,在准确率提升的同时,大幅减少了参数量和计算量。
其中,YOLOv9c 模型尤其突出了架构优化的有效性。与 YOLOv7 AF 相比,它的参数减少了 42%,计算需求降低了 21%,却实现了相当的准确率,展示了 YOLOv9 在效率方面的显著提升。此外,YOLOv9e 模型为大型模型树立了新标准:与 YOLOv8x 相比,其参数减少了 15%,计算需求降低了 25%,同时 AP 提升了 1.7%。
这些结果展示了 YOLOv9 在模型设计方面的战略性进步,强调了其在不牺牲实时对象检测任务所需精确率的情况下提升效率的能力。该模型不仅突破了性能指标的边界,还凸显了计算效率的重要性,使其成为计算机视觉领域的一项关键发展。
结论#
YOLOv9 于 2024 年 2 月发布,代表了实时对象检测领域的一项关键发展,在效率、准确率和适应性方面带来了显著提升。通过 PGI 和 GELAN 等创新方案解决关键挑战,YOLOv9 在发布时树立了新的基准。虽然 YOLO11 和 YOLO26 等更新的模型后来发布并带来了更多改进,但 YOLOv9 的架构创新仍在持续影响该领域。
使用示例#
此示例提供了简单的 YOLOv9 训练和推理示例。有关这些示例及其他模式的完整文档,请参阅 Predict、Train、Val 和 Export 文档页面。
PyTorch 预训练的 *.pt 模型以及配置 *.yaml 文件,都可以传递给 YOLO() 类,以便在 Python 中创建模型实例:
from ultralytics import YOLO
# Build a YOLOv9c model from scratch
model = YOLO("yolov9c.yaml")
# Build a YOLOv9c model from pretrained weight
model = YOLO("yolov9c.pt")
# Display model information (optional)
model.info()
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference with the YOLOv9c model on the 'bus.jpg' image
results = model("path/to/bus.jpg")支持的任务和模式#
YOLOv9 系列提供了一系列模型,每个模型都针对高性能对象检测进行了优化。这些模型可满足不同的计算需求和准确率要求,因此适用于广泛的应用场景。
| 模型 | 文件名 | 任务 | 训练 | 验证 | 推理 | 导出 |
|---|---|---|---|---|---|---|
| YOLOv9 | yolov9t.pt yolov9s.pt yolov9m.pt yolov9c.pt yolov9e.pt | 对象检测 | ✅ | ✅ | ✅ | ✅ |
| YOLOv9-seg | yolov9c-seg.pt yolov9e-seg.pt | 实例分割 | ✅ | ✅ | ✅ | ✅ |
此表详细概述了 YOLOv9 的模型变体,重点介绍它们在对象检测任务中的能力,以及与各种操作模式的兼容性,例如推理、验证、训练和导出。这种全面的支持确保用户能够在广泛的对象检测场景中充分发挥 YOLOv9 模型的能力。
训练 YOLOv9 模型需要更多资源,并且耗时会比同等规模的 YOLOv8 模型更长。
引用和致谢#
我们谨此感谢 YOLOv9 作者对实时对象检测领域作出的重要贡献:
@inproceedings{wang2024yolov9,
title={YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information},
author={Wang, Chien-Yao and Yeh, I-Hau and Liao, Hong-Yuan Mark},
booktitle={Computer Vision -- ECCV 2024},
pages={1--21},
year={2024},
organization={Springer Nature Switzerland}
}YOLOv9 官方论文发表于 Springer ECCV 2024 会议论文集,并在 arXiv 上发布了预印本。作者已公开其研究成果,代码库可在 GitHub 上访问。感谢他们推动该领域发展,并让更广泛的社区能够使用其成果。
常见问题#
YOLOv9 引入了可编程梯度信息 (PGI) 和广义高效层聚合网络 (GELAN) 等突破性技术。这些创新解决了深度神经网络中的信息丢失难题,确保高效率、准确率和适应性。PGI 在网络层之间保留关键数据,而 GELAN 优化参数利用率和计算效率。进一步了解 YOLOv9 的核心创新,以及它们如何在 MS COCO 数据集上树立新的基准。
你可以同时使用 Python 和 CLI 命令训练 YOLOv9 模型。对于 Python,使用
YOLO类实例化模型,并调用train方法:from ultralytics import YOLO # Build a YOLOv9c model from pretrained weights and train model = YOLO("yolov9c.pt") results = model.train(data="coco8.yaml", epochs=100, imgsz=640)对于 CLI 训练,请执行:
yolo train model=yolov9c.yaml data=coco8.yaml epochs=100 imgsz=640详细了解训练和推理的使用示例。
YOLOv9 旨在减少信息丢失,这对于容易丢失大量信息的轻量级模型尤为重要。通过集成可编程梯度信息 (PGI) 和可逆函数,YOLOv9 确保保留关键数据,从而提升模型的准确率和效率。这使其非常适合需要高性能紧凑模型的应用。有关详情,请参阅 YOLOv9 对轻量级模型的影响部分。