Meet YOLO26: next-gen vision AI.

Link to this sectionYOLOv9:目标检测技术的飞跃#

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



Watch: YOLOv9 Training on Custom Data using Ultralytics | Industrial Package Dataset

YOLOv9 性能对比

Link to this sectionYOLOv9 简介#

在追求最优实时目标检测的过程中,YOLOv9 凭借其克服深度神经网络固有信息丢失难题的创新方法脱颖而出。通过集成 PGI 和多功能的 GELAN 架构,YOLOv9 不仅增强了模型的学习能力,还确保了在整个检测过程中保留关键信息,从而实现了卓越的准确性和性能。

Link to this sectionYOLOv9 的核心创新#

YOLOv9 的进步深深扎根于解决深度神经网络中信息丢失所带来的挑战。信息瓶颈原理和可逆函数的创新应用是其设计的核心,确保了 YOLOv9 能够保持高效率和高准确度。

Link to this section信息瓶颈原理#

信息瓶颈原理揭示了深度学习中的一个根本挑战:随着数据通过网络的连续层,信息丢失的可能性会增加。这一现象在数学上表示为:

I(X, X) >= I(X, f_theta(X)) >= I(X, g_phi(f_theta(X)))

其中 I 表示互信息,fg 分别表示参数为 thetaphi 的转换函数。YOLOv9 通过实现可编程梯度信息 (PGI) 来应对这一挑战,该信息有助于在网络深度中保留关键数据,从而确保更可靠的梯度生成,进而带来更好的模型收敛和性能。

Link to this section可逆函数#

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

X = v_zeta(r_psi(X))

其中 psizeta 分别是可逆函数及其反函数的参数。这一特性对于深度学习架构至关重要,因为它允许网络保持完整的信息流,从而使模型参数的更新更加准确。YOLOv9 在其架构中集成了可逆函数,以降低信息退化的风险,特别是在较深的层中,从而确保为目标检测任务保留关键数据。

Link to this section对轻量化模型的影响#

解决信息丢失对于轻量化模型尤为重要,这些模型通常参数不足,并且在前馈过程中容易丢失大量信息。YOLOv9 的架构通过使用 PGI 和可逆函数,确保即使在流线型模型中,准确目标检测所需的核心信息也能被保留并得到有效利用。

Link to this section可编程梯度信息 (PGI)#

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

Link to this section广义高效层聚合网络 (GELAN)#

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

YOLOv9 架构对比

Link to this sectionYOLOv9 基准测试#

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

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

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



Watch: How to Benchmark the YOLOv9 Model Using the Ultralytics Python Package

Link to this section在 MS COCO 数据集上的表现#

YOLOv9 在 COCO 数据集上的表现凸显了其在实时目标检测方面的重大进步,在各种模型尺寸上树立了新基准。表 1 展示了最先进的实时目标检测器的全面比较,说明了 YOLOv9 在效率和准确性方面的卓越表现。

性能
模型尺寸
(像素)
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

YOLOv9 的迭代版本,从微小的 t 变体到庞大的 e 模型,不仅在准确性(mAP 指标)上有所提升,而且在减少参数数量和计算需求(FLOPs)方面提高了效率。该表强调了 YOLOv9 与之前版本和竞争模型相比,在保持或降低计算开销的同时提供高精度的能力。

相比之下,YOLOv9 展现了显著的增益:

  • 轻量化模型:YOLOv9s 在参数效率和计算负载方面超过了 YOLO MS-S,同时实现了 0.4∼0.6% 的 AP 提升。
  • 中大型模型:YOLOv9m 和 YOLOv9e 在平衡模型复杂性和检测性能方面表现出显著进步,在提高准确性的背景下大幅减少了参数和计算量。

特别是 YOLOv9c 模型,突显了该架构优化的有效性。与 YOLOv7 AF 相比,它在运行时的参数减少了 42%,计算需求减少了 21%,但实现了相当的准确性,证明了 YOLOv9 在效率方面的显著提升。此外,YOLOv9e 模型为大型模型树立了新标准,与 YOLOv8x 相比,参数减少了 15%,计算需求减少了 25%,同时 AP 提升了 1.7%。

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

Link to this section结论#

YOLOv9 于 2024 年 2 月发布,是实时目标检测领域的一个关键性发展,在效率、准确性和适应性方面提供了显著改进。通过通过 PGI 和 GELAN 等创新解决方案解决关键挑战,YOLOv9 在发布时树立了新的基准。虽然此后发布了诸如 YOLO11YOLO26 等带有额外改进的新模型,但 YOLOv9 的架构创新继续影响着该领域。

Link to this section使用示例#

此示例提供了简单的 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")

Link to this section支持的任务和模式#

YOLOv9 系列提供了一系列模型,每种模型都针对高性能目标检测进行了优化。这些模型满足不同的计算需求和准确性要求,使其能够灵活应用于广泛的场景。

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

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

注意

与同等尺寸的 YOLOv8 模型 相比,训练 YOLOv9 模型将需要更多资源并且花费更长时间。

Link to this section引用与致谢#

我们要感谢 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 上访问。我们感谢他们在推动该领域发展并使其工作能够为更广泛的社区所用方面所做的努力。

Link to this section常见问题解答#

Link to this sectionYOLOv9 为实时目标检测引入了哪些创新?#

YOLOv9 引入了可编程梯度信息 (PGI) 和广义高效层聚合网络 (GELAN) 等突破性技术。这些创新解决了深度神经网络中的信息丢失挑战,确保了高效率、高准确度和适应性。PGI 在网络层中保留了关键数据,而 GELAN 优化了参数利用率和计算效率。了解更多关于 YOLOv9 的核心创新 的内容,这些创新在 MS COCO 数据集上树立了新基准。

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

YOLOv9 通过实现更高的准确性和效率,超越了最先进的实时目标检测器。在 COCO 数据集上,YOLOv9 模型在各种尺寸上都表现出了卓越的 mAP 分数,同时保持或降低了计算开销。例如,与 YOLOv7 AF 相比,YOLOv9c 在参数减少 42% 和计算需求减少 21% 的情况下实现了相当的准确性。探索 性能对比 以获取详细指标。

Link to this section我该如何使用 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

了解更多关于训练和推理的 使用示例

Link to this section将 Ultralytics YOLOv9 用于轻量化模型有哪些优势?#

YOLOv9 旨在减轻信息丢失,这对于容易丢失大量信息的轻量化模型尤为重要。通过集成可编程梯度信息 (PGI) 和可逆函数,YOLOv9 确保了核心数据的保留,从而提高了模型的准确性和效率。这使其非常适合需要高性能紧凑模型的应用。欲了解更多详细信息,请浏览有关 YOLOv9 对轻量化模型的影响 的部分。

Link to this sectionYOLOv9 支持哪些任务和模式?#

YOLOv9 支持包括目标检测和实例分割在内的各种任务。它兼容多种操作模式,如推理、验证、训练和导出。这种多功能性使 YOLOv9 能够适应各种实时计算机视觉应用。有关更多信息,请参阅支持的任务和模式部分。

评论