Ultralytics YOLO27:
Get Started

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

YOLOv9 在实时目标检测方面取得了重大进展,引入了可编程梯度信息(PGI)和广义高效层聚合网络(GELAN)等突破性技术。该模型在效率、精度和适应性方面均有显著提升,并在 MS COCO 数据集上树立了新的基准。YOLOv9 项目由独立的开源团队开发,但基于 Ultralytics YOLOv5 提供的成熟代码库构建,展现了 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 表示互信息,f 和 g 分别表示参数为 theta 和 phi 的变换函数。YOLOv9 通过实现可编程梯度信息(PGI)来应对这一难题,帮助在网络深度方向保留关键数据,确保生成更可靠的梯度,从而改善模型收敛效果和性能。

可逆函数#

可逆函数也是 YOLOv9 设计的另一项基石。如果一个函数可以在不丢失任何信息的情况下求逆,我们就称它为可逆函数,其表达式如下:

X = v_zeta(r_psi(X))

其中,psi 和 zeta 分别是可逆函数及其逆函数的参数。对于深度学习架构而言,这一特性至关重要,因为它能让网络保留完整的信息流,从而更准确地更新模型参数。YOLOv9 在架构中融入了可逆函数,以降低信息退化的风险,尤其是在较深的层中,从而确保目标检测任务所需的关键信息得以保留。

对轻量级模型的影响#

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

可编程梯度信息(PGI)#

PGI 是 YOLOv9 引入的一项新概念,旨在解决信息瓶颈问题,确保关键数据在深层网络中得以保留。这样可以生成可靠的梯度,便于准确更新模型,并提升整体检测性能。

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

GELAN 是一项具有战略意义的架构改进,使 YOLOv9 能够更高效地利用参数和计算资源。其设计支持灵活集成各种计算模块,让 YOLOv9 能适应多种应用场景,同时不牺牲速度或精度。

YOLOv9 架构对比

YOLOv9 基准测试#

使用 Ultralytics 对 YOLOv9 进行基准测试,是指在真实场景中评估已训练并验证的模型性能。该过程包括:

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

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



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

在 MS COCO 数据集上的性能#

YOLOv9 在 COCO 数据集上的表现体现了其实时目标检测方面的显著进步,并在不同模型尺寸上树立了新的基准。表 1 全面比较了先进的实时目标检测器,展示了 YOLOv9 在效率和精度方面的优势。

性能
模型尺寸
(像素)
mAP验证集
50-95
mAP验证
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,同时 AP 提高了 0.4∼0.6%。
  • 中型到大型模型:YOLOv9m 和 YOLOv9e 在平衡模型复杂度与检测性能方面取得显著进展,在精度提升的同时,大幅减少了参数量和计算量。

YOLOv9c 尤其突显了架构优化的成效。它的参数量比 YOLOv7 AF 少 42%,计算需求低 21%,同时实现了相近的精度,展现了 YOLOv9 在效率方面的显著提升。此外,YOLOv9e 为大型模型树立了新标准:与 YOLOv8x 相比,参数量减少 15%,计算需求降低 25%,AP 还提升了 1.7%。

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

结论#

YOLOv9 于 2024 年 2 月发布,是实时目标检测领域的一项关键进展,在效率、精度和适应性方面实现了显著提升。YOLOv9 通过 PGI 和 GELAN 等创新方案解决关键难题,并在发布时树立了新的基准。此后,YOLO11 和 YOLO26 等更新的模型陆续发布并带来更多改进,但 YOLOv9 的架构创新仍在持续影响这一领域。

使用示例#

本示例展示了简单的 YOLOv9 训练和推理用法。如需查看这些以及其他模式的完整文档,请参阅预测、训练、验证和导出文档页面。

示例

PyTorch 预训练的 *.pt 模型以及配置 *.yaml 文件都可以传递给 YOLO() 类,从而在 Python 中创建模型实例:

from ultralytics import YOLO

# 从头开始构建 YOLOv9c 模型
model = YOLO("yolov9c.yaml")

# 使用预训练权重构建 YOLOv9c 模型
model = YOLO("yolov9c.pt")

# 显示模型信息(可选)
model.info()

# 使用 COCO8 示例数据集训练模型 100 个 epoch
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# 使用 YOLOv9c 模型对“bus.jpg”图像进行推理
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 模型的能力。

注意

与同等规模的 YOLOv8 模型相比,训练 YOLOv9 模型需要更多资源,而且耗时更长。

引用与致谢#

我们谨向 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 则优化了参数利用率和计算效率。深入了解 YOLOv9 的核心创新,以及这些创新如何在 MS COCO 数据集上树立新的基准。

  • YOLOv9 凭借更高的精度和效率,优于先进的实时目标检测器。在 COCO 数据集上,YOLOv9 各种尺寸的模型都展现出更高的 mAP,同时保持或降低了计算开销。例如,与 YOLOv7 AF 相比,YOLOv9c 在精度相近的情况下参数量减少了 42%,计算需求降低了 21%。请参阅性能对比,了解详细指标。

  • 你可以使用 Python 和 CLI 命令训练 YOLOv9 模型。使用 Python 时,先通过 YOLO 类实例化模型,再调用 train 方法:

    from ultralytics import YOLO
    
    # 使用预训练权重构建 YOLOv9c 模型并开始训练
    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 对轻量级模型的影响部分。

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

评论