YOLOv9解读

论文地址:https://arxiv.org/abs/2402.13616

Github地址:https://github.com/WongKinYiu/yolov9

一、引言

作者认为当前深度学习方法忽略了一个事实,即当输入数据经过逐层特征提取和空间变换时,大量信息将会丢失。本文基于深入研究数据通过深度网络传输时数据丢失的重要问题(即信息瓶颈和可逆函数),提出了可编程梯度信息(PGI)的概念来应对深度网络实现多个目标所需的各种变化。

PGI可以为目标任务计算目标函数提供完整的输入信息,从而获得可靠的梯度信息来更新网络权值。此外,本文还设计了一种基于梯度路径规划的新型轻量级网络架构——通用高效层聚合网络GELAN。GELAN的架构证实了PGI在轻量级模型上取得了优异的结果。

论文在基于 MS COCO 数据集的目标检测上验证了所提出的 GELAN 和 PGI。结果表明,GELAN 仅使用传统的卷积算子即可实现更好的参数利用率。 PGI 可用于从轻型到大型的各种模型。它可以用来获取完整的信息,从而获得更好的效果,比较结果如图1所示:

二、主要贡献

在深度网络中,输入数据在前馈过程中丢失信息的现象俗称信息瓶颈,其示意图如图2所示:

为了解决上述问题,论文提出了一个新的概念,即可编​​程梯度信息(PGI)。其概念是通过辅助可逆分支生成可靠的梯度,使得深层特征仍然能够保持执行目标任务的关键特征。

辅助可逆分支的设计可以避免传统的融合多路径特征的深度监督过程可能造成的语义损失。换句话说,论文在不同语义层面上编程梯度信息传播,从而达到最佳的训练结果。

PGI的可逆架构建立在辅助分支上,因此没有额外的成本。由于PGI可以自由选择适合目标任务的损失函数,因此也克服了掩模建模遇到的问题。所提出的PGI机制可以应用于各种规模的深度神经网络,并且比仅适用于非常深的神经网络的深度监督机制更通用。

在本文中,还基于ELAN设计了广义ELAN(GELAN),GELAN的设计同时考虑了参数数量、计算复杂度、准确性和推理速度。这种设计允许用户针对不同的推理设备任意选择合适的计算块。本文将提出的PGI和GELAN结合起来,然后设计了新一代YOLO系列物体检测系统,称之为YOLOv9。本文使用MS COCO数据集进行实验,实验结果验证了YOLOv9在所有比较中都取得了顶尖的性能。

本文的贡献总结如下:

  1. 从可逆函数的角度对现有的深度神经网络架构进行了理论分析,通过这个过程我们成功地解释了许多过去难以解释的现象。我们还基于此分析设计了PGI和辅助可逆分支,并取得了优异的结果。
  2. 我们设计的PGI解决了深度监督只能用于极深神经网络架构的问题,从而让新的轻量级架构真正应用于日常生活中。
  3. 我们设计的GELAN仅使用传统的卷积来实现比基于最先进技术的深度卷积设计更高的参数利用率,同时表现出轻、快速、准确的巨大优势。
  4. 结合所提出的PGI和GELAN,YOLOv9在MS COCO数据集上的目标检测性能在各个方面都大大超过了现有的实时目标检测器。

三、核心方法

3.1 可编程梯度信息

为了解决上述问题,论文提出了一种新的辅助监督框架,称为可编程梯度信息(PGI),如图3(d)所示。 PGI主要包括三个组成部分:主分支、辅助可逆分支、多级辅助信息。

从图3(d)中我们可以看出,PGI的推理过程仅使用主分支,因此不需要任何额外的推理成本。至于其他两个组件,它们仅用于训练阶段而不在推理阶段,用于解决或减缓深度学习方法中的几个重要问题:

  • 辅助可逆分支:是为了处理神经网络加深带来的问题而设计的。网络加深会造成信息瓶颈,导致损失函数无法生成可靠的梯度。
  • 对于多级辅助信息:旨在处理深度监督带来的误差累积问题,特别是针对多个预测分支的架构和轻量级模型。
3.1.1 辅助可逆分支

在PGI中,论文提出了辅助可逆分支来生成可靠的梯度并更新网络参数。通过提供从数据映射到目标的信息,损失函数可以提供指导并避免从与目标不太相关的不完整前馈特征中发现错误相关性的可能性。论文提出通过引入可逆架构来维护完整信息,但是在可逆架构中添加主分支会消耗大量的推理成本。

论文分析了图3(b)的架构,发现当添加从深层到浅层的额外连接时,推理时间将增加20%。当我们反复将输入数据添加到网络的高分辨率计算层(黄色框)时,推理时间甚至超过了两倍。

由于论文的目标是使用可逆架构来获得可靠的梯度,因此“可逆”并不是推理阶段的唯一必要条件。鉴于此,论文将可逆分支视为深度监督分支的扩展,然后设计辅助可逆分支,如图3(d)所示。对于由于信息瓶颈而丢失重要信息的主分支深度特征,它们将能够从辅助可逆分支接收可靠的梯度信息。

这些梯度信息将驱动参数学习来协助提取正确且重要的信息,上述动作可以使主分支获得对目标任务更有效的特征。此外,可逆架构在浅层网络上的表现比在一般网络上差,因为复杂的任务需要在更深的网络中进行转换。我们提出的方法并不强迫主分支保留完整的原始信息,而是通过辅助监督机制生成有用的梯度来更新它。这种设计的优点是所提出的方法也可以应用于较浅的网络。

3.1.2 多级辅助信息

多个预测分支的深度监督架构如图 3 (c) 所示。对于目标检测,不同的特征金字塔可用于执行不同的任务,例如它们一起可以检测不同大小的目标。因此,连接到深度监督分支后,会引导浅层特征学习小物体检测所需的特征,此时系统会将其他尺寸的物体的位置视为背景。然而,上述行为会导致深层特征金字塔丢失大量预测目标对象所需的信息。关于这个问题,我们认为每个特征金字塔都需要接收所有目标对象的信息,以便后续的主分支可以保留完整的信息来学习对各种目标的预测。

多级辅助信息的概念是在辅助监督的特征金字塔层次层和主分支之间插入一个集成网络,然后用它来组合来自不同预测头的返回梯度,如图3(d)所示。多级辅助信息就是将包含所有目标物体的梯度信息聚合起来,传递给主分支,然后更新参数。此时,主分支特征金字塔层次结构的特征将不再受某些特定对象信息的支配。因此,我们的方法可以缓解深度监督中的信息损坏问题。此外,任何综合网络都可以用于多级辅助信息。

3.2 GELAN

通过结合采用梯度路径规划设计的两种神经网络架构CSPNet 和ELAN ,论文设计了兼顾轻量级、推理速度和准确性的广义高效层聚合网络(GELAN)。其整体架构如图 4 所示。论文将最初仅使用卷积层堆叠的 ELAN 的功能推广到可以使用任何计算块的新架构。

四、实验效果

4.1 实验设置

论文使用 MS COCO 数据集验证了所提出的方法。所有实验设置均遵循 YOLOv7 AF,而数据集为 MS COCO 2017。论文提到的所有模型都是从头开始训练的,总训练次数为 500 epoch。在设置学习率时,论文在前三个epoch中使用线性预热,随后的epoch根据模型规模设置相应的衰减方式。至于最后 15 个epoch,论文关闭mosaic数据增强。

4.2 实现细节

论文分别基于 YOLOv7 和 Dynamic YOLOv7 构建了 YOLOv9 的通用版本和扩展版本。在网络架构的设计中,论文使用 CSPNet Blocks 和 RepConv Blocks作为计算块,用 GELAN 替换了 ELAN 。论文还简化了下采样模块并优化了anchor-free预测头。至于PGI的辅助损失部分,论文完全遵循YOLOv7的辅助头设置。

4.3 效果对比

如表1所示,与轻量级和中型模型YOLO MS相比,YOLOv9的参数减少了约10%,计算量减少了5∼15%,但AP仍然有0.4∼0.6%的提升。与 YOLOv7 AF 相比,YOLOv9-C 的参数减少了 42%,计算量减少了 22%,但达到了相同的 AP(53%)。与YOLOv8-X相比,YOLOv9-E参数减少16%,计算量减少27%,AP显着提升1.7%。上述对比结果表明,论文提出的YOLOv9与现有方法相比在各方面都有显着改进。

结果如图5所示,论文分别根据参数和计算量进行比较。就参数数量而言,性能最好的大型模型是 RT DETR。从图5中我们可以看到,使用传统卷积的YOLOv9在参数利用率上甚至比使用深度卷积的YOLO MS还要好。至于大型模型的参数利用率,也大大超过了使用ImageNet预训练模型的RT DETR。更棒的是,在深度模型中,YOLOv9展示了使用PGI的巨大优势。通过准确保留和提取将数据映射到目标所需的信息,我们的方法仅需要 66% 的参数,同时保持 RT DETR-X 的精度。

4.4 消融实验

4.4.1 GELAN

对于 GELAN,论文首先对计算模块进行消融研究。我们分别使用Res Block、Res Block 和 CSP Block 进行实验。表2表明,用不同的计算块替换ELAN中的卷积层后,系统可以保持良好的性能。用户确实可以自由更换计算块并在各自的推理设备上使用它们。在不同的计算块替换中,CSP Block 的性能特别好。它们不仅减少了参数量和计算量,而且将 AP 提高了 0.7%。因此,我们选择 CSP ELAN 作为 YOLOv9 中 GELAN 的组成单元。

论文对不同尺寸的GELAN进行ELAN块深度和CSP块深度实验,并将结果显示在表3中。我们可以看到,当ELAN的深度从1增加到2时,精度显着提高。但当深度大于等于2时,无论是提高ELAN深度还是CSP深度,参数数量、计算量和精度总是呈现线性关系。这意味着 GELAN 对深度不敏感。

也就是说,用户可以任意组合GELAN中的组件来设计网络架构,无需特殊设计即可拥有性能稳定的模型。在表3中,对于YOLOv9-{S,M,C},我们将ELAN深度和CSP深度的配对设置为{{2, 3}, {2, 1}, {2, 1}}。

4.4.2 可编程梯度信息

对于多级辅助信息,论文使用FPN和PAN进行消融研究,PFH的作用相当于传统的深度监督。所有实验的结果列于表4中。从表4中我们可以看出,PFH仅在深度模型中有效,而我们提出的PGI可以在不同组合下提高精度。尤其是使用ICN时,我们得到了稳定且更好的结果。我们还尝试将YOLOv7中提出的lead-head指导分配应用于PGI的辅助监督,并取得了更好的性能。

我们进一步将PGI和深度监督的概念应用到不同规模的模型上,并比较结果,结果如表5所示。正如一开始分析的那样,深度监督的引入会导致浅层模型精度的损失。

PGI 的概念带来了两个宝贵的贡献。第一个是让辅助监督方法适用于浅层模型,第二个是让深层模型训练过程获得更可靠的梯度。这些梯度使深度模型能够使用更准确的信息来建立数据和目标之间的正确相关性。

表6中显示了从基线 YOLOv7 到 YOLOv9E 逐渐增加组件的结果。我们提出的GELAN和PGI给模型带来了全面的改进。

4.5 可视化

在图6中,论文展示了在不同架构下使用随机初始权重作为前馈获得的特征图的可视化结果。我们可以看到,随着层数的增加,所有架构的原始信息逐渐减少。例如,在PlainNet的第50层,很难看到物体的位置,并且所有可区分的特征将在第100层丢失。对于ResNet,虽然在第50层仍然可以看到物体的位置,但边界信息已经丢失。当深度达到第100层时,整个图像变得模糊。 CSPNet 和提出的 GELAN 都表现得非常好,并且它们都可以保持支持清晰识别对象的特征直到第 200 层。其中GELAN的结果更稳定,边界信息更清晰。

图7用于展示PGI是否可以在训练过程中提供更可靠的梯度,使得用于更新的参数能够有效捕获输入数据与目标之间的关系。图7显示了GELAN和YOLOv9(GELAN + PGI)的特征图在PAN偏置预热中的可视化结果。从图7(b)和(c)的比较中,我们可以清楚地看到PGI准确而简洁地捕获了包含目标的区域。

至于不使用PGI的GELAN,我们发现它在检测物体边界时存在发散,并且在某些背景区域也产生了意想不到的响应。这个实验证实了PGI确实可以提供更好的梯度来更新参数,并使主分支的前馈阶段能够保留更重要的特征。

五、总结

论文提出使用PGI来解决信息瓶颈问题以及深度监督机制不适合轻量级神经网络的问题。本文设计了 一个高效、轻量级的神经网络GELAN。在目标检测方面,GELAN在不同的计算块和深度设置下都具有强大且稳定的性能。它确实可以广泛扩展为适合各种推理设备的模型。针对以上两个问题,PGI的引入使得轻量级模型和深度模型都获得了精度的显着提升。 PGI和GELAN相结合设计的YOLOv9已经展现出强大的竞争力。其出色的设计使得深度模型相比YOLOv8减少了49%的参数数量和43%的计算量,但在MS COCO数据集上仍然有0.6%的AP提升。

相关推荐

  1. Yolov9比其他yolo版本的改进

    2024-03-30 04:56:03       7 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-30 04:56:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-30 04:56:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-30 04:56:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-30 04:56:03       18 阅读

热门阅读

  1. SAM中离线使用bert-base-uncased的方法

    2024-03-30 04:56:03       26 阅读
  2. php数组算法(2)字符串转数组后替换指定元素

    2024-03-30 04:56:03       19 阅读
  3. 设计模式之单例模式

    2024-03-30 04:56:03       20 阅读
  4. R语言数据分析基础(三)

    2024-03-30 04:56:03       20 阅读
  5. 双检索单例模式

    2024-03-30 04:56:03       18 阅读
  6. pytorch | pytorch常用的乘法运算

    2024-03-30 04:56:03       20 阅读
  7. rust - 使用log4rs打印日志

    2024-03-30 04:56:03       23 阅读