本文最后更新于:2024年5月7日 下午
YOLO v9 提出了可编程梯度信息(PGI)的概念,设计了新的网络架构(GELAN),结果显示二者对于检测性能提升和参数利用率提升都发挥了重要作用。
重要链接
摘要
当今的深度学习方法专注于设计最合适的目标函数,以使模型的预测结果与实际情况最接近。同时,必须设计一个合适的架构,以便获取足够的信息进行预测。现有方法忽略了一个事实,即当输入数据经过逐层特征提取和空间变换时,大量信息将会丢失。本文将深入探讨当数据通过深度网络传输时的数据丢失重要问题,即信息瓶颈和可逆函数。我们提出了可编程梯度信息(PGI)的概念,以处理深度网络所需的各种变化,以实现多个目标。PGI可以为目标任务提供完整的输入信息来计算目标函数,从而获得可靠的梯度信息以更新网络权重。此外,基于梯度路径规划设计了一种新的轻量级网络架构——广义高效层聚合网络(GELAN)。GELAN的架构证实了PGI在轻量级模型上取得了优异的结果。我们在基于MS COCO数据集的目标检测上验证了提出的GELAN和PGI。结果显示,GELAN仅使用常规卷积算子即可实现比基于深度卷积开发的最先进方法更好的参数利用率。PGI可用于各种模型,从轻量级到大型。它可用于获取完整信息,使得从头开始训练的模型可以获得比使用大型数据集预训练的最先进模型更好的结果。
简介
基于深度学习的模型在各个领域,如计算机视觉、语言处理和语音识别等方面,已经展示出远远优于过去人工智能系统的性能。近年来,深度学习领域的研究人员主要关注如何开发更强大的系统架构和学习方法,例如CNNs、Transformers、Perceivers和Mambas等。此外,一些研究人员尝试开发更通用的目标函数,如损失函数、标签分配和辅助监督等。上述研究都试图精确地找到输入和目标任务之间的映射关系。然而,大多数过去的方法忽视了在前向传播过程中输入数据可能会存在大量信息丢失的事实。这种信息丢失会导致偏倚的梯度流,随后用于更新模型。上述问题可能导致深度网络建立目标与输入之间的错误关联,使得训练模型产生不正确的预测。
在深度网络中,输入数据在前向传播过程中丢失信息的现象通常被称为信息瓶颈,其示意图如图2所示。目前,主要可以缓解这一现象的方法有:(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数据集上的目标检测性能在各个方面大大超过了现有的实时目标检测器。
相关工作
实时目标检测器
当前主流的实时目标检测器是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]被用作预测头部。最近一些实时目标检测器,如RT DETR [43],其基础是DETR [4],也已经被提出。然而,由于DETR系列目标检测器极其难以在没有相应的领域预训练模型的情况下应用于新领域,目前最广泛使用的实时目标检测器仍然是YOLO系列。本文选择了YOLOv7 [63]作为基础,因为它已在各种计算机视觉任务和各种场景中被证明是有效的,以开发提出的方法。我们使用GELAN来改进架构和训练过程,并提出的PGI。上述新颖方法使得提出的YOLOv9成为新一代顶级实时目标检测器。
可逆结构
可逆架构的操作单元[3, 16, 19]必须保持可逆转换的特性,以确保每个操作单元层的输出特征图能够保留完整的原始信息。在此之前,RevCol [3]将传统的可逆单元泛化至多个层级,从而可以扩展不同层单元所表达的语义层级。通过对各种神经网络架构的文献综述,我们发现有许多具有不同程度可逆属性的高性能架构。例如,Res2Net模块[11]以分层方式将不同的输入分区与下一个分区组合,然后将所有转换后的分区连接在一起反向传递。CBNet [34, 39]通过复合主干重新引入原始输入数据,以获得完整的原始信息,并通过各种组合方法获得不同级别的多级可逆信息。这些网络架构通常具有出色的参数利用率,但额外的复合层会导致推理速度较慢。DynamicDet [36]将CBNet [34]和高效实时目标检测器YOLOv7 [63]结合起来,以在速度、参数数量和准确性之间取得很好的平衡。本文将DynamicDet架构引入作为设计可逆分支的基础。此外,可逆信息还进一步引入到提出的PGI中。提出的新架构在推理过程中不需要额外的连接,因此能充分保留速度、参数数量和准确性的优势。
辅助监督
深度监督[28, 54, 68]是最常见的辅助监督方法,通过在中间层插入额外的预测层进行训练。特别是在基于Transformer的方法中引入多层解码器的应用最为常见。另一种常见的辅助监督方法是利用相关的元信息指导中间层生成的特征图,并使其具有目标任务所需的属性[18, 20, 24, 29, 76]。这种类型的示例包括使用分割损失或深度损失来增强目标检测器的准确性。最近,文献中有很多关于使用不同的标签分配方法生成不同的辅助监督机制以加快模型收敛速度并同时提高鲁棒性的报道[53, 67, 82]。然而,辅助监督机制通常仅适用于大型模型,因此当应用于轻量级模型时,很容易导致欠参数化现象,使性能变差。我们提出的PGI设计了一种重新编程多层语义信息的方式,这种设计使得轻量级模型也能从辅助监督机制中受益。
问题描述
通常,人们将深度神经网络收敛问题的困难归因于诸如梯度消失或梯度饱和等因素,这些现象在传统深度神经网络中确实存在。然而,现代深度神经网络通过设计各种规范化和激活函数已经从根本上解决了上述问题。尽管如此,深度神经网络仍然存在收敛速度慢或收敛结果差的问题。
在本文中,我们进一步探讨上述问题的本质。通过深入分析信息瓶颈,我们推断出这个问题的根本原因是,最初来自非常深层网络的初始梯度在传递后很快失去了实现目标所需的许多信息。为了证实这一推断,我们使用具有初始权重的不同架构的前馈深度网络,然后在图2中将它们可视化和说明。显然,PlainNet在深层中已经丢失了进行目标检测所需的许多重要信息。至于ResNet、CSPNet和GELAN能够保留的重要信息比例,确实与训练后可以获得的准确性相关。我们进一步设计了基于可逆网络的方法来解决上述问题的根源。在本节中,我们将详细阐述我们对信息瓶颈原理和可逆函数的分析。
信息瓶颈原理
根据信息瓶颈原理,我们知道数据 X 在经过转换时可能会引起信息损失,如下所示的方程式
$$
I(X, X) \geq I(X, f \theta(X)) \geq I(X, g \phi(f \theta(X)))
$$
其中,I 表示互信息,f 和 g 是转换函数,θ 和 ϕ 分别是 f 和 g 的参数。
在深度神经网络中,fθ(·) 和 gϕ(·) 分别代表深度神经网络中两个连续层的操作。从方程式 1 中,我们可以预测随着网络层的增加,原始数据更有可能丢失。然而,深度神经网络的参数是基于网络输出以及给定目标,然后通过计算损失函数生成新的梯度更新网络。可以想象,深层神经网络的输出能力较低,无法完整地保留有关预测目标的信息。这将导致在网络训练过程中使用不完整信息,导致不可靠的梯度和收敛困难。
解决上述问题的一种方法是直接增加模型的大小。当我们使用大量参数构建模型时,它更有能力对数据进行更完整的转换。上述方法即使在数据前馈过程中丢失信息,仍有机会保留足够信息进行映射到目标。上述现象解释了为什么在大多数现代模型中,宽度比深度更重要。然而,上述结论并不能根本解决非常深的神经网络中不可靠梯度的问题。接下来,我们将介绍如何使用可逆函数来解决问题并进行相关分析。
可逆函数
当一个函数 r 具有反向转换函数 v 时,我们称这个函数为可逆函数,如方程式 2 所示:
$$
X=v \zeta(r \psi(X))
$$
其中,ψ 和 ζ 分别是 r 和 v 的参数。数据 X 经可逆函数转换后不会丢失信息,如方程式 3 所示:
$$
I(X, X)=I(X, r \psi(X))=I(X, v \zeta(r \psi(X)))
$$
当网络的转换函数由可逆函数组成时,可以获得更可靠的梯度来更新模型。几乎所有当今流行的深度学习方法都符合可逆性质,如方程式 4:
$$
X{l+1}=X{l}+f_{\theta}^{l+1}\left(X_{l}\right)
$$
其中 l 表示 PreAct ResNet 的第 l 层,f 是第 l 层的变换函数。PreAct ResNet 通过明确的方式将原始数据 X 重复传递给后续层。尽管这样的设计可以使具有超过一千层的深度神经网络非常好地收敛,但它破坏了我们需要深度神经网络的一个重要原因。即,对于困难问题,我们难以直接找到简单的映射函数将数据映射到目标。这也解释了为什么在层数较少时,PreAct ResNet 的表现不如 ResNet。
此外,我们尝试使用允许变压器模型取得重大突破的蒙版建模。我们使用近似方法,如方程式 5,试图找到函数 r 的反向转换 v,使得转换后的特征能够保留足够的信息使用稀疏特征。方程式 5 的形式如下:
$$
X=v \varsigma(r \psi(X) \cdot M)
$$
其中 M 是一个动态二进制蒙版。常用于执行上述任务的其他方法包括扩散模型和变分自动编码器,它们都有找到逆函数的功能。然而,当我们将上述方法应用于轻量级模型时,会出现缺陷,因为轻量级模型将对大量原始数据进行下参数化。由于上述原因,将数据 X 映射到目标 Y 的重要信息 I(Y,X) 也会面临同样的问题。针对这个问题,我们将探讨采用信息瓶颈概念。信息瓶颈的公式如下:
$$
I(X, X) \geq I(Y, X) \geq I(Y, f \theta(x)) \geq \ldots \geq I(Y, \hat{Y})
$$
一般来说,I(Y,X) 在 I(X,X) 中仅占很小一部分。但它对于目标任务至关重要。因此,即使在前向传播阶段丢失的信息量不大,只要涵盖了 I(Y,X),训练效果将受到极大影响。轻量级模型本身处于下参数化状态,因此在前向传播阶段很容易丢失大量重要信息。因此,我们对于轻量级模型的目标是如何准确地从 I(X,X) 中过滤出 I(Y,X)。至于完全保留 X 的信息,那是难以实现的。根据以上分析,我们希望提出一种新的深度神经网络训练方法,既能生成可靠的梯度更新模型,也适用于浅层和轻量级神经网络。
核心方法
可编程的梯度信息
为了解决前述问题,我们提出了一个名为可编程梯度信息(PGI)的新辅助监督框架,如图 3(d)所示。PGI 主要包括三个组件,分别是主分支、辅助可逆分支和多级辅助信息。从图 3(d)中可见,PGI 的推理过程只使用主分支,因此不需要额外的推理成本。至于另外两个组件,它们用于解决或减缓深度学习方法中的几个重要问题。其中,辅助可逆分支设计用于处理由神经网络加深引起的问题。网络加深将导致信息瓶颈,这将使损失函数无法生成可靠的梯度。至于多级辅助信息,它设计用于处理深度监督造成的错误累积问题,特别适用于多个预测分支的架构和轻量级模型。接下来,我们将逐步介绍这两个组件。
辅助可逆分支
在 PGI 中,我们提出了辅助可逆分支以生成可靠的梯度并更新网络参数。通过提供从数据到目标的映射信息,损失函数可以提供指导,并避免在不完整的前馈特征中找到与目标不相关的虚假相关性的可能性。我们通过引入可逆架构来保持完整信息,但是将主分支添加到可逆架构中将消耗大量推理成本。我们分析了图 3(b)的架构,发现当添加从深层到浅层的附加连接时,推理时间将增加 20%。当我们将输入数据重复添加到网络的高分辨率计算层(黄色框)时,推理时间甚至会超过两倍。
由于我们的目标是使用可逆架构获取可靠的梯度,“可逆”并非推理阶段的唯一必要条件。基于这一点,我们将可逆分支视为深度监督分支的扩展,然后设计辅助可逆分支,如图 3(d)所示。至于由于信息瓶颈而可能丢失重要信息的主分支深层特征,它们将能够从辅助可逆分支接收可靠的梯度信息。这些梯度信息将推动参数学习,帮助提取正确和重要的信息,上述操作可以使主分支获得更有效的适用于目标任务的特征。此外,可逆架构在浅层网络上的表现不如一般网络,因为复杂任务需要在更深的网络中进行转换。我们提出的方法不会强制主分支保留完整原始信息,而是通过辅助监督机制生成有用的梯度进行更新。这种设计的优势在于,所提出的方法也适用于较浅的网络。
最后,由于辅助可逆分支可以在推理阶段移除,因此可以保留原始网络的推理能力。我们还可以在 PGI 中选择任何可逆架构来担当辅助可逆分支的角色。
多级辅助信息
在本节中,我们将讨论多层次辅助信息的工作原理。深度监督架构包括多个预测分支,如图 3(c)所示。对于目标检测,可以使用不同的特征金字塔执行不同的任务,例如它们可以一起检测不同大小的物体。因此,在连接到深度监督分支之后,浅层特征将被引导学习用于小物体检测所需的特征,此时系统将将其他大小物体的位置视为背景。然而,上述做法将导致深层特征金字塔丢失预测目标对象所需的大量信息。针对这个问题,我们认为每个特征金字塔都需要接收有关所有目标对象的信息,以便后续的主分支可以保留完整信息来学习各种目标的预测。
多层次辅助信息的概念是在辅助监督的特征金字塔层级和主分支之间插入一个集成网络,然后使用它来结合不同预测头返回的梯度,如图 3(d)所示。多层次辅助信息是为了汇总包含所有目标对象的梯度信息,并将其传递给主分支,然后更新参数。这时,主分支的特征金字塔层次的特征将不会被某些特定对象的信息所主导。因此,我们的方法可以缓解深度监督中的信息丢失问题。此外,任何集成网络都可以用于多层次辅助信息。因此,我们可以规划所需的语义级别以指导不同大小的网络架构的学习。
广义ELAN
在这一部分中,我们描述了提出的新网络架构 - GELAN。通过结合两种神经网络架构,即带有梯度路径规划的 CSPNet 和 ELAN,我们设计了考虑轻量化、推理速度和准确性的广义高效层聚合网络(GELAN)。其整体架构如图 4 所示。我们将 ELAN 的能力进行了泛化,原本只使用卷积层堆叠的 ELAN,可以使用任何计算块的新架构。
实验结果
表格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%,计算量少21%,但达到相同的 AP (53%)。与 YOLOv8-X 相比,YOLOv9-X 的参数少15%,计算量少25%,在 AP 上有明显的1.7%改进。上述比较结果表明,与现有方法相比,我们提出的 YOLOv9 在各个方面都有明显的改进。
另外,我们还将 ImageNet 预训练模型包括在比较中,结果显示在图5中。我们分别基于参数和计算量进行比较。在参数数量方面,表现最佳的大模型是 RT DETR [43]。从图5中可以看出,使用传统卷积的 YOLOv9 在参数利用率上甚至比使用深度卷积的 YOLO MS 更好。对于大型模型的参数利用率,它也远远超过了使用 ImageNet 预训练模型的 RT DETR。更好的是,在深度模型中,YOLOv9 显示出使用PGI的巨大优势。通过精确保留和提取将数据映射到目标所需的信息,我们的方法只需要64%的参数来保持与RT DETR-X相同的准确性。
在计算量方面,从最小到最大的最佳现有模型分别为 YOLO MS [7]、 PP YOLOE [74] 和 RT DETR [43]。从图5中可以看出,YOLOv9 在计算复杂性方面远远优于从头开始训练的方法。此外,如果与基于深度卷积和基于 ImageNet 预训练模型的方法进行比较,YOLOv9 也具有很强的竞争力。
- 与轻量化和中型型号YOLO MS相比:参数减少约10%,计算量减少5 ~ 15%,但AP仍提高0.4 ~ 0.6%。
- 与YOLOv7 AF相比:YOLOv9- c参数减少42%,计算量减少21%,但AP达到相同(53%)。
- 与YOLOv8- x相比:YOLOv9- x参数减少15%,计算量减少25%,AP显著提高1.7%。
可视化
这一部分将探讨信息瓶颈问题并对其进行可视化。此外,我们还将展示提出的 PGI 如何利用可靠的梯度来找到数据和目标之间的正确关系。在图 6 中,我们展示了在不同架构下使用随机初始权重作为前向传播获取到的特征图的可视化结果。我们可以看到随着层数的增加,所有架构的原始信息逐渐减少。例如,在 PlainNet 的第 50 层,很难看出物体的位置,在第 100 层所有可分辨的特征都会丢失。至于 ResNet,虽然在第 50 层仍然能看到物体的位置,但边界信息已经丢失。当深度达到第 100 层时,整个图像变得模糊。无论是 CSPNet 还是提出的 GELAN 都表现出色,它们都能保持特征以支持对物体的清晰识别,直到第 200 层。在比较中,GELAN 的结果更稳定,边界信息更清晰。 图 7 用于展示 PGI 是否能在训练过程中提供更可靠的梯度,以便用于更新的参数能够有效捕获输入数据和目标之间的关系。
图 7 显示了在 PAN 偏置预热中,GELAN 和 YOLOv9(GELAN + PGI)的特征图的可视化结果。通过比较图 7(b) 和 ©,我们可以清楚地看到 PGI 准确简洁地捕捉到包含物体的区域。至于不使用 PGI 的 GELAN,我们发现在检测对象边界时存在发散,并且在某些背景区域还产生了意料之外的响应。这个实验证实了 PGI 确实能够提供更好的梯度来更新参数,并使主分支的前向传播阶段保留更多重要特征。
结论
在这篇论文中,我们提出使用 PGI 来解决信息瓶颈问题以及深度监督机制不适用于轻量级神经网络的问题。我们设计了 GELAN,一个高效且轻量级的神经网络。在目标检测方面,GELAN 在不同的计算块和深度设置下表现出强大且稳定的性能。它确实可以被广泛扩展为适用于各种推断设备的模型。针对以上两个问题,引入 PGI 使得轻量级模型和深度模型在准确性上都取得了显著改进。通过将 PGI 和 GELAN 结合设计的 YOLOv9 在 MS COCO 数据集上表现出强大的竞争力。它的优秀设计使得与 YOLOv8 相比,深度模型的参数数量减少了 49%,计算量减少了 43%,但在 MS COCO 数据集上仍然有 0.6% 的平均准确率提升。
参考资料
- https://arxiv.org/abs/2402.13616
- https://github.com/WongKinYiu/yolov9
- https://cloud.tencent.com/developer/article/2390383
- https://blog.csdn.net/qq_40716944/article/details/136231560
- https://blog.csdn.net/weixin_43334693/article/details/136383022
文章链接:
https://www.zywvvd.com/notes/study/deep-learning/detection/yolo/yolov9-intr/yolov9-intr/
“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”
微信支付
支付宝支付