跳至内容

YOLOv9:物体检测技术的飞跃发展

YOLOv9 引入了可编程梯度信息 (PGI) 和广义高效层聚合网络 (GELAN) 等开创性技术,标志着实时目标检测领域的重大进步。该模型在效率、准确性和适应性方面都有显著提高,在 MS COCO 数据集上树立了新的标杆。YOLOv9 项目虽然是由一个独立的开源团队开发的,但它建立在以下机构提供的强大代码库基础之上 UltralyticsYOLOv5提供的强大代码库,展示了人工智能研究界的协作精神。



观看: 使用Ultralytics | 工业包装数据集对定制数据进行 YOLOv9 训练

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 表示互信息,而 fg 表示带参数的变换函数 thetaphi分别为为了应对这一挑战,YOLOv9 采用了可编程梯度信息 (PGI),有助于保留整个网络深度的重要数据,确保梯度生成更加可靠,从而提高模型的收敛性和性能。

可逆函数

可逆函数的概念是 YOLOv9 设计的另一个基石。如果一个函数可以在不丢失任何信息的情况下被反转,那么这个函数就被认为是可逆的:

X = v_zeta(r_psi(X))

psizeta 分别作为可逆函数及其反函数的参数。这一特性对于 深度学习 因为它允许网络保留完整的信息流,从而能够更准确地更新模型参数。YOLOv9 在其架构中加入了可逆功能,以降低信息退化的风险,尤其是在较深的层中,从而确保为物体检测任务保留关键数据。

对轻型模型的影响

解决信息丢失问题对于轻量级模型尤为重要,因为轻量级模型通常参数化不足,在前馈过程中容易丢失大量信息。YOLOv9 的架构通过使用 PGI 和可逆函数,确保即使是精简的模型,也能保留并有效利用准确检测物体所需的基本信息。

可编程梯度信息 (PGI)

PGI 是 YOLOv9 为解决信息瓶颈问题而引入的一个新概念,可确保在深层网络中保留重要数据。这样就可以生成可靠的梯度,促进模型的准确更新,提高整体检测性能。

通用高效层聚合网络(GELAN)

GELAN 是一项战略性的架构进步,使 YOLOv9 能够实现更高的参数利用率和计算效率。它的设计允许灵活集成各种计算模块,使 YOLOv9 能够适应广泛的应用,而不会牺牲速度或精度。

YOLOv9 架构比较

YOLOv9 基准

YOLOv9 中的基准测试使用 Ultralytics评估经过训练和验证的模型在实际场景中的性能。这一过程包括

  • 性能评估:评估模型的速度和准确性。
  • 导出格式:在不同的导出格式中测试模型,以确保其符合必要的标准,并在各种环境中表现良好。
  • 框架支持:在Ultralytics YOLOv8 内提供一个综合框架,以促进这些评估并确保结果的一致性和可靠性。

通过基准测试,您可以确保您的模型不仅在受控测试环境中表现出色,而且在实际应用中也能保持高性能。



观看: 如何使用Ultralytics Python 软件包对 YOLOv9 模型进行基准测试

MS COCO 数据集的性能

YOLOv9 在COCO 数据集上的表现体现了其在实时物体检测方面的显著进步,为各种模型大小设定了新的基准。表 1 对最先进的实时物体检测器进行了全面比较,显示了 YOLOv9 的卓越效率和准确性

表 1.最新实时物体检测器的比较

性能

模型 尺寸
(像素)
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 该模型不仅在精度(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 训练和推理示例。有关这些模式和其他模式的完整文档,请参阅PredictTrainValExport文档页面。

示例

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 命令可直接运行模型:

# 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 yolov9s yolov9m yolov9c.pt yolov9e.pt 物体检测
YOLOv9-seg yolov9c-seg.pt yolov9e-seg.pt 实例分割

本表提供了 YOLOv9 模型变体的详细概述,重点介绍了它们在物体检测任务中的功能以及与推理验证训练导出等各种操作模式的兼容性。这种全面的支持可确保用户在各种物体检测场景中充分利用 YOLOv9 模型的功能。

备注

与同等大小的YOLOv8 模型相比,训练 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在 MS COCO 数据集上设立新基准的核心创新的更多信息。

与其他模型相比,YOLOv9 在 MS COCO 数据集上的表现如何?

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 能够适应各种实时计算机视觉应用。更多信息,请参阅 "支持的任务和模式"部分。

📅创建于 9 个月前 ✏️已更新 2 个月前

评论