YOLOv9

YOLOv9#

标题: YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information

作者: Chien-Yao Wang, I-Hau Yeh, Hong-Yuan Mark Liao (Institute of Information Science, Academia Sinica, Taiwan; National Taipei University of Technology, Taiwan; Department of Information and Computer Engineering, Chung Yuan Christian University, Taiwan)

摘要: YOLOv9是一个新的目标检测系统,它通过提出可编程梯度信息(Programmable Gradient Information, PGI)和一个新的轻量级网络架构——Generalized Efficient Layer Aggregation Network (GELAN)——来解决深度网络中信息瓶颈问题。PGI能够为目标任务提供完整的输入信息以计算目标函数,从而获得可靠的梯度信息来更新网络权重。GELAN基于梯度路径规划设计,证明了PGI在轻量级模型上取得了优越的结果。实验结果表明,YOLOv9在MS COCO数据集上的目标检测性能超过了现有的实时目标检测器。

1. 问题: 论文试图解决深度学习模型在目标检测任务中由于信息瓶颈导致的信息丢失问题,这可能导致梯度信息不可靠,从而影响模型的预测准确性。

2. 新问题: 信息瓶颈问题在深度学习领域是一个已知问题,但PGI和GELAN的提出为解决这一问题提供了新的视角和方法。

3. 科学假设: 假设通过PGI和GELAN可以更有效地保留和利用输入数据的关键特征,从而提高目标检测的准确性。

4. 相关研究:

  • 实时目标检测器:YOLO系列、SSD、RetinaNet等。

  • 可逆架构:如RevCol、Res2Net、CBNet等。

  • 辅助监督:深度监督、多尺度特征学习等。

  • 领域内值得关注的研究员包括但不限于Joseph Redmon、Ali Farhadi(YOLO系列的主要贡献者)。

5. 解决方案关键: PGI和GELAN。PGI通过辅助可逆分支生成可靠的梯度信息,而GELAN则是一种轻量级的网络架构,它基于梯度路径规划设计,能够适应不同的计算块和深度设置。

6. 实验设计: 实验在MS COCO数据集上进行,使用YOLOv7 AF作为基础模型,通过替换ELAN为GELAN并引入PGI来构建YOLOv9。所有模型从头开始训练,训练周期为500个epoch。

7. 数据集与代码: 使用的数据集是MS COCO 2017分割版。源代码已在GitHub上开源:https://github.com/WongKinYiu/yolov9。

8. 实验结果: YOLOv9在MS COCO数据集上取得了优异的性能,超过了现有的实时目标检测器,这支持了论文提出的科学假设。

9. 贡献:

  • 提出了PGI,解决了深度监督机制不适用于轻量级神经网络的问题。

  • 设计了GELAN,一种高效的轻量级神经网络架构。

  • YOLOv9结合了PGI和GELAN,在目标检测任务上取得了优异的性能。

10. 下一步工作:

  • 进一步探索PGI和GELAN在其他视觉任务中的应用。

  • 在更大的数据集上测试YOLOv9的性能。

  • 探索更多可逆架构和辅助监督技术以提高模型性能。

回答问题

  1. 问题: 解决深度学习模型在目标检测中因信息瓶颈导致的问题。

  2. 新问题: 不是新问题,但提供了新的解决方案。

  3. 科学假设: PGI和GELAN可以提高目标检测的准确性。

  4. 相关研究: YOLO系列、可逆架构、辅助监督等。

  5. 解决方案关键: PGI和GELAN。

  6. 实验设计: 在MS COCO数据集上进行,500个训练周期。

  7. 数据集与代码: MS COCO数据集,代码已开源。

  8. 实验结果: 支持假设,YOLOv9性能优异。

  9. 贡献: 提出了PGI和GELAN,设计了YOLOv9。

  10. 下一步工作: 探索PGI和GELAN在其他任务中的应用,测试更大数据集上的性能。

解决方案关键

可编程梯度信息(PGI): PGI是本文提出的一个新概念,旨在解决深度神经网络在训练过程中由于信息瓶颈导致的信息丢失问题。PGI通过辅助可逆分支生成可靠的梯度信息,这些信息用于更新网络参数,确保深度特征能够保持对执行目标任务至关重要的特征。PGI的可逆架构建立在辅助分支上,不增加额外的推理成本。PGI还允许自由选择适合目标任务的损失函数,克服了掩码建模中的问题。

通用高效层聚合网络(GELAN): GELAN是本文提出的一个新的轻量级网络架构,基于梯度路径规划设计。GELAN的设计考虑了参数数量、计算复杂性、准确性和推理速度,使用户可以为不同的推理设备选择适当的计算块。GELAN的架构证明了PGI在轻量级模型上能够获得优越的结果。

实验设计

数据集: 实验使用了MS COCO数据集,这是目标检测领域广泛使用的标准数据集,包含多种类别的对象。

训练设置: 所有模型从头开始训练,没有使用预训练模型。训练使用了300个epoch,其中前5个epoch为热身阶段,仅更新偏置。使用随机梯度下降(SGD)优化器进行训练,初始学习率为0.01,并采用线性衰减策略。权重衰减设置为0.0005,动量为0.9。批量大小为128,输入尺寸在448到832之间均匀抽取,步长为32。

数据增强: 实验中使用了包括随机水平翻转、颜色抖动、多尺度增强和马赛克增强在内的数据增强技术。在训练的最后15个epoch中关闭了马赛克数据增强。

评估: 在Tesla V100 GPU上,使用FP16精度和批量大小为1进行评估。报告的FPS(帧每秒)和延迟都是在这个设置下测量的。

实验结果

性能提升: 实验结果表明,YOLOv9在不同模型尺寸上均取得了优异的性能。例如,YOLOv9-S在参数和计算量较少的情况下,相比YOLOv7 AF,有显著的性能提升。YOLOv9-E在保持准确性的同时,相比于YOLOv8减少了参数数量和计算量。

与其他方法的比较: YOLOv9在与其他实时目标检测器的比较中表现出色,包括与基于Transformer的检测器和基于卷积的检测器的比较。YOLOv9在速度和准确性上都超过了这些方法。

不同训练方法的比较: YOLOv9在不同的训练方法(包括从头训练、ImageNet预训练、知识蒸馏和复杂设置)中都展现了优越的性能,证明了其在参数利用效率和计算复杂性与准确性之间取得了良好的平衡。

可视化: 通过可视化特征图,展示了不同架构在不同深度下保留信息的能力。GELAN和YOLOv9(GELAN + PGI)在较深的层次上仍能保留足够的信息,而其他架构则随着层数的增加逐渐丢失了重要信息。

结论

YOLOv9通过PGI和GELAN的结合,解决了深度学习中的信息瓶颈问题,特别是在轻量级神经网络中。YOLOv9在目标检测任务上显示出强大的竞争力,其设计使得深度模型在减少参数数量和计算量的同时,仍然提高了准确性。

关闭马赛克增强的好处是什么? 马赛克增强(Mosaic Augmentation)是一种数据增强技术,它通过将四个随机选择的训练图像切割并重新排列成一个新的图像来增加数据的多样性,从而提高模型的泛化能力。这种技术可以模拟更多的场景变化,帮助模型学习到更加鲁棒的特征表示。 在论文中提到的实验设计里,作者在训练的最后15个epoch关闭了马赛克数据增强,这可能是基于以下几点考虑:

  1. 模型稳定化:在训练的后期阶段,模型可能已经学习到了足够的特征,此时关闭数据增强可以使得模型在这些特征上更加稳定,避免过度拟合。

  2. 准确度提升:数据增强通常会带来一些噪声,这在训练初期有助于模型学习泛化能力,但在训练后期可能会干扰模型对真实特征的学习。关闭增强可以帮助模型更准确地学习数据集中的模式。

  3. 模拟真实环境:在训练的最后阶段,减少或关闭数据增强可以让模型更多地接触到未经增强的、更接近真实环境的数据,这有助于提高模型在实际应用中的性能。

  4. 计算效率:数据增强会增加训练的计算负担。在训练后期关闭某些数据增强方法可以提高训练的效率,尤其是在资源有限的情况下。

  5. 超参数调整:关闭马赛克增强可能是超参数调整的一部分,作者可能通过实验发现,在训练后期关闭马赛克增强能够获得更好的性能表现。 需要注意的是,这些好处并不是绝对的,它们可能依赖于具体的应用场景、数据集特性以及模型的当前状态。在实际应用中,是否关闭数据增强以及何时关闭,需要根据具体情况和实验结果来决定。


yolov9-fig5

1. 总体趋势

  • 参数数量与性能:总体来看,随着参数数量的增加,模型的平均精度(AP)也在提升。这表明更复杂的模型(参数更多)通常能够捕捉到更多的特征,从而提高检测性能。

  • 性能瓶颈:在参数数量达到一定程度后,性能提升的幅度开始减小,出现性能瓶颈。这意味着在某个点之后,增加参数数量对性能的提升效果有限。

2. 不同网络的性能对比

  • YOLOv9 (Ours):红色曲线表示的YOLOv9在不同参数数量下的性能表现。可以看到,YOLOv9在参数数量较少时(10M左右)就已经达到了较高的AP,且在参数数量增加时,性能提升显著,最终在参数数量较多时(接近100M)达到了最高的AP。

  • GELAN (Ours):橙色曲线表示的GELAN在参数数量较少时(10M左右)表现出色,且在参数数量增加时,性能提升也较为显著。

  • YOLOv5:蓝色曲线表示的YOLOv5在参数数量较少时(10M左右)表现一般,但在参数数量增加时,性能提升显著,最终在参数数量较多时(接近100M)达到了较高的AP。

  • YOLOv6:黄色曲线表示的YOLOv6在参数数量较少时(10M左右)表现一般,但在参数数量增加时,性能提升显著,最终在参数数量较多时(接近100M)达到了较高的AP。

  • YOLOv8:绿色曲线表示的YOLOv8在参数数量较少时(10M左右)表现一般,但在参数数量增加时,性能提升显著,最终在参数数量较多时(接近100M)达到了较高的AP。

  • 其他网络:其他网络如PPYOLOE、DAMO YOLO、RTMDet等在参数数量较少时表现一般,但在参数数量增加时,性能提升显著。

3. 训练方式的影响

  • 从头训练(Train from scratch):红色和橙色曲线表示的YOLOv9和GELAN是从头训练的,表现出色,表明从头训练的模型在参数数量较少时也能达到较高的AP。

  • 预训练模型(ImageNet pretrained SOTA):绿色曲线表示的RT DETR是使用ImageNet预训练的模型,表现出色,表明预训练模型在参数数量较多时能够达到较高的AP。

4. 特定网络的性能

  • YOLO MS:灰色曲线表示的YOLO MS在参数数量较少时表现一般,但在参数数量增加时,性能提升显著。

  • Gold YOLO:紫色曲线表示的Gold YOLO在参数数量较少时表现一般,但在参数数量增加时,性能提升显著。

5. 结论

  • 高效模型:YOLOv9和GELAN在参数数量较少时就能达到较高的AP,表明这些模型在参数效率上表现出色。

  • 性能提升:随着参数数量的增加,大多数模型的性能都有显著提升,但在达到一定参数数量后,性能提升的幅度减小,出现性能瓶颈。

  • 训练方式:从头训练的模型在参数数量较少时表现出色,而预训练模型在参数数量较多时表现出色。

总体来说,这个图表展示了不同目标检测网络在MS COCO数据集上的性能表现,提供了对比不同网络结构和训练方式的有效参考。


yolov9-fig2

这个图表展示了不同网络架构在随机初始权重下的输出特征图。图表包括以下几部分:

  1. (a) Input Image: 输入图像,显示了一群马的照片。

  2. (b) PlainNet: PlainNet网络架构的输出特征图。

  3. (c) ResNet: ResNet网络架构的输出特征图。

  4. (d) CSPNet: CSPNet网络架构的输出特征图。

  5. (e) GELAN: 提出的GELAN网络架构的输出特征图。

从图中可以看出,不同的网络架构在处理相同输入图像时,输出的特征图有明显的差异。具体分析如下:

  • PlainNet: 特征图显示的信息较少,图像细节丢失较多。

  • ResNet: 特征图保留了一些图像细节,但仍有部分信息丢失。

  • CSPNet: 特征图保留了更多的图像细节,相比前两者信息丢失较少。

  • GELAN: 特征图保留了最完整的信息,细节最为丰富,提供了最可靠的梯度信息用于计算目标函数。

总结来说,GELAN网络架构在保留图像信息和细节方面表现最佳,能够提供最可靠的梯度信息用于计算目标函数。


yolov9-fig3 这个图表展示了四种不同的网络结构及其输入输出流程,分别是Path Aggregation Network (PAN)、Reversible Columns (RevCol)、Deep Supervision和Programmable Gradient Information (PGI)。每种网络结构的输入都是一张图像,输出是经过处理后的特征图或预测结果。以下是对每种网络结构的详细分析:
  1. (a) PAN (Path Aggregation Network)

    • 结构: 由多个卷积层和池化层组成,形成一个主干网络。

    • 输入输出流程: 输入图像经过一系列卷积和池化操作,逐步提取特征,最终输出特征图。

    • 特点: 通过路径聚合来增强特征提取能力,但存在信息瓶颈问题。

  2. (b) RevCol (Reversible Columns)

    • 结构: 由多个可逆卷积层组成,形成一个主干网络。

    • 输入输出流程: 输入图像经过一系列可逆卷积操作,逐步提取特征,最终输出特征图。

    • 特点: 通过可逆操作减少信息丢失,但计算成本较高。

  3. (c) Deep Supervision

    • 结构: 在主干网络的不同层次添加辅助监督信息。

    • 输入输出流程: 输入图像经过主干网络的卷积和池化操作,同时在不同层次添加辅助监督信息,最终输出特征图。

    • 特点: 通过多层次的监督信息增强特征提取能力,但存在信息破损问题。

  4. (d) Programmable Gradient Information (PGI)

    • 结构: 由三个主要部分组成:主干网络、辅助可逆分支和多层次辅助信息。

      • 主干网络: 用于推理的架构。

      • 辅助可逆分支: 生成可靠的梯度信息供主干网络反向传播使用。

      • 多层次辅助信息: 控制主干网络学习可编程的多层次语义信息。

    • 输入输出流程: 输入图像经过主干网络的卷积和池化操作,同时辅助可逆分支生成梯度信息,多层次辅助信息控制主干网络的学习,最终输出特征图。

    • 特点: 通过可编程的梯度信息和多层次辅助信息,提供最可靠的梯度信息用于计算目标函数,增强特征提取能力。

总结来说,PGI网络结构通过结合主干网络、辅助可逆分支和多层次辅助信息,提供了最可靠的梯度信息和最丰富的特征提取能力,优于其他三种网络结构。


yolov9-fig4 这个图表展示了GELAN网络架构及其与CSPNet和ELAN的对比。图表包括以下三部分:
  1. (a) CSPNet

    • 结构: 由多个模块组成,每个模块包括一个分割(split)、一个任意块(any block)、一个连接(concatenation)和一个转换(transition)。

    • 流程: 输入数据经过分割后,分别通过任意块和直接连接,然后在连接层进行特征融合,最后通过转换层输出。

  2. (b) ELAN

    • 结构: 由多个模块组成,每个模块包括一个分割(split)、多个卷积层(conv)、一个连接(concatenation)和一个转换(transition)。

    • 流程: 输入数据经过分割后,分别通过多个卷积层和直接连接,然后在连接层进行特征融合,最后通过转换层输出。

  3. (c) GELAN

    • 结构: 结合了CSPNet和ELAN的特点,支持任意计算块。每个模块包括一个分割(split)、多个任意块(any block)、一个连接(concatenation)和一个转换(transition)。

    • 流程: 输入数据经过分割后,分别通过多个任意块和直接连接,然后在连接层进行特征融合,最后通过转换层输出。

分析:

  • CSPNet: 通过分割和连接操作来减少计算量和内存使用,但其模块结构较为简单。

  • ELAN: 通过多个卷积层来增强特征提取能力,但其模块结构较为固定。

  • GELAN: 结合了CSPNet和ELAN的优点,支持任意计算块,使得网络结构更加灵活和强大。通过分割、任意块、连接和转换操作,GELAN能够更好地提取和融合特征信息。

总结来说,GELAN网络架构通过结合CSPNet和ELAN的优点,提供了更灵活和强大的特征提取和融合能力,能够支持任意计算块,适应不同的任务需求。


yolov9-fig6

这个图表展示了不同网络架构(PlainNet、ResNet、CSPNet和GELAN)在不同深度(50层、100层、150层和200层)下的特征图。输入图像是一张包含马的照片。以下是对每种网络架构在不同深度下特征图的详细分析:

  1. PlainNet

    • 50层: 特征图显示了一些图像细节,但信息量较少。

    • 100层: 特征图几乎完全丢失了图像信息,变得非常模糊。

  2. ResNet

    • 50层: 特征图保留了较多的图像细节,信息量较丰富。

    • 100层: 特征图仍然保留了一些图像细节,但开始变得模糊。

    • 150层: 特征图变得更加模糊,信息量显著减少。

    • 200层: 特征图几乎完全丢失了图像信息,变得非常模糊。

  3. CSPNet

    • 50层: 特征图保留了较多的图像细节,信息量较丰富。

    • 100层: 特征图仍然保留了一些图像细节,但开始变得模糊。

    • 150层: 特征图变得更加模糊,信息量显著减少。

    • 200层: 特征图几乎完全丢失了图像信息,变得非常模糊。

  4. GELAN

    • 50层: 特征图保留了较多的图像细节,信息量较丰富。

    • 100层: 特征图仍然保留了较多的图像细节,信息量丰富。

    • 150层: 特征图仍然保留了较多的图像细节,信息量丰富。

    • 200层: 特征图仍然保留了一些图像细节,信息量较丰富。

分析:

  • PlainNet: 随着网络深度的增加,特征图信息量迅速减少,100层时几乎完全丢失了图像信息。

  • ResNet: 在50层时特征图信息量较丰富,但随着深度增加,特征图逐渐变得模糊,200层时几乎完全丢失了图像信息。

  • CSPNet: 与ResNet类似,在50层时特征图信息量较丰富,但随着深度增加,特征图逐渐变得模糊,200层时几乎完全丢失了图像信息。

  • GELAN: 在所有深度下,特征图都保留了较多的图像细节和信息量,即使在200层时,特征图仍然具有较丰富的信息。

总结来说,GELAN网络架构在不同深度下都能保留较多的图像细节和信息量,表现优于PlainNet、ResNet和CSPNet。特别是在深度增加到150层和200层时,GELAN仍然能够保持较高的特征图质量,显示出其在深层网络中的优越性。


yolov9-fig7

这个图表展示了在经过一次偏置预热(bias warm-up)后,GELAN和YOLOv9(GELAN + PGI)的PAN特征图(可视化结果)。输入图像是一张包含马的照片。以下是对每种网络架构特征图的详细分析:

  1. (a) Input Image

    • 输入图像是一张包含几匹马的照片,背景为荒野。

  2. (b) Warm up GELAN

    • 特征图: 显示了GELAN在经过一次偏置预热后的特征图。

    • 分析: 特征图中可以看到一些目标对象(马)的轮廓,但特征图存在一定的分散性,目标对象的边界不够清晰,特征集中度较低。

  3. (c) Warm up YOLOv9 (GELAN + PGI)

    • 特征图: 显示了YOLOv9(GELAN + PGI)在经过一次偏置预热后的特征图。

    • 分析: 特征图中目标对象(马)的轮廓更加清晰,特征集中度较高,能够更好地聚焦于目标对象。相比于GELAN,YOLOv9(GELAN + PGI)的特征图显示出更强的目标聚焦能力。

总结:

  • GELAN: 在经过一次偏置预热后,特征图能够显示出目标对象的轮廓,但存在一定的分散性,特征集中度较低。

  • YOLOv9 (GELAN + PGI): 在经过一次偏置预热后,特征图能够更清晰地显示目标对象的轮廓,特征集中度较高,显示出更强的目标聚焦能力。

通过添加PGI的可逆分支,YOLOv9(GELAN + PGI)能够更好地聚焦于目标对象,特征图的质量显著提升,显示出其在目标检测任务中的优越性。