跳转至内容

YOLOv9:目标检测技术的一大飞跃

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



观看: 使用 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) 来应对这一挑战,PGI 有助于在整个网络的深度上保留重要数据,确保更可靠的梯度生成,从而实现更好的模型收敛和性能。

可逆函数

可逆函数的概念是YOLOv9设计的另一个基石。如果一个函数可以在不损失任何信息的情况下进行反转,则认为它是可逆的,表达式为:

X = v_zeta(r_psi(X))

使用 psizeta 作为可逆函数及其反函数的参数。此属性对于 深度学习 这些架构允许网络保留完整的信息流,从而实现对模型参数更精确的更新。YOLOv9在其架构中引入了可逆函数,以减轻信息退化的风险,尤其是在更深层,确保为目标检测任务保留关键数据。

对轻量级模型的影响

解决信息损失对于轻量级模型尤为重要,这些模型通常参数不足,在前向传播过程中容易丢失大量信息。YOLOv9 的架构通过使用 PGI 和可逆函数,确保即使是精简模型也能保留并有效利用准确目标检测所需的关键信息。

可编程梯度信息 (PGI)

PGI 是 YOLOv9 中引入的一个新颖概念,旨在解决信息瓶颈问题,确保关键数据在深度网络层之间得以保留。这有助于生成可靠的梯度,促进准确的模型更新,并提高整体 detect 性能。

广义高效层聚合网络 (GELAN)

GELAN 代表着一项战略性的架构进步,使 YOLOv9 能够实现卓越的参数利用率和计算效率。其设计允许灵活集成各种计算块,使 YOLOv9 能够适应广泛的应用,而不会牺牲速度或准确性。

YOLOv9 架构比较

YOLOv9 基准测试

在YOLOv9中使用Ultralytics进行基准测试涉及评估您经过训练和验证的模型在实际场景中的性能。此过程包括:

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

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



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

在 MS COCO 数据集上的性能

YOLOv9 在COCO dataset上的性能例证了其在实时 object detection 方面的显著进步,在各种模型尺寸上树立了新的基准。表1全面比较了最先进的实时 object detect 器,展示了 YOLOv9 卓越的效率和accuracy

性能

模型尺寸
(像素)
mAPval
50-95
mAPval
50
参数
(M)
FLOPs
(B)
YOLOv9t64038.353.12.07.7
YOLOv9s64046.863.47.226.7
YOLOv9m64051.468.120.176.8
YOLOv9c64053.070.225.5102.8
YOLOv9e64055.672.858.1192.5
模型尺寸
(像素)
mAPbox
50-95
mAPmask
50-95
参数
(M)
FLOPs
(B)
YOLOv9c-seg64052.442.227.9159.4
YOLOv9e-seg64055.144.360.5248.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 模型为大型模型设定了新标准,与 YOLOv8x 相比,其参数减少了 15%,计算需求减少了 25%,同时 AP 提高了 1.7%。

这些结果展示了 YOLOv9 在模型设计方面的战略性进步,强调了其在不牺牲实时目标检测任务所需精度的前提下提升的效率。该模型不仅突破了性能指标的界限,还强调了计算效率的重要性,使其成为计算机视觉领域的一个关键发展。

结论

YOLOv9 代表了实时目标检测领域的一个关键发展,在效率、准确性和适应性方面提供了显著改进。通过 PGI 和 GELAN 等创新解决方案应对关键挑战,YOLOv9 为该领域的未来研究和应用树立了新标杆。随着 AI 社区的不断发展,YOLOv9 证明了协作和创新在推动技术进步方面的强大力量。

使用示例

此示例提供了简单的YOLOv9训练和推理示例。有关这些及其他模式的完整文档,请参阅预测训练验证导出文档页面。

示例

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 系列提供了一系列模型,每个都针对高性能目标检测进行了优化。这些模型满足不同的计算需求和精度要求,使其适用于广泛的应用。

模型文件名任务推理验证训练导出
YOLOv9yolov9t.pt yolov9s.pt yolov9m.pt yolov9c.pt yolov9e.pt目标检测
YOLOv9-segyolov9c-seg.pt yolov9e-seg.pt实例分割

此表详细概述了YOLOv9模型变体,重点介绍了它们在object detection任务中的能力以及与各种操作模式(如推理验证训练导出)的兼容性。这种全面的支持确保用户可以在广泛的object detection场景中充分利用YOLOv9模型的功能。

注意

训练 YOLOv9 模型将需要 更多 资源 花费更长时间,相比同等大小的 YOLOv8 模型

引用和致谢

我们感谢 YOLOv9 作者在实时目标 detect 领域做出的重大贡献:

@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 dataset上,YOLOv9模型在不同尺寸下均表现出卓越的mAP分数,同时保持或降低了计算开销。例如,YOLOv9c在参数减少42%、计算需求降低21%的情况下,实现了与YOLOv7 AF相当的精度。查阅性能比较以获取详细指标。

如何使用 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 能够适应多样化的实时计算机视觉应用。有关更多信息,请参阅支持的任务和模式部分。



📅 1 年前创建 ✏️ 4 天前更新
glenn-jocherRizwanMunawarBurhan-QY-T-Gambitious-octopusLaughing-qpderrengerMatthewNoyceUltralyticsAssistant

评论