YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information
Abstract
-
今天的深度学习方法侧重于如何设计最合适的目标函数,使模型的预测结果最接近实际情况。同时,必须设计一种适当的架构,该架构可以促进获取足够的信息用于预测。现有的方法忽略了一个事实,即当输入数据经过逐层特征提取和空间变换时,会丢失大量信息。本文将深入研究数据通过深度网络传输时数据丢失的重要问题,即信息瓶颈和可逆函数。我们提出了可编程梯度信息(PGI)的概念,以应对深度网络实现多个目标所需的各种变化。PGI可以为目标任务提供完整的输入信息来计算目标函数,从而获得可靠的梯度信息来更新网络权重。此外,还设计了一种新的基于梯度路径规划的轻量级网络架构——广义高效层聚合网络(GELAN)。GELAN的架构证实了PGI在轻量级模型上取得了卓越的成果。我们在基于MS COCO数据集的目标检测上验证了所提出的GELAN和PGI。结果表明,与基于深度卷积开发的最先进方法相比,GELAN仅使用传统的卷积算子来实现更好的参数利用率。PGI可以用于从轻量级到大型的各种模型。它可以用于获得完整的信息,因此从头开始训练的模型可以获得比使用大型数据集预先训练的现有模型更好的结果,比较结果如下图所示。源代码位于:WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information (github.com)
-
MS COCO数据集上实时对象检测结果的比较。基于GELAN和PGI的物体检测方法在物体检测性能方面超过了以前的所有从头开始的方法。就准确性而言,新方法优于用大数据集预训练的RT-DETR,并且在参数利用率方面也优于基于深度卷积的设计YOLO MS。
Introduction
- 在计算机视觉、语言处理和语音识别等各个领域,基于深度学习的模型已经显示出比过去的人工智能系统更好的性能。近年来,深度学习领域的研究人员主要关注如何开发更强大的系统架构和学习方法,如CNN,Transformer,Perceivers和Mambas[Vmamba,Vision mamba]。此外,一些研究人员试图开发更通用的目标函数,如损失函数、标签分配和辅助监督。上述研究都试图准确地找到输入任务和目标任务之间的映射。然而,大多数过去的方法都忽略了输入数据在前馈过程中可能具有不可忽略的信息损失量。这种信息丢失可能导致有偏差的梯度流,随后用于更新模型。上述问题可能导致深度网络在目标和输入之间建立不正确的关联,导致训练的模型产生不正确的预测。在深度网络中,输入数据在前馈过程中丢失信息的现象通常被称为信息瓶颈,其原理图如下图所示。
-
不同网络架构的随机初始权重输出特征图的可视化结果:(a)输入图像,(b)PlainNet,(c)ResNet,(d)CSPNet和(e)提出的GELAN。从图中我们可以看出,在不同的架构中,提供给目标函数计算损失的信息都有不同程度的丢失,我们的架构可以保留最完整的信息,并为计算目标函数提供最可靠的梯度信息。
- 目前,可以缓解这一现象的主要方法如下:(1)使用可逆架构:这种方法主要使用重复的输入数据,并以显式的方式维护输入数据的信息;(2) 掩蔽建模的使用:主要利用重建损失,采用隐式方法最大化提取的特征,保留输入信息;以及(3)引入深度监督概念:它使用没有丢失太多重要信息的浅层特征来预先建立从特征到目标的映射,以确保重要信息可以转移到更深的层。
- 然而,上述方法在训练过程和推理过程中都有不同的缺点。例如,可逆架构需要额外的层来组合重复馈送的输入数据,这将显著增加推理成本。此外,由于输入数据层到输出层不能有太深的路径,这种限制将使训练过程中难以对高阶语义信息进行建模。对于掩模建模,其重建损失有时与目标损失相冲突。此外,大多数掩码机制也会产生与数据的不正确关联。对于深度监督机制来说,它会产生错误积累,如果浅层监督在训练过程中丢失信息,后续层将无法检索到所需的信息。上述现象在困难的任务和小型模型上会更加显著。
- 为了解决上述问题,我们提出了一个新的概念,即可编程梯度信息(PGI)。其概念是通过辅助可逆分支生成可靠的梯度,使深层特征仍能保持执行目标任务的关键特征。辅助可逆分支的设计可以避免传统的集成多路径特征的深度监督过程可能导致的语义损失。换句话说,我们正在对不同语义级别的梯度信息传播进行编程,从而获得最佳的训练结果。PGI的可逆架构建立在辅助分支上,因此不需要额外的成本。由于PGI可以自由选择适合目标任务的损失函数,它也克服了掩模建模所遇到的问题。所提出的PGI机制可以应用于各种规模的深度神经网络,并且比仅适用于非常深度的神经网络的深度监督机制更通用。
- 在本文中,我们还在 ELAN 的基础上设计了广义ELAN(GELAN),GELAN的设计同时考虑了参数的数量、计算复杂度、准确性和推理速度。这种设计允许用户为不同的推理设备任意选择合适的计算块。我们将所提出的PGI和GELAN相结合,然后设计了新一代YOLO系列目标检测系统,我们称之为YOLOv9。我们使用MS COCO数据集进行了实验,实验结果验证了我们提出的YOLOv9在所有比较中都取得了最佳性能。我们将本文的贡献总结如下:
- 我们从可逆函数的角度对现有的深度神经网络架构进行了理论分析,并通过这个过程成功地解释了许多过去难以解释的现象。在此基础上,我们还设计了PGI和辅助可逆分支,并取得了良好的效果。
- 我们设计的PGI解决了深度监控只能用于极深度神经网络架构的问题,从而使新的轻量级架构能够真正应用于日常生活。
- 与基于最先进技术的深度卷积设计相比,我们设计的GELAN仅使用传统卷积来实现更高的参数使用率,同时显示出轻、快、准确的巨大优势。
- 结合所提出的PGI和GELAN,YOLOv9在MS COCO数据集上的目标检测性能在各个方面都大大超过了现有的实时目标检测器。
Related work
Real-time Object Detectors
- 当前主流的实时对象检测器是YOLO系列[YOLOv4,YOLO-MS,YOLOX, YOLOv5, YOLOv8,YOLOCS,YOLOv6,YOLOv6 v3.0,YOLOv1, YOLOv2, YOLOv3, Gold-YOLO, Scaled-YOLOv4, YOLOv7, PP-YOLOE,DAMO-YOLO],其中大多数模型使用CSPNet或ELAN及其变体作为主要计算单元。在特征集成方面,通常使用改进的PAN或FPN作为工具,然后使用改进的YOLOv3头或FCOS头作为预测头。最近也提出了一些实时对象检测器,如RT-DETR,其基础是DETR。然而,由于在没有相应的域预训练模型的情况下,DETR系列对象检测器很难应用于新的域,因此目前使用最广泛的实时对象检测器仍然是YOLO系列。本文选择YOLOv7作为开发所提出方法的基础,该方法已被证明在各种计算机视觉任务和各种场景中有效。我们使用GELAN来改进所提出的PGI的架构和训练流程。上述新颖的方法使所提出的YOLOv9成为新一代的顶级实时对象检测器。
Reversible Architectures
- 可逆架构的运算单元必须保持可逆转换的特性,因此可以确保每层运算单元的输出特征图都能保留完整的原始信息。以前,RevCol 将传统的可逆单元概括为多个层次,这样可以扩展不同层单元表达的语义层次。通过对各种神经网络架构的文献综述,我们发现有许多高性能架构具有不同程度的可逆性质。例如,Res2Net模块以分层方式将不同的输入分区与下一个分区组合,并在将所有转换的分区向后传递之前将其连接起来。CBNet通过复合主干重新引入原始输入数据以获得完整的原始信息,并通过各种合成方法获得不同级别的多级可逆信息。这些网络架构通常具有极好的参数利用率,但额外的复合层导致推理速度慢。DynamicDet结合了CBNet和高效实时对象检测器YOLOv7,在速度、参数数量和精度之间实现了很好的折衷。本文介绍了DynamicDet体系结构作为设计可逆分支的基础。此外,可逆信息被进一步引入到所提出的PGI中。所提出的新架构在推理过程中不需要额外的连接,因此可以充分保留速度、参数量和准确性的优势。
Auxiliary Supervision
- 深度监督是最常见的辅助监督方法,通过在中间层插入额外的预测层来执行训练。尤其是多层解码器在基于 Transformer 的方法中的应用是最常见的。另一种常见的辅助监督方法是利用相关的元信息来引导中间层生成的特征图,并使其具有目标任务所需的属性。这种类型的例子包括使用分割损失或深度损失来增强对象检测器的精度。最近,文献[What makes for end-to-end object detection? ;End-to-end object detection with fully convolutional network;DETRs with collaborative hybrid assignments training]中有许多报道使用不同的标签分配方法来生成不同的辅助监督机制,以加快模型的收敛速度,同时提高鲁棒性。然而,辅助监督机制通常只适用于大型模型,因此当它应用于轻量级模型时,很容易引起参数化不足的现象,从而使性能变差。我们提出的PGI设计了一种重新编程多级语义信息的方法,这种设计允许轻量级模型也受益于辅助监督机制。
Problem Statement
- 通常,人们将深度神经网络收敛的困难归因于梯度消失或梯度饱和等因素,而这些现象在传统的深度神经网络中确实存在。然而,现代深度神经网络通过设计各种归一化和激活函数,已经从根本上解决了上述问题。尽管如此,深度神经网络仍然存在收敛速度慢或收敛结果差的问题。
- 在本文中,我们进一步探讨了上述问题的性质。通过对信息瓶颈的深入分析,我们推断出这个问题的根本原因是最初来自非常深的网络的初始梯度在传输后不久就丢失了实现目标所需的大量信息。为了证实这一推断,我们用初始权重前馈不同架构的深度网络,然后在上图中对其进行可视化和说明。显然,PlainNet已经丢失了许多深层目标检测所需的重要信息。至于ResNet、CSPNet和GELAN能够保留的重要信息的比例,确实与训练后能够获得的准确性呈正相关。我们进一步设计了基于可逆网络的方法来解决上述问题的原因。在本节中,我们将详细阐述我们对信息瓶颈原理和可逆函数的分析。
Information Bottleneck Principle
-
根据信息瓶颈原理,我们知道数据 X 在进行转换时可能会导致信息丢失,如下面的等式所示:
-
I ( X , X ) ≥ I ( X , f θ ( X ) ) ≥ I ( X , g ϕ ( f θ ( X ) ) ) I(X,X)\geq I(X,f_\theta(X))\geq I(X,g_\phi(f_\theta(X))) I(X,X)≥I(X,fθ(X))≥I(X,gϕ(fθ(X)))
-
其中 I 表示互信息,f 和 g 是变换函数,θ 和 ϕ \phi ϕ 分别是 f 和 g 的参数。
-
-
在深度神经网络中, f θ ( ⋅ ) f_θ(·) fθ(⋅) 和 g ϕ ( ⋅ ) g_\phi(·) gϕ(⋅) 分别表示深度神经网络的两个连续层的操作。从上等式中,我们可以预测,随着网络层的数量越来越深,原始数据将更容易丢失。然而,深度神经网络的参数基于网络的输出以及给定的目标,然后在通过计算损失函数生成新的梯度后更新网络。可以想象,更深层次的神经网络的输出不太能够保留关于预测目标的完整信息。这将使得在网络训练过程中使用不完整的信息成为可能,从而导致梯度不可靠和收敛性差。
-
解决上述问题的一种方法是直接增加模型的大小。当我们使用大量参数来构建模型时,它更有能力对数据进行更完整的转换。上述方法允许即使在数据前馈过程中信息丢失,仍然有机会保留足够的信息来执行到目标的映射。上述现象解释了为什么在大多数现代模型中宽度比深度更重要。然而,上述结论并不能从根本上解决极深神经网络中梯度不可靠的问题。下面,我们将介绍如何使用可逆函数来解决问题,并进行相关分析。
Reversible Functions
-
当函数 r 具有逆变换函数 v 时,我们称该函数为可逆函数,如等式所示。
-
X = v ζ ( r ψ ( X ) ) X=v_ζ(r_ψ(X)) X=vζ(rψ(X))
-
其中 ψ 和 ζ 分别是 r 和 v 的参数。数据 X 通过可逆函数进行转换而不丢失信息,如等式所示。
-
I ( X , X ) = I ( X , f ψ ( X ) ) = I ( X , g ζ ( f ψ ( X ) ) ) I(X,X)= I(X,f_ψ(X))= I(X,g_ζ (f_ψ(X))) I(X,X)=I(X,fψ(X))=I(X,gζ(fψ(X)))
-
当网络的变换函数由可逆函数组成时,可以获得更可靠的梯度来更新模型。今天几乎所有流行的深度学习方法都是符合可逆性质的架构,如等式。
-
X l + 1 = X l + f θ l + 1 ( X l ) X^{l+1}=X^l+f^{l+1}_\theta(X^l) Xl+1=Xl+fθl+1(Xl)
-
其中 l 表示PreAct-ResNet的第 l 层,f 是第 l 层的变换函数。PreAct-ResNet以明确的方式将原始数据 X 重复传递到后续层。尽管这样的设计可以使一千层以上的深度神经网络非常好地收敛,但它破坏了我们需要深度神经网络的一个重要原因。也就是说,对于难题,我们很难直接找到简单的映射函数来将数据映射到目标。这也解释了为什么当层数较少时,PreAct ResNet的性能比ResNet差。
-
-
此外,我们尝试使用掩蔽建模,使 Transformer 模型实现重大突破。我们使用近似方法,如下等式。试图找到 r 的逆变换 v,以便变换后的特征可以使用稀疏特征保留足够的信息。方程的形式如下:
-
X = v ζ ( r ψ ( X ) ⋅ M ) X=v_ζ(r_ψ(X)·M) X=vζ(rψ(X)⋅M)
-
其中M是动态二进制掩码。通常用于执行上述任务的其他方法是扩散模型和变分自动编码器,它们都具有求逆函数的功能。然而,当我们将上述方法应用于轻量级模型时,会存在缺陷,因为轻量级模型将对大量原始数据参数化不足。由于上述原因,将数据X映射到目标Y的重要信息I(Y,X)也将面临同样的问题。对于这个问题,我们将使用信息瓶颈的概念来探讨[Deep learning and the information bottleneck principle]。信息瓶颈的公式如下:
-
I ( X , X ) ≥ I ( Y , X ) ≥ I ( Y , f θ ( X ) ) ≥ . . . ≥ I ( Y , ˆ Y ) . I(X, X) ≥ I(Y, X) ≥ I(Y, f_θ(X)) ≥ ... ≥ I(Y, ˆY ). I(X,X)≥I(Y,X)≥I(Y,fθ(X))≥...≥I(Y,ˆY).
-
一般来说, I ( Y , X ) I(Y,X) I(Y,X) 只会占据 I ( X , X ) I(X,X) I(X,X) 的一小部分。然而,这对目标任务至关重要。因此,即使前馈阶段丢失的信息量不显著,只要覆盖 I ( Y , X ) I(Y,X) I(Y,X),训练效果也会受到很大影响。轻量级模型本身处于参数化不足的状态,因此在前馈阶段很容易丢失许多重要信息。因此,我们对轻量级模型的目标是如何从 I ( X , X ) I(X,X) I(X,X) 中准确地过滤 I ( Y , X ) I(Y,X) I(Y,X)。至于完全保留 X 的信息,这是很难实现的。基于上述分析,我们希望提出一种新的深度神经网络训练方法,该方法不仅可以生成可靠的梯度来更新模型,而且适用于浅层和轻量级的神经网络。
-
Methodology
Programmable Gradient Information
- 为了解决上述问题,我们提出了一种新的辅助监督框架,称为可编程梯度信息(PGI),如下图(d)所示。PGI主要包括三个部分,即(1)主分支、(2)辅助可逆分支和(3)多级辅助信息。从图(d)中,我们可以看到PGI的推理过程只使用主分支,因此不需要任何额外的推理成本。至于其他两个组成部分,它们用于解决或减缓深度学习方法中的几个重要问题。其中,设计了辅助可逆分支来处理神经网络深化所带来的问题。网络深化会造成信息瓶颈,使损失函数无法生成可靠的梯度。对于多级辅助信息,它是为了处理深度监督引起的误差积累问题而设计的,特别是对于多预测分支的架构和轻量级模型。接下来,我们将逐步介绍这两个组件。
-
PGI以及相关的网络架构和方法。(a) 路径聚合网络(PAN)),(b)可逆列(RevCol),(c)传统深度监督,以及(d)我们提出的可编程梯度信息(PGI)。PGI主要由三个部分组成:(1)主分支:用于推理的架构;(2)辅助可逆分支:生成可靠的梯度,为主分支提供反向传输;(3)多级辅助信息:控制主分支学习可规划的多级语义信息。
Auxiliary Reversible Branch
- 在PGI中,我们提出了辅助可逆分支来生成可靠的梯度并更新网络参数。通过提供从数据映射到目标的信息,损失函数可以提供指导,并避免从与目标不太相关的不完整前馈特征中发现虚假相关性的可能性。我们提出通过引入可逆结构来维护完整信息,但在可逆结构中添加主分支将消耗大量的推理成本。我们分析了上图(b)的架构,发现当添加从深层到浅层的额外连接时,推理时间将增加20%。当我们反复将输入数据添加到网络的高分辨率计算层(黄色框)时,推理时间甚至超过了时间的两倍。
- 由于我们的目标是使用可逆结构来获得可靠的梯度,因此“可逆”并不是推理阶段的唯一必要条件。有鉴于此,我们将可逆分支视为深度监管分支的扩展,然后设计辅助可逆分支,如图(d)所示。至于由于信息瓶颈而丢失重要信息的主要分支深层特征,它们将能够从辅助可逆分支接收可靠的梯度信息。这些梯度信息将驱动参数学习,以帮助提取正确和重要的信息,并且上述动作可以使主分支获得对目标任务更有效的特征。此外,可逆架构在浅层网络上的性能比在一般网络上差,因为复杂的任务需要在更深的网络中进行转换。我们提出的方法并不强迫主分支保留完整的原始信息,而是通过辅助监督机制生成有用的梯度来更新它。这种设计的优点是,所提出的方法也可以应用于较浅的网络。最后,由于在推理阶段可以去除辅助可逆分支,因此可以保留原始网络的推理能力。我们也可以选择PGI中的任何可逆结构来发挥辅助可逆分支的作用。
Multi-level Auxiliary Information
- 在本节中,我们将讨论多级辅助信息是如何工作的。包括多个预测分支的深度监管架构如上图(c)所示。对于对象检测,不同的特征金字塔可以用于执行不同的任务,例如,它们可以一起检测不同大小的对象。因此,在连接到深度监督分支后,浅层特征将被引导学习小物体检测所需的特征,此时系统将把其他大小物体的位置作为背景。然而,上述行为将导致深度特征金字塔丢失预测目标对象所需的大量信息。关于这个问题,我们认为每个特征金字塔都需要接收关于所有目标对象的信息,以便后续的主分支能够保留完整的信息来学习对各种目标的预测。
- 多级辅助信息的概念是在辅助监督的特征金字塔层次层和主分支之间插入一个集成网络,然后使用它来组合来自不同预测头的返回梯度,如上图(d)所示。多级辅助信息是对包含所有目标对象的梯度信息进行聚合,并将其传递给主分支,然后更新参数。此时,主分支的特征金字塔层次结构的特征将不会被某些特定对象的信息所支配。因此,我们的方法可以缓解深度监管中的信息泄露问题。此外,任何集成网络都可以用于多级辅助信息。因此,我们可以规划所需的语义级别,以指导不同规模的网络架构的学习。
Generalized ELAN
- 在本节中,我们将介绍拟议的新网络架构——GELAN。通过结合两种采用梯度路径规划设计的神经网络架构CSPNet和ELAN,我们设计了考虑重量、推理速度和准确性的广义有效层聚合网络(GELAN)。其总体架构如下图所示。我们将最初仅使用卷积层堆叠的ELAN的能力推广到可以使用任何计算块的新架构。
-
GELAN的架构:(a)CSPNet,(b)ELAN和(c)提出的GELAN。我们模仿CSPNet,将ELAN扩展到可以支持任何计算块的GELAN中。
Experiments
Experimental Setup
- 我们用MS COCO数据集验证了所提出的方法。所有实验设置都遵循YOLOv7 AF,而数据集是MS COCO 2017拆分。我们提到的所有模型都是使用从头开始训练策略进行训练的,训练次数总数为500个epoch。在设置学习率时,我们在前三个时期使用线性预热,随后的时期根据模型规模设置相应的衰减方式。对于最后15个epoch,我们关闭了马赛克数据增强。有关更多设置,请参阅附录。
Implimentation Details
- 我们分别基于 YOLOv7 和 Dynamic YOLOv7 构建了YOLOv9的通用版和扩展版。在网络架构的设计中,我们使用CSPNet块和planned RepConv作为计算块,将 ELAN 替换为 GELAN。我们还简化了下采样模块并优化了无锚预测头。至于 PGI 的辅助损失部分,我们完全遵循YOLOv7的辅助头设置。有关更多详细信息,请参阅附录。
Comparison with state-of-the-arts
-
下表列出了我们提出的 YOLOv9 与其他从头开始的实时物体探测器的比较。总体而言,现有方法中性能最好的方法是用于轻型模型的YOLO MS-S,用于中型模型的YOLO-MS、用于通用模型的YOLOv7-AF和用于大型模型的YOlonv8-X。与轻型和中型型号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在各个方面都有了显著的改进。
-
Comparison of state-of-the-art real-time object detectors.
-
另一方面,我们还将 ImageNet 预训练模型纳入比较,结果如下图所示。我们分别根据参数和计算量对它们进行比较。就参数数量而言,性能最好的大型模型是RT DETR。从图中,我们可以看到,在参数利用方面,使用传统卷积的YOLOv9甚至比使用深度卷积的YOLO MS更好。在大模型的参数利用方面,它也大大超过了使用ImageNet预训练模型的RT-DETR。更好的是,在深度模型中,YOLOv9 展示了使用 PGI 的巨大优势。通过准确地保留和提取将数据映射到目标所需的信息,我们的方法只需要66%的参数,同时保持RT DETR-X的准确性。
-
最先进的实时物体探测器的比较。参与比较的方法都使用ImageNet作为预训练权重,包括RT DETR、RTMDet和PP-YOLOE等。使用从头开始训练方法的YOLOv9明显优于其他方法的性能。
-
至于计算量,从最小到最大的最佳现有模型是YOLO-MS、PP-YOLOE和RT-DETR。从上图中,我们可以看到 YOLOv9 在计算复杂度方面远远优于从头开始训练的方法。此外,如果与基于深度卷积和基于ImageNet的预训练模型的模型相比,YOLOv9也非常有竞争力。
Ablation Studies
Generalized ELAN
-
对于GELAN,我们首先对计算块进行消融研究。我们分别使用Res块、Dark块和CSP块进行实验。下表显示,用不同的计算块替换ELAN中的卷积层后,系统可以保持良好的性能。用户确实可以自由地替换计算块,并在各自的推理设备上使用它们。在不同的计算块替换中,CSP块表现得特别好。它们不仅减少了参数和计算量,而且将AP提高了0.7%。因此,我们选择CSPELAN作为YOLOv9中GELAN的组成单元。
-
对各种计算块的消融研究。CB类型注释为计算块类型;-S 小型模型。
-
接下来,我们在不同尺寸的GELAN上进行ELAN块深度和CSP块深度实验,结果如下表所示。我们可以看到,当ELAN的深度从1增加到2时,精度显著提高。但是,当深度大于或等于2时,无论是提高ELAN深度还是CSP深度,参数的数量、计算量和精度都将始终呈现线性关系。这意味着GELAN对深度不敏感。换言之,用户可以任意组合GELAN中的组件来设计网络架构,并且无需特殊设计即可获得性能稳定的模型。在表中,对于YOLOv9-{S,M,C},我们将ELAN深度和CSP深度的配对设置为{{2,3},{2,1},{2,1}}。
-
ELAN和CSP深度的消融研究。DELAN和DCP分别表示ELAN和CSP的深度。-{S、M、C}表示小型、中型和紧凑型。
Programmable Gradient Information
-
在PGI方面,我们分别对 backbone and neck 的辅助可逆分支和多级辅助信息进行了消融研究。我们设计了辅助可逆分支ICN,使用DHLC连接来获得多级可逆信息。对于多层次的辅助信息,我们使用FPN和PAN进行消融研究,PFH的作用相当于传统的深度监督。所有实验的结果列于下表中。从表中可以看出,PFH仅在深度模型中有效,而我们提出的PGI可以在不同组合下提高精度。特别是在使用ICN时,我们得到了稳定和更好的结果。我们还尝试将YOLOv7中提出的领导引导分配应用于PGI的辅助监督,并取得了更好的性能。
-
Ablation study on PGI of backbone and neck.DELAN和DCP分别表示ELAN和CSP的深度。LHG表示YOLOv7提出的头部引导训练。
-
我们在各种规模的模型上进一步实现了PGI和深度监督的概念,并对结果进行了比较,这些结果如下表所示。正如一开始所分析的,引入深度监督将导致浅层模型的准确性损失。对于一般模型,引入深度监管会导致性能不稳定,而深度监管的设计理念只能在极深的模型中带来收益。所提出的PGI可以有效地处理信息瓶颈和信息断裂等问题,并可以全面提高不同规模模型的准确性。PGI的概念带来了两个宝贵的贡献。第一个是使辅助监督方法适用于浅层模型,而第二个是使深层模型训练过程获得更可靠的梯度。这些梯度使深度模型能够使用更准确的信息来建立数据和目标之间的正确相关性。
-
Ablation study on PGI.DS表示深度监督。-{S,M,C,E}表示小型、中型、紧凑型和扩展型。
-
最后,我们在表中显示了从基线YOLOv7到YOLOv9E逐渐增加成分的结果。我们提出的GELAN和PGI对模型进行了全面的改进。
-
Ablation study on GELAN and PGI.
Visualization
-
本节将探讨信息瓶颈问题并将其可视化。此外,我们还将可视化所提出的 PGI 如何使用可靠的梯度来找到数据和目标之间的正确相关性。在下图中,我们展示了在不同架构下使用随机初始权重作为前馈获得的特征图的可视化结果。我们可以看到,随着层数的增加,所有架构的原始信息逐渐减少。例如,在PlainNet的第50层,很难看到对象的位置,所有可区分的特征都将在第100层丢失。对于ResNet,虽然在第50层仍然可以看到对象的位置,但边界信息已经丢失。当深度达到第100层时,整个图像变得模糊。CSPNet和所提出的GELAN都表现得很好,它们都可以保持支持清晰识别物体的特征,直到第200层。在比较中,GELAN的结果更稳定,边界信息更清晰。
-
由PlainNet、ResNet、CSPNet和GELAN在不同深度的随机初始权重输出的特征图(可视化结果)。在100层之后,ResNet开始产生足以混淆对象信息的前馈输出。我们提出的GELAN在第150层之前仍然可以保留相当完整的信息,并且在第200层之前仍然具有足够的鉴别力。
-
下图用于显示PGI是否可以在训练过程中提供更可靠的梯度,以便用于更新的参数能够有效地捕捉输入数据与目标之间的关系。显示了PAN偏置预热中GELAN和YOLOv9(GELAN+PGI)的特征图的可视化结果。从图(b)和(c)的比较中,我们可以清楚地看到PGI准确简洁地捕捉到包含对象的区域。对于不使用PGI的GELAN,我们发现它在检测物体边界时存在发散性,并且在一些背景区域也产生了意想不到的响应。该实验证实,PGI确实可以提供更好的梯度来更新参数,并使主分支的前馈级能够保留更重要的特征。
-
在一个epoch的偏置预热后,GELAN和YOLOv9(GELAN+PGI)的PAN特征图(可视化结果)。GELAN最初有一些发散性,但在添加PGI的可逆分支后,它更有能力聚焦在目标物体上。
Conclusions
- 在本文中,我们建议使用PGI来解决信息瓶颈问题和深度监督机制不适合轻量级神经网络的问题。我们设计了GELAN,一种高效、轻量级的神经网络。在目标检测方面,GELAN在不同的计算块和深度设置下具有强大而稳定的性能。它确实可以广泛扩展为适用于各种推理设备的模型。对于上述两个问题,PGI的引入允许轻量级模型和深度模型在精度上实现显著提高。YOLOv9采用PGI和GELAN相结合的设计,显示出强大的竞争力。与YOLOv8相比,其出色的设计使深度模型的参数数量减少了49%,计算量减少了43%,但在MS COCO数据集上仍有0.6%的AP改进。
Appendix
A. Implementation Details
-
YOLOv9的训练参数如表所示。我们完全遵循YOLOv7 AF的设置,即使用SGD优化器来训练500个epoch。我们首先进行了3个epoch的热身,只在热身阶段更新了偏差。接下来,我们以线性衰减的方式将初始学习率从0.01降低到0.0001,表底部列出了数据增强设置。我们关闭了过去15个epoch的马赛克数据增强操作。
-
YOLOv9的超参数设置。
-
YOLOv9的网络拓扑结构完全遵循YOLOv7 AF,也就是说,我们用所提出的CSP-ELAN块代替ELAN。如下表所示,CSP-ELAN的深度参数分别表示为ELAN深度和CSP深度。关于CSPELAN滤波器的参数,它们表示为ELAN输出滤波器、CSP输出滤波器和CSP内部滤波器。在下采样模块部分,我们将CSP-DOWN模块简化为DOWN模块。DOWN模块由大小为2和步长为1的池化层以及大小为3和步长为2的Conv层组成。最后,我们优化了预测层,并将回归分支中的顶部、左侧、底部和右侧替换为解耦分支。
-
YOLOv9的网络配置
B. More Comparison
-
我们将YOLOv9与用不同方法训练的最先进的实时物体探测器进行了比较。主要包括四种不同的训练方法:
- (1)从头开始训练:我们已经完成了文中的大部分比较。以下只是DynamicDet的附加数据列表,用于比较;
- (2) ImageNet预训练:包括使用ImageNet进行监督预训练和自监督预训练两种方法;
- (3) 知识提炼:一种在训练完成后进行额外自我提炼的方法;
- (4)更复杂的训练过程:包括通过ImageNet预训练、知识提取、DAMO-YOLO甚至额外的预训练的大对象检测数据集的步骤组合。
-
我们将结果显示在下表中。从这个表中,我们可以看到我们提出的YOLOv9比所有其他方法都表现得更好。与使用ImageNet和Objects365训练的PPYOLOE±X相比,我们的方法仍然减少了55%的参数数量和11%的计算量,并提高了0.4%的AP。
-
最先进的物体探测器与不同训练设置的比较。
-
下表显示了按参数大小排序的所有模型的性能。我们提出的YOLOv9在不同大小的所有模型中都是帕累托最优的。其中,我们没有发现在参数超过20M的模型中进行Pareto最优的其他方法。上述实验数据表明,我们的YOLOv9具有优异的参数使用效率。
-
最先进的物体探测器与不同训练设置的比较(按参数数量排序)
-
下表所示为所有参与模型的性能,按计算量排序。我们提出的YOLOv9在所有具有不同尺度的模型中都是帕累托最优的。在具有60多个GFLOP的模型中,只有基于ELAN的DAMO-YOLO和基于DETR的RT-DETR可以与所提出的YOLOv9相媲美。上述比较结果表明,YOLOv9在计算复杂度和准确性之间的权衡中具有最突出的性能。
-
最先进的物体探测器与不同训练设置的比较(按计算量排序)。