YOLOv9论文详解

论文链接:https://arxiv.org/abs/2402.13616

代码链接:AtomGit | GitCode - 全球开发者的开源社区,开源代码托管平台}


摘要

今天的深度学习方法关注的是如何设计最合适的目标函数,使模型的预测结果最接近地面真实值。与此同时,必须设计一个合适的架构,以方便获取足够的信息进行预测。现有的方法忽略了一个事实,即当输入数据进行逐层特征提取和空间变换时,会丢失大量的信息。本文将深入研究数据通过深度网络传输时数据丢失的重要问题,即信息瓶颈和可逆函数 。我们提出了可编程梯度信息 (programmable gradient information, PGI )的概念,以应对深度网络实现多个目标所需的各种变化。PGI可以为目标任务提供完整的输入信息来计算目标函数,从而获得可靠的梯度信息来更新网络权值。此外,设计了一种新的基于梯度路径规划的轻量级网络结构------广义高效层聚合网络 (generalized Efficient Layer Aggregation network, GELAN)。GELAN的架构证实了PGI在轻量化模型上取得了卓越的结果。我们在基于MS COCO数据集的目标检测上验证了所提出的GELAN和PGI。结果表明,与基于深度卷积的最新方法相比,GELAN仅使用常规卷积算子可以获得更好的参数利用率。PGI可用于从轻型到大型的各种模型。它可以用来获取完整的信息,使得从头开始训练的模型可以获得比使用大型数据集预训练的最先进模型更好的结果。

1. 简介

在计算机视觉、语言处理、语音识别等各个领域,基于深度学习的模型已经证明了比过去的人工智能系统要好得多的性能。近年来,研究人员在深度学习领域,主要关注如何开发更强大的系统架构和学习方法,如cnn,Transformers,percepvers和Mambas。此外,一些研究人员还尝试开发更通用的目标函数,如损失函数,标签分配和辅助监督。以上研究都试图精确地找到输入任务和目标任务之间的映射。然而,过去的大多数方法都忽略了输入数据在前馈过程中可能会有不可忽略的信息损失。这种信息损失会导致有偏的梯度流,这些梯度流随后被用来更新模型。上述问题可能导致深度网络在目标和输入之间建立不正确的关联,从而导致训练后的模型产生不正确的预测.

在深度网络中,前馈过程中输入数据丢失信息的现象通常被称为信息瓶颈,其示意图如下图所示。目前,可以缓解这一现象的主要方法有:(1)使用可逆架构 :该方法主要利用重复输入数据,并以显式的方式维护输入数据的信息;(2)使用掩模建模 :主要利用重构损失,采用隐式方式最大化提取的特征并保留输入信息;(3)引入深度监督概念:利用没有丢失太多重要信息的浅层特征,预先建立特征到目标的映射,保证重要信息可以传递到更深层。然而,上述方法在训练过程和推理过程中都有不同的缺点。例如,可逆架构需要额外的层来组合重复馈送的输入数据,这将显著增加推理成本。此外,由于到输出层的输入数据层不能有太深的路径,这种限制将使在训练过程中难以对高阶语义信息进行建模。至于掩模建模,它的重建损失有时会与目标损失发生冲突。此外,大多数掩模机制也会与数据产生不正确的关联。对于深层监督机制,会产生错误积累,如果浅层监督在训练过程中丢失信息,后续层将无法检索到所需的信息。上述现象在难度较大的任务和小模型上会更加明显。

为了解决上述问题,我们提出了一个新的概念,即可编程梯度信息(programmable gradient information, 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数据集上的目标检测性能在各个方面都大大超过了现有的实时目标检测器。

2. 相关工作

复制代码
### 2.1. 实时目标检测器

目前主流的实时目标检测器是YOLO系列,这些模型大多使用CSPNet或ELAN及其变体作为主要计算单元。**在特征集成方面,通常使用改进的PAN或FPN作为工具** ,然后**使用改进的YOLOv3头或FCOS头作为预测头**。近年来,人们也提出了一些实时目标检测器,如以DETR为基础的RT DETR。但是,由于DETR系列目标检测器在没有相应的域预训练模型的情况下,很难应用到新的领域,所以目前应用最广泛的实时目标检测器仍然是YOLO系列。本文选择YOLOv7作为基础,该算法在各种计算机视觉任务和各种场景中都被证明是有效的。我们使用GELAN改进了体系结构和训练过程,并提出了PGI。上述新颖的方法使所提出的YOLOv9成为新一代顶级实时目标检测器。

### 2.2. 可逆架构

**可逆架构的操作单元必须保持可逆转换的特性,因此可以保证每层操作单元的输出特征图都能保留完整的原始信息** 。之前,RevCol将传统的可逆单元推广到多个层次,这样做可以扩展不同层单元所表达的语义层次。通过对各种神经网络架构的文献回顾,我们发现有**许多高性能架构具有不同程度的可逆特性** 。例如,Res2Net模块以分层方式将不同的输入分区与下一个分区组合在一起,并将所有转换后的分区在向后传递之前进行连接。CBNet通过复合主干重新引入原始输入数据,获得完整的原始信息,并通过各种复合方法获得不同层次的多级可逆信息。**这些网络架构一般具有优异的参数利用率,但额外的复合层会导致推理速度变慢**。DynamicDet结合了CBNet和高效实时目标检测器YOLOv7,在速度、参数数量和精度之间实现了很好的权衡。本文介绍了DynamicDet体系结构作为设计可逆支路的基础。此外,在PGI中进一步引入了可逆信息。提出的新架构在推理过程中不需要额外的连接,因此可以充分保留速度、参数数量和准确性的优势。

### 2.3. 辅助监督

++**深度监督是最常见的辅助监督方法,它通过在中间层中插入额外的预测层来进行训练**++ 。尤其是**基于变压器的方法中引入的多层解码器** 的应用是最常见的一种。另一种常见的辅助监督方法是**利用相关元信息对中间层产生的特征图进行引导** ,使其具有目标任务所需的属性。这种类型的例子包括**使用分割损失或深度损失来提高目标检测器的准确性** 。最近,文献中有许多报道,**使用不同的标签分配方法来生成不同的辅助监督机制** ,以加快模型的收敛速度,同时提高鲁棒性。但是,**辅助监督机制通常只适用于大型模型,因此当它应用于轻量级模型时,很容易造成参数化不足的现象,从而使性能变差**。我们提出的PGI设计了一种重新编程多层次语义信息的方法,这种设计允许轻量级模型也受益于辅助监督机制。

## 3. 问题陈述

通常,**人们将深度神经网络收敛问题的难度归因于梯度消失或梯度饱和等因素** ,而这些现象在传统的深度神经网络中确实存在。然而,**现代深度神经网络已经通过设计各种归一化和激活函数,从根本上解决了上述问题**。尽管如此,深度神经网络仍然存在收敛速度慢或收敛结果差的问题。

在本文中,我们进一步探讨了上述问题的本质。通过对信息瓶颈的深入分析,我们推断出这个问题的根本原因是,**原本来自非常深的网络的初始梯度在传输后不久就丢失了大量实现目标所需的信息** 。为了证实这一推断,我们**用初始权值对不同架构的深度网络进行了前馈** ,然后在上图中对其进行了可视化和说明。显然,PlainNet丢失了很多深层对象检测所需的重要信息。至于ResNet、CSPNet和GELAN能保留的重要信息比例,确实与训练后能获得的准确率呈正相关。我们**进一步设计了基于可逆网络的方法**来解决上述问题的原因。在本节中,我们将详细阐述我们对信息瓶颈原理和可逆函数的分析。
*

  ### 3.1. 信息瓶颈原理

  根据信息瓶颈原理,我们知道数据X在进行变换时可能会造成信息丢失,如下Eq. 1所示:
* ![](https://i-blog.csdnimg.cn/direct/b1ab0c30c2784c4bba0ae5bb2cbb8059.png)

* 式中,I表示互信息,f和g为变换函数,θ和ϕ分别为f和g的参数。

  * 在深度神经网络中,fθ(·)和gϕ(·)分别表示深度神经网络中连续两层的操作。从Eq. 1可以预测,**随着网络层数的加深,原始数据丢失的可能性也会增大** 。然而,**深度神经网络的参数是基于网络的输出以及给定的目标,然后通过计算损失函数生成新的梯度后更新网络** 。可以想象,**深度神经网络的输出是不太能够保留预测目标的完整信息的** 。这将使得**在网络训练过程中使用不完整信息成为可能,从而导致梯度不可靠和收敛性差**。

    * 解决上述问题的一种方法是直接增加模型的大小。当我们使用大量的参数来构建模型时,它更有能力对数据进行更完整的转换。上述方法允许即使在数据前馈过程中信息丢失,仍然有机会保留足够的信息来执行到目标的映射。上述现象解释了为什么在大多数现代模型中,宽度比深度更重要。然而,上述结论并不能从根本上解决非常深度的神经网络中梯度不可靠的问题。下面,我们将介绍如何使用可逆函数来解决问题,并进行相关分析。

    *

      ### 3.2. 可逆函数

      * 当一个函数r有一个逆变换函数v时,我们称这个函数为可逆函数,如Eq. 2所示:

    *

      ![](https://i-blog.csdnimg.cn/direct/ae0da5d196504bb58897a6e49461e515.png)
    * 其中,ψ和ζ分别是r和v的参数。数据X用可逆函数转换,不丢失信息,如Eq. 3所示:

    * ![](https://i-blog.csdnimg.cn/direct/f7497e2944d54cbba7ee557a5306c9ed.png)

      * 当网络的变换函数由可逆函数组成时,可以得到更可靠的梯度来更新模型。今天几乎所有流行的深度学习方法都是符合可逆性质的架构,如Eq. 4所示:

    * ![](https://i-blog.csdnimg.cn/direct/cf74139005f94828b8622d2de542ee8e.png)

    * 式中,l为PreAct ResNet的第l层,f为第l层的变换函数。PreAct ResNet以显式的方式重复将原始数据X传递给后续层。虽然这样的设计可以让一千多层的深度神经网络很好地收敛,但却破坏了我们需要深度神经网络的一个重要原因。也就是说,对于困难的问题,我们很难直接找到简单的映射函数,将数据映射到目标上。这也解释了为什么当层数较少时,PreAct ResNet的性能比ResNet差。

      * 此外,我们尝试使用掩码建模,使变压器模型实现了重大突破。我们使用近似方法,如Eq. 5,试图找到r的逆变换v,使变换后的特征可以使用稀疏特征保留足够的信息。Eq. 5的形式为:

      * ![](https://i-blog.csdnimg.cn/direct/776d67f6f24b48ae9bf16f6941da2926.png)

      * 其中M为动态二进制掩码。通常用于执行上述任务的其他方法是扩散模型和变分自编码器,它们都具有查找反函数的功能。然而,当我们将上述方法应用于轻量化模型时,会存在缺陷,因为轻量化模型会对大量的原始数据进行参数化。由于上述原因,将数据X映射到目标Y的重要信息I(Y, X)也会面临同样的问题。对于这个问题,我们将使用信息瓶颈的概念进行探讨。信息瓶颈的公式如下:

      * ![](https://i-blog.csdnimg.cn/direct/b0a67c24e3074ae7b1bbdbe06a7cd2c8.png)

      * 一般来说,I(Y, X)只会占据I(X, X)很小的一部分,但它对目标任务至关重要。因此,即使前馈阶段丢失的信息量并不显著,但只要覆盖了I(Y, X),训练效果就会受到很大影响。轻量化模型本身处于参数化不足的状态,因此很容易在前馈阶段丢失大量重要信息。因此,我们对于轻量化模型的目标是如何准确地从I(X, X)中过滤出I(Y, X),至于完全保留X的信息,这是很难实现的。基于以上分析,我们希望提出一种新的深度神经网络训练方法,既能生成可靠的梯度来更新模型,又能适用于浅量和轻量神经网络。

        *

          ## 4. 方法

          ### 4.1. 可编程梯度信息

          为了解决上述问题,我们提出了一种新的辅助监督框架,称为可编程梯度信息(Programmable Gradient Information, PGI),如下图(d)所示。PGI主要包括三个部分,即(1)**主分支** ,(2)**辅助可逆分支** ,(3)**多级辅助信息**。从下图(d)可以看出,PGI的推理过程只使用主干,因此不需要任何额外的推理成本。至于其他两个组件,它们用于解决或减缓深度学习方法中的几个重要问题。其中,辅助可逆分支被设计用来处理神经网络深度化带来的问题。网络深化会造成信息瓶颈,使损失函数无法产生可靠的梯度。对于多级辅助信息,其设计是为了处理深度监督带来的误差积累问题,特别是针对多预测分支的架构和轻量化模型。接下来,我们将逐步介绍这两个组成部分。
        *

          ![](https://i-blog.csdnimg.cn/direct/2fa790a6b1da4bc4877b1f6c14d9f045.png)

          4.1.1 辅助可逆分支
          * 在PGI中,我们提出了辅助可逆分支来生成可靠的梯度和更新网络参数。通过提供从数据映射到目标的信息,损失函数可以提供指导,避免从与目标不太相关的不完整前馈特征中发现虚假关联的可能性。我们提出通过引入可逆体系结构来维护完整的信息,但是在可逆体系结构中增加主干分支会消耗大量的推理成本。我们对上图 (b)的架构进行了分析,发现当增加从深层到浅层的额外连接时,推理时间将增加20%。当我们将输入数据反复添加到网络的高分辨率计算层(黄框)时,推理时间甚至超过了时间的两倍。

          * 由于我们的目标是使用可逆架构来获得可靠的梯度,所以"可逆"并不是推理阶段的唯一必要条件。鉴于此,我们将可逆分支视为深度监督分支的扩展,然后设计辅助可逆分支,如上图(d)所示,对于会因信息瓶颈而丢失重要信息的主分支深度特征,它们将能够从辅助可逆支路接收到可靠的梯度信息。这些梯度信息将驱动参数学习,以协助提取正确和重要的信息,上述动作可以使主分支获得对目标任务更有效的特征。此外,可逆架构在浅层网络上的表现比在一般网络上更差,因为复杂的任务需要在更深的网络中进行转换。我们提出的方法并不强制主分支保留完整的原始信息,而是通过辅助监督机制生成有用的梯度来更新它。这种设计的优点是,所提出的方法也可以应用于较浅的网络。

            * 最后,由于在推理阶段可以去除辅助可逆分支,因此可以保留原始网络的推理能力。我们也可以在PGI中选择任意可逆体系结构来发挥辅助可逆分支的作用。
            *

              #### 4.1.2 多层次辅助信息

              * 在本节中,我们将讨论多层辅助信息是如何工作的。包含多个预测分支的深度监督架构如上图 (c)所示,对于对象检测,可以使用不同的特征金字塔来执行不同的任务,例如它们一起可以检测不同大小的对象。因此,在连接到深度监督分支后,会引导浅层特征学习小物体检测所需的特征,此时系统会将其他大小物体的位置作为背景。但是,上述行为会导致深层特征金字塔丢失大量预测目标物体所需的信息。关于这个问题,我们认为每个特征金字塔都需要接收到所有目标对象的信息,这样后续的主分支才能保留完整的信息来学习对各种目标的预测。

                多层辅助信息的概念是在辅助监督的特征金字塔层次层和主分支之间插入一个集成网络,然后用它来组合来自不同预测头像的返回梯度,如上图 (d)所示,多层次辅助信息则是将包含所有目标对象的梯度信息进行聚合,传递给主分支,然后更新参数。此时,主分支的特征金字塔层次的特征就不会被某些特定对象的信息所支配。因此,我们的方法可以缓解深度监督中的信息破碎问题。此外,任何集成网络都可以用于多层次的辅助信息。因此,我们可以规划所需的语义层次,来指导不同规模的网络架构的学习。
              *

                ### 4.2. 广义ELAN

                在本节中,我们描述了提出的新网络架构-GELAN。通过**结合CSPNet和ELAN这两种采用梯度路径规划设计的神经网络架构** ,我们设计了**兼顾轻量级、推理速度和准确性的广义高效层聚合网络(GELAN)**。其整体架构如下图所示。我们将ELAN的能力推广到一个可以使用任何计算块的新架构,该架构最初只使用卷积层的堆叠。
                *

                  ![](https://i-blog.csdnimg.cn/direct/3456096536134173ab28917f9b5870a7.png)

                  ## 5. 实验

                  ### 5.1. 实验设置

                  我们用**MS COCO数据集**验证了所提出的方法。所有实验设置遵循YOLOv7 AF,而数据集为MS COCO 2017分割。我们提到的所有模型都使用从头开始训练的策略进行训练,训练次数总数为500 epoch。在学习率的设置上,我们在前三个epoch使用线性预热,随后的epoch根据模型尺度设置相应的衰减方式。至于最后15个epoch,我们关闭马赛克数据增强。更多设置请参考附录。

                  ### 5.2. 实现细节

                  我们分别++基于YOLOv7和Dynamic YOLOv7构建了通用版和扩展版YOLOv9++ 。在网络架构设计中,我们++使用CSPNet块和规划的RepConv作为计算块++ ,++将ELAN替换为GELAN++ 。我们还++简化了下采样模块++ ,++优化了无锚预测头++。对于PGI的辅助损耗部分,我们完全遵循YOLOv7的辅助头设置。详见附录。
                  *

                    ### 5.3. 与最先进技术的比较

                    下表列出了我们提出的YOLOv9与其他从头开始的实时对象检测器的比较。

                    ![](https://i-blog.csdnimg.cn/direct/78a94e308e3240a39dcb4a812f3e5361.png)

                    另一方面,我们也加入了ImageNet预训练模型进行比较,结果如下图所示。

                    ![](https://i-blog.csdnimg.cn/direct/1bcff590fcaa4ea0ae89c94eed54b5a1.png)

                    ### 5.4. 消融研究

                    #### 5.4.1 GELAN

                    对于GELAN,我们首先对计算块进行消融研究。我们分别使用Res块、Dark块和CSP块进行实验。从下表可以看出,用不同的计算块替换ELAN中的卷积层后,系统仍能保持良好的性能。

                    ![](https://i-blog.csdnimg.cn/direct/476d462a69474c0c8c1a25f9bb9fa2bb.png)

                    接下来,我们对不同尺寸的GELAN进行ELAN块深度和CSP块深度实验,结果如下表所示。

                    ![](https://i-blog.csdnimg.cn/direct/7aaa612670f14e1184b34d9d30e27c2e.png)

                    #### 5.4.2 可编程梯度信息

                    在PGI方面,我们分别对脊柱和颈部的辅助可逆分支和多层辅助信息进行了消融研究。设计了辅助可逆分支ICN,利用DHLC连杆获取多级可逆信息。对于多层辅助信息,我们采用FPN和PAN进行消融研究,PFH的作用相当于传统的深度监督。所有实验结果列于下表。

                    ![](https://i-blog.csdnimg.cn/direct/e75d6fc6c2b64bf49e51c04aba06944c.png)

                    我们进一步将PGI和深度监督的概念应用到不同大小的模型上,并对结果进行比较,结果如下表所示。如开头所分析,引入深度监督会导致浅层模型的精度损失。对于一般模型,引入深度监督会造成性能不稳定,深度监督的设计理念只能在极深的模型中带来收益。所提出的PGI能有效处理信息瓶颈、信息破碎等问题,能全面提高不同尺寸模型的精度。PGI的概念带来了两个有价值的贡献。第一个是使辅助监督方法适用于浅层模型,第二个是使深层模型训练过程获得更可靠的梯度。这些梯度使深度模型能够使用更准确的信息,在数据和目标之间建立正确的相关性。

                    ![](https://i-blog.csdnimg.cn/direct/254f9e98598b4b9ea17460f2aad079f9.png)

                    最后,我们在表中显示了从基线YOLOv7到YOLOv9-E逐渐增加组件的结果。我们提出的GELAN和PGI对模型进行了全方位的改进。

                    ![](https://i-blog.csdnimg.cn/direct/0a00f06a46104c6caf240be76b9eb9ac.png)

                    ### 5.5. 视觉化

                    本节将探讨信息瓶颈问题并将其可视化。此外,我们还将可视化所提出的PGI如何使用可靠的梯度来找到数据和目标之间的正确相关性。在下图中,我们展示了在不同架构下使用随机初始权重作为前馈获得的特征图的可视化结果。我们可以看到,随着层数的增加,所有架构的原始信息逐渐减少。

                    ![](https://i-blog.csdnimg.cn/direct/ab2778ef21424ebe8beef0c575da07b6.png)

                    下图展示了PGI是否能够在训练过程中提供更可靠的梯度,使用于更新的参数能够有效地捕捉输入数据与目标之间的关系。

                    ![](https://i-blog.csdnimg.cn/direct/4fa7115095f94962ab59bfec1d7ad584.png)
相关推荐
那雨倾城2 小时前
PiscCode基于 YOLO 的人员分割 + PPE 检测绑定:一种工程级安全合规判定方案
图像处理·人工智能·安全·yolo·目标检测·计算机视觉
永霖光电_UVLED2 小时前
CHIPX Global 计划在马来西亚建设一座 8 英寸氮化镓/碳化硅(GaN/SiC)晶圆制造工厂
人工智能·生成对抗网络·制造
得贤招聘官2 小时前
招聘决胜起跑线:AI重构决策级招聘新范式
人工智能
云计算小黄同学2 小时前
AI × 软件工程 / SRE 学习清单(工程师版)
人工智能·学习·软件工程
2501_941333102 小时前
改进SOLOv2系列__R50_FPN_1x_COCO__建筑工地车辆与人员目标检测
人工智能·目标检测·目标跟踪
ar01232 小时前
AR眼镜工厂质检应用:让质量把控更智能、更高效
人工智能·ar
CS创新实验室2 小时前
课程提纲:神经网络基础和工程实践
人工智能·深度学习·神经网络
kuankeTech2 小时前
生鲜进出口贸易数字化转型:智慧外贸ERP解决方案破解行业痛点
大数据·人工智能·开源软件·软件开发·erp
liliangcsdn2 小时前
对多模态扩散模型UNet架构的探索
大数据·人工智能