YOLOv9:物体检测技术的飞跃发展
YOLOv9 引入了可编程梯度信息 (PGI) 和广义高效层聚合网络 (GELAN) 等开创性技术,标志着实时目标检测领域的重大进步。该模型在效率、准确性和适应性方面都有显著提高,在 MSCOCO 数据集上树立了新的标杆。YOLOv9 项目虽然是由一个独立的开源团队开发的,但其基础是 UltralyticsYOLOv5提供的强大代码库的基础上开发的,展示了人工智能研究社区的协作精神。
观看: 使用Ultralytics | 工业软件包数据集在自定义数据上进行YOLOv9 训练

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) 来应对这一挑战,PGI 有助于在整个网络的深度上保留重要数据,确保更可靠的梯度生成,从而实现更好的模型收敛和性能。
可逆函数
可逆函数的概念是YOLOv9 设计的另一个基石。如果一个函数可以在不丢失任何信息的情况下被反转,那么这个函数就被认为是可逆的:
X = v_zeta(r_psi(X))
使用 psi 和 zeta 作为可逆函数及其反函数的参数。此属性对于 深度学习 因为它允许网络保留完整的信息流,从而能够更准确地更新模型参数。YOLOv9 在其架构中加入了可逆功能,以降低信息退化的风险,尤其是在较深的层中,从而确保为物体检测任务保留关键数据。
对轻量级模型的影响
解决信息丢失问题对于轻量级模型尤为重要,因为轻量级模型通常参数化不足,在前馈过程中容易丢失大量信息。YOLOv9 的架构通过使用 PGI 和可逆函数,确保即使是精简的模型,也能保留并有效利用准确检测物体所需的基本信息。
可编程梯度信息 (PGI)
PGI 是YOLOv9 为解决信息瓶颈问题而引入的一个新概念,可确保在深层网络中保留重要数据。这样就能生成可靠的梯度,促进模型的准确更新,提高整体检测性能。
广义高效层聚合网络 (GELAN)
GELAN 是一项战略性的架构进步,使YOLOv9 能够实现更高的参数利用率和计算效率。它的设计允许灵活集成各种计算模块,使YOLOv9 能够适应广泛的应用,而不会牺牲速度或精度。

YOLOv9 基准
使用YOLOv9 进行基准测试 Ultralytics基准测试包括评估经过训练和验证的模型在实际场景中的性能。这一过程包括
- 性能评估: 评估模型的速度和准确性。
- 导出格式: 测试模型在不同导出格式下的表现,以确保其符合必要的标准,并在各种环境中表现良好。
- 框架支持: 在 Ultralytics YOLOv8 中提供一个全面的框架,以促进这些评估,并确保一致和可靠的结果。
通过基准测试,您可以确保您的模型不仅在受控的测试环境中表现良好,而且在实际应用中也能保持高性能。
观看: 如何使用Ultralytics Python 软件包对YOLOv9 模型进行基准测试
MSCOCO 数据集的性能
YOLOv9 在COCO 数据集上的表现体现了其在实时物体检测方面的显著进步,为各种模型大小设定了新的基准。表 1 对最先进的实时物体检测器进行了全面比较,显示了YOLOv9 的卓越效率和准确性。
性能
| 模型 | 尺寸 (像素) | mAPval 50-95 | mAPval 50 | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|
| YOLOv9t | 640 | 38.3 | 53.1 | 2.0 | 7.7 |
| YOLOv9s | 640 | 46.8 | 63.4 | 7.2 | 26.7 |
| YOLOv9m | 640 | 51.4 | 68.1 | 20.1 | 76.8 |
| YOLOv9c | 640 | 53.0 | 70.2 | 25.5 | 102.8 |
| YOLOv9e | 640 | 55.6 | 72.8 | 58.1 | 192.5 |
| 模型 | 尺寸 (像素) | mAP 50-95 | mAP掩膜 50-95 | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|
| YOLOv9c-seg | 640 | 52.4 | 42.2 | 27.9 | 159.4 |
| YOLOv9e-seg | 640 | 55.1 | 44.3 | 60.5 | 248.4 |
YOLOv9 的迭代产品,从小小的 t 变体到广泛的 e 模型,不仅在精度mAP 指标)上有所提高,而且在参数数量和计算需求(FLOPs)减少的情况下提高了效率。该表强调了YOLOv9 提供高精度、YOLOv9和YOLOv9的能力。 精度 的能力,同时与之前的版本和竞争模型相比,保持或降低了计算开销。
与之相比,YOLOv9 则有显著提高:
- 轻量级模型:YOLOv9s 在参数效率和计算负荷方面超过了YOLO MS-S,同时在AP 方面提高了 0.4% 至 0.6%。
- 中型到大型模型:YOLOv9m 和 YOLOv9e 在平衡模型复杂性和检测性能之间的权衡方面表现出显著的进步,在提高准确性的同时,显著减少了参数和计算量。
YOLOv9c 模型尤其凸显了架构优化的有效性。与YOLOv7 AF 相比,它的运行参数减少了 42%,计算需求减少了 21%,但却达到了相当的精度,这表明YOLOv9 的效率有了显著提高。此外,YOLOv9e 模型为大型模型设定了新标准,与 YOLOv8x 相比,参数减少了 15%,计算需求减少了 25%。 YOLOv8x相比,参数减少了 15%,计算需求减少了 25%,同时AP 增量提高了 1.7%。
这些结果展示了YOLOv9 在模型设计方面的战略性进步,强调了其在提高效率的同时并没有降低实时物体检测任务所必需的精度。该模型不仅突破了性能指标的界限,而且强调了计算效率的重要性,使其成为计算机视觉领域的一项关键性发展。
结论
YOLOv9 代表了实时目标检测领域的关键发展,在效率、准确性和适应性方面都有显著提高。通过 PGI 和 GELAN 等创新解决方案解决关键挑战,YOLOv9 为该领域的未来研究和应用开创了新的先例。随着人工智能领域的不断发展,YOLOv9 了合作与创新在推动技术进步方面的力量。
使用示例
本示例提供了简单的YOLOv9 训练和推理示例。有关这些模式和其他模式的完整文档,请参阅Predict、Train、Val和Export文档页面。
示例
PyTorch pretrained *.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")
可以使用 CLI 命令直接运行模型:
# Build a YOLOv9c model from scratch and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov9c.yaml data=coco8.yaml epochs=100 imgsz=640
# Build a YOLOv9c model from scratch and run inference on the 'bus.jpg' image
yolo predict model=yolov9c.yaml source=path/to/bus.jpg
支持的任务和模式
YOLOv9 系列提供一系列型号,每个型号都针对高性能物体检测进行了优化。这些型号可满足不同的计算需求和精度要求,因此可广泛用于各种应用。
| 模型 | 文件名 | 任务 | 推理 | 验证 | 训练 | 导出 |
|---|---|---|---|---|---|---|
| YOLOv9 | yolov9t.pt yolov9s.pt yolov9m.pt yolov9c.pt yolov9e.pt | 目标检测 | ✅ | ✅ | ✅ | ✅ |
| YOLOv9 | yolov9c-seg.pt yolov9e-seg.pt | 实例分割 | ✅ | ✅ | ✅ | ✅ |
本表提供了YOLOv9 模型变体的详细概述,重点介绍了它们在物体检测任务中的功能以及与推理、验证、训练和导出等各种操作模式的兼容性。这种全面的支持可确保用户在各种物体检测场景中充分利用YOLOv9 模型的功能。
引用和致谢
我们衷心感谢YOLOv9 作者在实时物体检测领域做出的重大贡献:
@article{wang2024yolov9,
title={YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information},
author={Wang, Chien-Yao and Liao, Hong-Yuan Mark},
booktitle={arXiv preprint arXiv:2402.13616},
year={2024}
}
YOLOv9 的原始论文可在arXiv 上找到。作者公开了他们的工作,代码库可以在GitHub 上访问。我们感谢他们为推动这一领域的发展和让更多人了解他们的工作所做的努力。
常见问题
YOLOv9 在实时物体检测方面有哪些创新?
YOLOv9 引入了可编程梯度信息 (PGI) 和广义高效层聚合网络 (GELAN) 等突破性技术。这些创新技术解决了深度神经网络中信息丢失的难题,确保了高效率、高精度和高适应性。PGI 保留了跨网络层的重要数据,而 GELAN 则优化了参数利用率和计算效率。了解有关YOLOv9在 MSCOCO 数据集上设立新基准的核心创新的更多信息。
与其他模型相比,YOLOv9 在 MSCOCO 数据集上的表现如何?
YOLOv9 通过实现更高的准确性和效率,超越了最先进的实时物体检测器。在COCO 数据集上,YOLOv9 模型在保持或减少计算开销的同时,在各种大小的mAP 分数上都表现优异。例如,与YOLOv7 AF 相比,YOLOv9c 以减少 42% 的参数和 21% 的计算需求实现了相当的准确性。探索性能比较,了解详细指标。
如何使用Python 和CLI 训练YOLOv9 模型?
您可以使用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
了解更多关于训练和推理的使用示例。
在轻量级模型中使用Ultralytics YOLOv9 有哪些优势?
YOLOv9 减少信息丢失,这对于经常容易丢失重要信息的轻量级模型尤为重要。通过集成可编程梯度信息 (PGI) 和可逆功能,YOLOv9 可确保保留重要数据,从而提高模型的准确性和效率。因此,它非常适合需要高性能紧凑型模型的应用。更多详情,请参阅YOLOv9 对轻量级模型的影响部分。
YOLOv9 支持哪些任务和模式?
YOLOv9 支持各种任务,包括对象检测和实例分割。它兼容多种操作模式,如推理、验证、训练和输出。这种多功能性使YOLOv9 能够适应各种实时计算机视觉应用。更多信息,请参阅 "支持的任务和模式"部分。