YOLO Vision 2026:

YOLOv9:Object Detection 技术的一大飞跃#

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



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

YOLOv9 performance comparison

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 architecture comparison

YOLOv9 基准测试#

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

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

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



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

在 MS COCO 数据集上的表现#

YOLOv9 在 COCO dataset 上的性能体现了其在实时目标检测方面的重大进步,在各种模型规模上树立了新的基准。表 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 在模型设计方面的战略进步,强调了它在不牺牲实时目标检测任务必不可少的精度的同时增强了效率。该模型不仅突破了性能指标的边界,还强调了计算效率的重要性,使其成为计算机视觉领域的一项关键发展。

结论#

YOLOv9 发布于 2024 年 2 月,是实时目标检测领域的一个关键发展,在效率、准确率和适应性方面带来了显著改进。通过使用 PGI 和 GELAN 等创新解决方案解决关键挑战,YOLOv9 在发布时树立了新的基准。虽然像 YOLO11YOLO26 这样带了更多改进的新模型此后已经发布,但 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")

支持的任务和模式#

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

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

该表提供了 YOLOv9 模型变体的详细概览,突出了它们在目标检测任务中的功能以及与各种操作模式的兼容性,例如推理验证训练导出。这种全面的支持确保用户能够充分利用 YOLOv9 模型在广泛的目标检测场景中的功能。

注意

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

引用与致谢#

我们要感谢 YOLOv9 的作者在实时目标检测领域所做的重大贡献:

引用
@inproceedings{wang2024yolov9,
  title={YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information},
  author={Wang, Chien-Yao and Yeh, I-Hau and Liao, Hong-Yuan Mark},
  booktitle={Computer Vision -- ECCV 2024},
  pages={1--21},
  year={2024},
  organization={Springer Nature Switzerland}
}

官方 YOLOv9 论文发表在 Springer ECCV 2024 会议论文集中,预印本发布在 arXiv 上。作者已将他们的工作公开发布,并且可以在 GitHub 上访问代码库。我们感谢他们为推进该领域发展以及使更广泛的社群能够使用他们的工作所做出的努力。

常见问题解答#

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

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

  • 你可以使用 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

    了解有关训练和推理的用法示例的更多信息。

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

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

评论