YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information
Abstract
今天的深度学习方法关注的是如何设计最合适的目标函数,使模型的预测结果最接近ground truth。同时,必须设计一个适当的体系结构,以方便获取足够的预测信息。现有方法忽略了一个事实,即输入数据在逐层进行特征提取和空间变换时,会丢失大量的信息。本文将深入研究数据在深度网络中传输时的重要数据丢失问题,即信息瓶颈和可逆函数。我们提出了可编程梯度信息(PGI)的概念,以应对深度网络实现多个目标所需的各种变化。PGI可以为目标任务提供完整的输入信息来计算目标函数,从而获得可靠的梯度信息来更新网络权值。此外,设计了一种新的基于梯度路径规划的轻量级网络结构——广义高效层聚合网络(GELAN)。GELAN的架构证实了PGI在轻量化模型上取得了卓越的成果。我们在基于MS COCO数据集的目标检测上验证了提出的GELAN和PGI。结果表明,与基于深度卷积的最新方法相比,GELAN仅使用常规卷积算子可以获得更好的参数利用率。PGI可用于从轻型到大型的各种模型。它可以用来获取完整的信息,使得从头开始训练的模型比使用大数据集预训练的最先进的模型获得更好的结果,对比结果如图1所示。源代码在:https://github.com/WongKinYiu/yolov9。
1.Introduction
基于深度学习的模型在计算机视觉、语言处理和语音识别等各个领域都比过去的人工智能系统表现得更好。近年来,深度学习研究人员主要关注发展更强大的系统结构和学习方法,例如cnn[21-23、42、55、71、72],Transformers[8、9、40、41、60、69、70],percepvers[26、26、32、52、56、81、81],以及Mambas[17、38、80]。此外,一些研究者试图开发更一般的目标函数,如损失函数[5,45,46,50,77,78],标签分配[10,12,33,67,79]和辅助监督[18,20,24,28,29,51,54,68,76]。以上研究都试图精确地找到输入任务和目标任务之间的映射关系。然而,大多数过去的方法都忽略了输入数据在前馈过程中可能具有不可忽略的信息损失。这种信息的丢失会导致有偏差的梯度流,这些梯度流随后被用来更新模型。上述问题可能导致深度网络在目标和输入之间建立不正确的关联,从而导致训练模型产生不正确的预测。
在深度网络中,输入数据在前馈过程中丢失信息的现象通常被称为信息瓶颈[59],其示意图如图2所示。目前,可以缓解这一现象的主要方法有:(1)使用可逆架构[3,16,19]:该方法主要利用重复输入数据,并以显式的方式维护输入数据的信息;(2)使用掩模建模[1,6,9,27,71,73]:主要利用重构损失,采用隐式方式最大化提取的特征并保留输入信息;(3)引入深度监督概念[28,51,54,68]:利用没有丢失太多重要信息的浅层特征,预先建立特征到目标的映射,保证重要信息能够传递到更深层。然而,上述方法在训练过程和推理过程中都有不同的缺点。例如,可逆架构需要额外的层来组合重复输入的数据,这将显著增加推理成本。此外,由于输入数据层到输出层不能有太深的路径,这一限制将使在训练过程中难以对高阶语义信息进行建模。对于掩模建模,其重建损失有时与目标损失相冲突。此外,大多数掩码机制也会与数据产生不正确的关联。对于深层监督机制,会产生误差积累,如果浅层监督在训练过程中丢失信息,后续层将无法检索到所需的信息。上述现象在难度较大的任务和较小的模型上更为明显。
为了解决上述问题,我们提出了一个新的概念,即可编程梯度信息(PGI)。其思想是通过辅助可逆分支生成可靠的梯度,使深层特征仍能保持关键特征以执行目标任务。辅助可逆分支的设计可以避免传统的多路径特征融合深度监督过程可能造成的语义损失。换句话说,我们在不同的语义层次上对梯度信息传播进行编程,从而获得最佳的训练结果。PGI的辅助结构设计在辅助分支上构建,所以没有额外的成本。由于PGI可以自由选择适合目标任务的损失函数,它也克服了掩模建模所遇到的问题。所提出的PGI机制可以应用于各种规模的深度神经网络,并且比深度监督机制更通用,而深度监督机制只适用于非常深度的神经网络。
在本文中,我们还基于ELAN设计了广义ELAN (GELAN) [65], GELAN的设计同时考虑了参数数量、计算复杂度、精度和推理速度。这种设计允许用户为不同的推理设备任意选择合适的计算块。我们将提出的PGI与GELAN相结合,设计了新一代的YOLO系列目标检测系统,我们称之为YOLOv9。我们使用MS COCO数据集进行了实验,实验结果验证了我们提出的YOLOv9在所有比较中都取得了最好的性能。
总结本文贡献如下:
- 我们从可逆函数的角度对现有的深度神经网络架构进行了理论分析,并通过这一过程成功地解释了许多过去难以解释的现象。在此基础上设计了PGI和辅助可逆支路,取得了良好的效果。
- 我们设计的PGI解决了深度监督只能用于极深度神经网络架构的问题,从而使新的轻量级架构真正应用于日常生活中。
- 我们设计的GELAN仅使用常规卷积,实现了比基于最先进技术的深度卷积设计更高的参数使用率,同时显示出轻、快、准的巨大优势。
- 结合所提出的PGI和GELAN, YOLOv9在MS COCO数据集上的目标检测性能在各个方面都大大超过了现有的实时目标检测器。
2. Related Work
2.1 Real-time Object Detectors
目前主流的实时目标检测器是YOLO系列[2,7,13 - 15,25,30,31,47 - 49,61 - 63,74,75],这些模型大多使用CSPNet[64]或ELAN[65]及其变体作为主要计算单元。在特征集成方面,通常使用改进的PAN[37]或FPN[35]作为工具,然后使用改进的YOLOv3头[49]或FCOS头[57,58]作为预测头。最近也提出了一些实时目标检测器,如基于DETR[4]的RT DETR[43]。但是,由于没有相应的领域预训练模型,DETR系列目标检测器很难应用到新的领域,所以目前应用最广泛的实时目标检测器仍然是YOLO系列。本文选择在各种计算机视觉任务和各种场景中被证明有效的YOLOv7[63]作为开发所提出方法的基础。我们使用GELAN改进了体系结构和训练过程,并提出了PGI。上述新颖的方法使YOLOv9成为新一代顶级实时目标检测器。
2.2 Reversible Architectures
可逆体系结构的操作单元[3,16,19]必须保持可逆转换的特征,因此可以保证每层操作单元的输出特征图都能保留完整的原始信息。之前,RevCol[3]将传统的可逆单元推广到多个层次,这样可以扩展不同层次单元所表达的语义层次。通过对各种神经网络架构的文献回顾,我们发现有许多高性能的架构具有不同程度的可逆性。例如,Res2Net模块[11]以分层方式将不同的输入分区与下一个分区组合在一起,并在向后传递之前将所有转换的分区连接起来。CBNet[34,39]通过复合主干重新引入原始输入数据,获得完整的原始信息,并通过各种复合方法获得不同层次的多级可逆信息。这些网络架构通常具有良好的参数利用率,但额外的复合层导致推理速度较慢。DynamicDet[36]结合了CBNet[34]和高效实时目标检测器YOLOv7[63],在速度、参数数量和精度之间实现了很好的权衡。本文介绍了DynamicDet体系结构作为设计可逆分支的基础。此外,在PGI中进一步引入了可逆信息。本文提出的新架构在推理过程中不需要额外的连接,因此可以充分保留速度、参数数量和准确性的优势。
2.3 Auxiliary Supervision
深度监督[28,54,68]是最常见的辅助监督方法,它通过在中间层中插入额外的预测层来进行训练。特别是基于transformer的方法中引入的多层解码器的应用最为普遍。另一种常见的辅助监督方法是利用相关元信息对中间层生成的特征图进行引导,使其具有目标任务所需的属性[18,20,24,29,76]。这种类型的例子包括使用分割损失或深度损失来提高目标检测器的准确性。最近,文献中有很多报道[53,67,82]使用不同的标签分配方法来产生不同的辅助监督机制,以加快模型的收敛速度,同时提高鲁棒性。然而,辅助监督机制通常只适用于大型模型,因此当它应用于轻量级模型时,容易造成参数化不足的现象,从而使性能变差。我们提出的PGI设计了一种重新编程多层次语义信息的方法,这种设计允许轻量级模型也受益于辅助监督机制。
3. Problem Statement
通常,人们将深度神经网络收敛问题的困难归因于梯度消失或梯度饱和等因素,这些现象在传统的深度神经网络中确实存在。而现代深度神经网络通过设计各种归一化和激活函数,已经从根本上解决了上述问题。然而,深度神经网络仍然存在收敛速度慢或收敛效果差的问题。
在本文中,我们进一步探讨了上述问题的本质。通过对信息瓶颈的深入分析,我们推断出这个问题的根本原因是原本来自非常深的网络的初始梯度在传输后不久就丢失了大量实现目标所需的信息。为了证实这一推断,我们对具有初始权重的不同架构的深度网络进行前馈,然后在图2中对其进行可视化和说明。显然,PlainNet丢失了许多深层目标检测所需的重要信息。至于ResNet、CSPNet和GELAN能保留的重要信息比例,确实与训练后能获得的准确率呈正相关。我们进一步设计了基于可逆网络的方法来解决上述问题的原因。在本节中,我们将详细阐述我们对信息瓶颈原理和可逆函数的分析。
3.1 Information Bottleneck Principle
根据信息瓶颈原理,我们知道数据X在进行变换时可能会造成信息丢失,如下式1所示:
式中,I为互信息,f和g为变换函数,θ和φ分别为f和g的参数。
在深度神经网络中,fθ(·)和gϕ(·)分别表示深度神经网络中连续两层的操作。从Eq. 1可以预测,随着网络层数的加深,原始数据丢失的可能性也会增大。然而,深度神经网络的参数是基于网络的输出以及给定的目标,然后通过计算损失函数产生新的梯度后更新网络。可以想象,深度神经网络的输出不太能够保留关于预测目标的完整信息。这将使得在网络训练中使用不完全信息成为可能,从而导致梯度不可靠,收敛性差。
解决上述问题的一种方法是直接增加模型的大小。当我们使用大量的参数来构建模型时,它更有能力对数据进行更完整的转换。上述方法允许即使在数据前馈过程中丢失信息,仍然有机会保留足够的信息来执行到目标的映射。上述现象解释了为什么在大多数现代模型中,宽度比深度更重要。然而,上述结论并不能从根本上解决极深神经网络中梯度不可靠的问题。下面我们将介绍如何使用可逆函数来解决问题并进行相关分析。
3.2 Reversible Functions
当一个函数r有一个逆变换函数v时,我们称这个函数为可逆函数,如式2所示。
其中ψ和ζ分别是r和v的参数。数据X用可逆函数变换,不丢失信息,如式3所示。
当网络的变换函数由可逆函数组成时,可以得到更可靠的梯度来更新模型。几乎所有的今天主流的深度学习方法都是满足可逆性质的结构,如公式4所示:
式中,l为PreAct ResNet的第l层,f为第l层的变换函数。PreAct ResNet[22]以显式的方式将原始数据X反复传递给后续层。虽然这样的设计可以使一千多层的深度神经网络很好地收敛,但它破坏了我们需要深度神经网络的一个重要原因。也就是说,对于困难的问题,我们很难直接找到简单的映射函数将数据映射到目标。这也解释了为什么PreAct ResNet在层数较少的情况下性能比ResNet[21]差。
此外,我们尝试使用掩码建模,使transformer模型实现重大突破。我们使用近似方法,如Eq. 5,试图找到r的逆变换v,使变换后的特征可以使用稀疏特征保留足够的信息。式5的形式为:
其中M为动态二进制掩码。通常用于执行上述任务的其他方法是扩散模型和变分自编码器,它们都具有查找反函数的功能。然而,当我们将上述方法应用于轻量级模型时,将存在缺陷,因为轻量级模型将被参数化为大量的原始数据。由于上述原因,将数据X映射到目标Y的重要信息I(Y, X)也会面临同样的问题。对于这个问题,我们将使用信息瓶颈的概念进行探讨[59]。信息瓶颈的计算公式为:
一般来说,I(Y, X)只会占据I(X, X)很小的一部分,但它对目标任务至关重要。因此,即使前馈阶段丢失的信息量并不显著,但只要覆盖了I(Y, X),训练效果就会受到很大影响。轻量化模型本身处于参数化不足的状态,在前馈阶段容易丢失大量重要信息。因此,我们对轻量化模型的目标是如何准确地从I(X, X)中过滤出I(Y, X),而要完全保留X的信息,这是很难做到的。基于以上分析,我们希望提出一种新的深度神经网络训练方法,既能生成可靠的梯度来更新模型,又能适用于浅量和轻量神经网络。
4. Methodology
4.1 Programmale Gradient Information
为了解决上述问题,我们提出了一种新的辅助监督框架,称为可编程梯度信息(Programmable Gradient Information, PGI),如图3 (d)所示。PGI主要包括三个部分,即(1)主分支,(2)辅助可逆分支,(3)多级辅助信息。从图3 (d)可以看出,PGI的推理过程只使用了主干分支,因此不需要任何额外的推理成本。
至于其他两个组件,它们用于解决或减缓深度学习方法中的几个重要问题。其中,设计了辅助可逆分支来解决神经网络深度化带来的问题。网络深化会造成信息瓶颈,使损失函数无法产生可靠的梯度。对于多级辅助信息,设计用于处理深度监督带来的误差积累问题,特别是针对多预测分支的架构和轻量化模型。接下来,我们将逐步介绍这两个组件。
4.1.1 Auxiliary Reversible Branch
在PGI中,我们提出了辅助可逆分支来生成可靠的梯度和更新网络参数。通过提供从数据到目标的映射信息,损失函数可以提供指导,并避免从与目标不太相关的不完整前馈特征中发现虚假关联的可能性。我们提出通过引入可逆结构来维持完整信息,但是在可逆体系结构中加入主干会消耗大量的推理成本。我们分析了图3 (b)的架构,发现当添加从深层到浅层的额外连接时,推理时间将增加20%。当我们将输入数据反复添加到网络的高分辨率计算层(黄色框)时,推理时间甚至超过了时间的两倍。
由于我们的目标是使用可逆架构来获得可靠的梯度,因此“可逆”并不是推理阶段的唯一必要条件。鉴于此,我们将可逆分支作为深度监督分支的扩展,然后设计辅助可逆分支,如图3 (d)所示。对于因信息瓶颈而丢失重要信息的主分支深度特征,将能够从辅助可逆分支接收到可靠的梯度信息。这些梯度信息将驱动参数学习,帮助提取正确的重要信息,以上动作可以使主分支获得对目标任务更有效的特征。此外,可逆结构在浅层网络上的表现比一般网络差,因为复杂的任务需要在深层网络中进行转换。我们提出的方法并不强制主分支保留完整的原始信息,而是通过辅助监督机制生成有用的梯度来更新原始信息。这种设计的优点是,所提出的方法也可以应用于较浅的网络。
最后,由于在推理阶段可以去除辅助可逆分支,因此可以保留原始网络的推理能力。我们也可以在PGI中选择任意可逆体系结构来充当辅助可逆分支的角色。
4.1.2 Multi-level Auxiliary Information
在本节中,我们将讨论多层辅助信息是如何工作的。包含多个预测分支的深度监督架构如图3 (c)所示。对于对象检测,可以使用不同的特征金字塔来执行不同的任务,例如它们可以一起检测不同大小的对象。因此,在连接到深度监督分支后,将引导浅层特征学习小目标检测所需的特征,此时系统将其他大小目标的位置作为背景。然而,上述行为会导致深层特征金字塔丢失大量预测目标物体所需的信息。对于这个问题,我们认为每个特征金字塔都需要接收到所有目标对象的信息,这样后续的主干分支才能保留完整的信息来学习对各种目标的预测.
多级辅助信息的概念是在辅助监督的特征金字塔层次层和主分支之间插入一个集成网络,然后利用它来组合来自不同预测头的返回梯度,如图3 (d)所示。多级辅助信息就是将包含所有目标对象的梯度信息进行聚合,传递给主分支,然后更新参数。此时,主要分支的特征金字塔层次结构的特征就不会被某些特定对象的信息所支配。因此,该方法可以缓解深度监督中的信息破碎问题。此外,任何集成网络都可以使用多层次的辅助信息。因此,我们可以规划所需的语义层次来指导不同规模的网络架构的学习。
4.2 通用ELAN
在本节中,我们描述了提出的新网络架构- GELAN。通过结合CSPNet[64]和ELAN[65]这两种采用梯度路径规划设计的神经网络架构,我们设计了兼顾轻量级、推理速度和准确性的广义高效层聚合网络(GELAN)。它的整体架构如图4所示。我们将最初仅使用卷积层堆叠的ELAN[65]的能力推广到可以使用任何计算块的新架构.
5. Experiments
5.1 Experimental Setup
我们用MS COCO数据集验证了所提出的方法。所有实验设置遵循YOLOv7 AF[63],而数据集为MS COCO 2017拆分。我们提到的所有模型都是使用从头开始训练的策略来训练的,总的训练次数是500次。在学习率的设置上,我们在前三个时代采用线性预热,之后的时代根据模型尺度设置相应的衰减方式。对于最后15个epoch,我们关闭马赛克数据增强。更多设置请参考附录。
5.2 Experimention Details
我们分别基于YOLOv7[63]和Dynamic YOLOv7[36]构建了通用版和扩展版YOLOv9。在网络架构的设计中,我们使用CSPNet块[64]和计划的RepConv[63]作为计算块,将ELAN[65]替换为GELAN。简化了下采样模块,优化了锚定预测头。对于PGI的辅助损耗部分,我们完全遵循YOLOv7的辅助头部设置。详情请参阅附录。
5.3 Comparison with state-of-the-arts
表1列出了我们提出的YOLOv9与其他从头开始的实时对象检测器的比较。总体而言,在现有方法中,性能最好的方法是用于轻型模型的YOLO MS- s[7],用于中型模型的YOLO MS[7],用于一般模型的YOLOv7 AF[63],用于大型模型的YOLOv8-X[15]。与轻量化和中等型号的YOLO MS[7]相比,YOLOv9的参数减少了约10%,计算量减少了5 ~ 15%,但AP仍提高了0.4 ~ 0.6%。与YOLOv7 AF相比,YOLOv9- c的参数减少了42%,计算量减少了22%,但AP相同(53%)。与YOLOv9- x相比,YOLOv9- e的参数减少了16%,计算量减少了27%,AP提高了1.7%。以上对比结果表明,我们提出的YOLOv9与现有方法相比,各方面都有了显著的提高。
另一方面,我们也加入了ImageNet预训练模型进行比较,结果如图5所示。我们分别从参数和计算量两个方面对它们进行了比较。在参数数量方面,表现最好的大型模型是RT-DETR[43]。从图5中我们可以看到,在参数利用率方面,使用常规卷积的YOLOv9甚至比使用深度卷积的yoloms更好。对于大型模型的参数利用率,也大大超过了使用ImageNet预训练模型的RT-DETR。更好的是,在深度模型中,YOLOv9显示了使用PGI的巨大优势。通过准确地保留和提取将数据映射到目标所需的信息,我们的方法只需要66%的参数,同时保持了RTder-x的精度。
在计算量方面,现有模型从小到大的最佳是YOLO MS[7]、PP YOLOE[74]、RT DETR[43]。从图5中,我们可以看到YOLOv9在计算复杂度方面远远优于从头开始训练的方法。此外,如果与基于深度卷积和基于imagenet的预训练模型相比,YOLOv9也很有竞争力。
5.4 Ablation Studies
5.4.1 Generalized ELAN
对于GELAN,我们首先对计算块进行消融研究。我们分别使用Res块[21]、Dark块[49]和CSP块[64]进行实验。从表2可以看出,用不同的计算块替换ELAN中的卷积层后,系统仍能保持良好的性能。用户确实可以自由替换计算块,并在各自的推理设备上使用它们。在不同的计算块替换中,CSP块执行得特别好。它们不仅减少了参数和计算量,而且使AP提高了0.7%。因此,我们选择CSPELAN作为YOLOv9中GELAN的组成单元。
接下来,我们对不同尺寸的GELAN进行ELAN block-depth和CSP blockdepth实验,结果如表3所示。我们可以看到,当ELAN的深度从1增加到2时,精度明显提高。但当深度大于等于2时,无论是提高ELAN深度还是CSP深度,参数数量、计算量和精度始终呈现线性关系。这意味着GELAN对深度不敏感。
换句话说,用户可以任意组合GELAN中的组件来设计网络架构,无需特别设计就能得到性能稳定的模型。在表3中,对于YOLOv9-{S,M,C},我们将ELAN深度和CSP深度的配对设置为{{2,3},{2,1},{2,1}}。
Programmable Gradient Information
在PGI方面,我们分别对脊柱和颈部的辅助可逆分支和多层辅助信息进行了消融研究。我们设计了辅助可逆分支ICN,利用DHLC[34]联动获取多级可逆信息。对于多层辅助信息,我们使用FPN和PAN进行消融研究,PFH的作用相当于传统的深度监督。所有实验结果列于表4。从表4可以看出,PFH仅在深度模型中有效,而我们提出的PGI在不同组合下都可以提高精度。特别是在使用ICN时,我们得到了稳定和更好的结果。我们也尝试将YOLOv7[63]中提出的铅头引导分配应用到PGI的辅助监督中,取得了更好的效果。
我们进一步将PGI和深度监督的概念应用到不同大小的模型上,并对结果进行比较,结果如表5所示。如前所述,引入深度监督会导致浅层模型的准确性损失。对于一般模型,引入深度监督会导致性能不稳定,深度监督的设计理念只能在极深的模型中带来收益。所提出的PGI能够有效处理信息瓶颈、信息破碎等问题,全面提高不同尺寸模型的精度。PGI的概念带来了两个有价值的贡献。一是使辅助监督方法适用于浅层模型,二是使深层模型训练过程获得更可靠的梯度。这些梯度使深度模型能够使用更准确的信息来建立数据和目标之间的正确相关性。
最后,我们在表中显示了从基线YOLOv7到YOLOv9E逐渐增加组件的结果。我们提出的GELAN和PGI对模型进行了全面的改进。
5.3 Visualization
本节将探讨信息瓶颈问题并将其可视化。此外,我们还将可视化所提出的PGI如何使用可靠的梯度来找到数据和目标之间的正确相关性。在图6中,我们展示了在不同架构下使用随机初始权重作为前馈得到的特征图的可视化结果。我们可以看到,随着层数的增加,所有架构的原始信息逐渐减少。例如,在PlainNet的第50层,很难看到物体的位置,而在第100层,所有可区分的特征都将丢失。对于ResNet,虽然在第50层仍然可以看到物体的位置,但是已经丢失了边界信息。当深度达到第100层时,整个图像变得模糊。CSPNet和所提出的GELAN都表现得非常好,并且它们都可以保持支持清晰识别目标的特征,直到第200层。在比较中,GELAN的结果更稳定,边界信息更清晰。
图7展示了PGI在训练过程中是否能够提供更可靠的梯度,使用于更新的参数能够有效地捕捉输入数据与目标之间的关系。图7为PAN偏置预热时GELAN和YOLOv9 (GELAN + PGI)特征图的可视化结果。从图7(b)和(c)的对比中,我们可以清楚地看到,PGI准确、简洁地捕获了包含物体的区域。对于不使用PGI的GELAN,我们发现它在检测物体边界时存在发散,并且在一些背景区域也会产生意想不到的响应。本实验证实了PGI确实可以提供更好的梯度来更新参数,使主分支的前馈阶段保留更重要的特征。
6.Conclusions
在本文中,我们提出使用PGI来解决信息瓶颈问题和深度监督机制不适合轻量级神经网络的问题。我们设计了一种高效、轻量级的神经网络GELAN。在目标检测方面,在不同的计算块和深度设置下,GELAN具有强大而稳定的性能。它确实可以广泛地扩展成适用于各种推理装置的模型。对于上述两个问题,PGI的引入使轻量级模型和深度模型都能在精度上取得显著提高。由PGI和GELAN联合设计的YOLOv9表现出了很强的竞争力。与YOLOv8相比,其出色的设计使深度模型的参数数量减少了49%,计算量减少了43%,但在MS COCO数据集上仍有0.6%的AP改进。