YOLOv9:物体检测技术的飞跃发展
YOLOv9 引入了可编程梯度信息 (PGI) 和广义高效层聚合网络 (GELAN) 等开创性技术,标志着实时目标检测领域的重大进步。该模型在效率、准确性和适应性方面都有显著提高,在 MS COCO 数据集上树立了新的标杆。YOLOv9 项目虽然是由一个独立的开源团队开发的,但它建立在以下机构提供的强大代码库基础之上 UltralyticsYOLOv5提供的强大代码库,展示了人工智能研究界的协作精神。
YOLOv9 简介
在追求最佳实时物体检测的过程中,YOLOv9 以其创新的方法克服了深度神经网络固有的信息丢失难题,脱颖而出。通过整合 PGI 和多功能 GELAN 架构,YOLOv9 不仅增强了模型的学习能力,还确保了在整个检测过程中保留关键信息,从而实现了卓越的准确性和性能。
YOLOv9 的核心创新
YOLOv9 的进步深深扎根于解决深度神经网络中信息丢失所带来的挑战。信息瓶颈原理和可逆函数的创新使用是其设计的核心,可确保 YOLOv9 保持高效率和高精确度。
信息瓶颈原理
信息瓶颈原理揭示了深度学习中的一个基本挑战:当数据通过网络的连续层时,信息丢失的可能性会增加。这一现象在数学上表现为
其中 I
表示互信息,而 f
和 g
表示带参数的变换函数 theta
和 phi
分别为YOLOv9 通过实施可编程梯度信息(PGI)应对了这一挑战,PGI 有助于保留整个网络深度的重要数据,确保更可靠的梯度生成,从而提高模型的收敛性和性能。
可逆函数
可逆函数的概念是 YOLOv9 设计的另一个基石。如果一个函数可以在不丢失任何信息的情况下被反转,那么这个函数就被认为是可逆的:
与 psi
和 zeta
分别作为可逆函数及其反函数的参数。这一特性对深度学习架构至关重要,因为它能让网络保留完整的信息流,从而更准确地更新模型参数。YOLOv9 在其架构中加入了可逆函数,以降低信息退化的风险,尤其是在较深的层中,从而确保为物体检测任务保留关键数据。
对轻型模型的影响
解决信息丢失问题对于轻量级模型尤为重要,因为轻量级模型通常参数化不足,在前馈过程中容易丢失大量信息。YOLOv9 的架构通过使用 PGI 和可逆函数,确保即使是精简的模型,也能保留并有效利用准确检测物体所需的基本信息。
可编程梯度信息 (PGI)
PGI 是 YOLOv9 为解决信息瓶颈问题而引入的一个新概念,可确保在深层网络中保留重要数据。这样就能生成可靠的梯度,促进模型的准确更新,提高整体检测性能。
通用高效层聚合网络(GELAN)
GELAN 是一项战略性的架构进步,使 YOLOv9 能够实现更高的参数利用率和计算效率。它的设计允许灵活集成各种计算模块,使 YOLOv9 能够适应广泛的应用,而不会牺牲速度或精度。
MS COCO 数据集的性能
YOLOv9 在COCO 数据集上的表现体现了其在实时物体检测方面的显著进步,为各种模型大小设定了新的基准。表 1 对最先进的实时物体检测器进行了全面比较,显示了 YOLOv9 的卓越效率和准确性。
表 1.最新实时物体检测器的比较
其他模型比例何时推出?
尽管下表显示了各种模型比例的所有指标、 只是 的配置 YOLOv9c
和 YOLOv9e
已发布。Ultralytics 团队将迅速添加其他可用配置,因此请务必定期查看更新。
性能
模型 | 尺寸 (像素) |
mAPval 50-95 |
mAPval 50 |
params (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 |
模型 | 尺寸 (像素) |
mAPbox 50-95 |
mAPmask 50-95 |
params (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
YOLOv9 模型不仅提高了精度(mAP 指标),还通过减少参数数量和计算需求(FLOPs)提高了效率。与之前的版本和竞争模型相比,该表突出显示了 YOLOv9 在保持或减少计算开销的同时提供高精度的能力。
与之相比,YOLOv9 则有显著提高:
- 轻量级模型:YOLOv9s 在参数效率和计算负荷方面超过了YOLO MS-S,同时在 AP 方面提高了 0.4% 至 0.6%。
- 中大型模型:YOLOv9m 和 YOLOv9e 在平衡模型复杂性和检测性能之间的权衡方面取得了显著进步,在提高精度的同时大幅减少了参数和计算量。
YOLOv9c 模型尤其凸显了架构优化的有效性。与 YOLOv7 AF 相比,它的运行参数减少了 42%,计算需求减少了 21%,但精度却不相上下,这表明 YOLOv9 的效率有了显著提高。此外,YOLOv9e 模型还为大型模型设立了新标准,其参数比 YOLOv7 AF 少 15%,计算需求比 YOLOv7 AF 少 25%。 YOLOv8x相比,参数减少了 15%,计算需求减少了 25%,同时 AP 增量提高了 1.7%。
这些结果展示了 YOLOv9 在模型设计方面的战略性进步,强调了它在提高效率的同时并没有降低实时物体检测任务所必需的精度。该模型不仅突破了性能指标的界限,而且强调了计算效率的重要性,使其成为计算机视觉领域的一项关键性发展。
结论
YOLOv9 代表了实时目标检测领域的关键发展,在效率、准确性和适应性方面都有显著提高。通过 PGI 和 GELAN 等创新解决方案解决关键挑战,YOLOv9 为该领域的未来研究和应用开创了新的先例。随着人工智能领域的不断发展,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')
CLI 命令可直接运行模型:
支持的任务和模式
YOLOv9 系列提供一系列型号,每个型号都针对高性能物体检测进行了优化。这些型号可满足不同的计算需求和精度要求,因此可广泛用于各种应用。
模型 | 文件名 | 任务 | 推论 | 验证 | 培训 | 出口 |
---|---|---|---|---|---|---|
YOLOv9 | yolov9c.pt yolov9e.pt |
物体检测 | ✅ | ✅ | ✅ | ✅ |
YOLOv9-seg | yolov9c-seg.pt yolov9e-seg.pt |
实例分割 | ✅ | ✅ | ✅ | ✅ |
本表提供了 YOLOv9 模型变体的详细概述,重点介绍了它们在物体检测任务中的功能以及与推理、验证、训练和导出等各种操作模式的兼容性。这种全面的支持可确保用户在各种物体检测场景中充分利用 YOLOv9 模型的功能。
备注
与同等大小的YOLOv8 模型相比,训练 YOLOv9 模型需要更多的资源和更长的时间。
引文和致谢
我们衷心感谢 YOLOv9 作者在实时物体检测领域做出的重大贡献:
YOLOv9 的原始论文可在arXiv 上找到。作者公开了他们的工作,代码库可以在GitHub 上访问。我们感谢他们为推动这一领域的发展和让更多人了解他们的工作所做的努力。