YOLOv9:利用可编程梯度信息学习你想要学习的内容
Chien-Yao Wang, I-Hau Yeh, and Hong-Yuan Mark Liao 中央研究院资讯科学研究所,台湾 国立台北科技大学,台湾 中原大学资讯工程学系,台湾 kinyiu@iis.sinica.edu.tw, ihyeh@emc.com.tw, and liao@iis.sinica.edu.tw
摘要
当今的深度学习方法主要关注如何设计最合适的目标函数,以便模型的预测结果尽可能接近真实值(ground truth)。同时,必须设计一种能够促进获取足够预测信息的合适架构。现有方法忽略了一个事实:当输入数据经过逐层特征提取和空间变换时,会丢失大量信息。本文将深入探讨数据在深度网络中传输时的数据丢失问题,即信息瓶颈(information bottleneck)和可逆函数(reversible functions)。我们提出了可编程梯度信息(Programmable Gradient Information, PGI)的概念,以应对深度网络为实现多重目标所需的各种变化。PGI 可以为目标任务提供完整的输入信息以计算目标函数,从而获得可靠的梯度信息来更新网络权重。此外,我们设计了一种基于梯度路径规划的新型轻量级网络架构——广义高效层聚合网络(Generalized Efficient Layer Aggregation Network, GELAN)。GELAN 的架构证实了 PGI 在轻量级模型上获得了优异的结果。我们在 MS COCO 数据集的目标检测任务上验证了所提出的 GELAN 和 PGI。结果表明,GELAN 仅使用传统的卷积算子,就实现了比基于深度可分离卷积(depth-wise convolution)的最先进方法更好的参数利用率。PGI 可用于从轻量级到大型的各种模型。它可用于获取完整信息,从而使从头训练(train-from-scratch)的模型能够取得比使用大数据集预训练的最先进模型更好的结果,比较结果如图 1 所示。源代码位于:https://github.com/WongKinYiu/yolov9。
1. 引言
基于深度学习的模型在计算机视觉、语言处理和语音识别等各个领域表现出了远优于过去人工智能系统的性能。近年来,深度学习领域的研究人员主要集中在如何开发更强大的系统架构和学习方法,例如 CNNs [21–23, 42, 55, 71, 72]、Transformers [8, 9, 40, 41, 60, 69, 70]、Perceivers [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 [65] 设计了广义 ELAN(GELAN),GELAN 的设计同时考虑了参数数量、计算复杂度、准确性和推理速度。这种设计允许用户为不同的推理设备任意选择合适的计算块。我们将提出的 PGI 和 GELAN 相结合,设计了新一代 YOLO 系列目标检测系统,我们称之为 YOLOv9。我们使用 MS COCO 数据集进行了实验,实验结果验证了我们提出的 YOLOv9 在所有比较中都达到了顶级性能。
我们总结了本文的贡献如下:
- 我们从可逆函数的角度对现有的深度神经网络架构进行了理论分析,并通过这一过程成功解释了过去难以解释的许多现象。我们还基于此分析设计了 PGI 和辅助可逆分支,并取得了优异的结果。
- 我们设计的 PGI 解决了深度监督只能用于极深神经网络架构的问题,从而使新的轻量级架构能够真正应用于日常生活。
- 我们设计的 GELAN 仅使用传统卷积,就实现了比基于最先进技术的深度可分离卷积更高的参数使用率,同时展现出轻量、快速和准确的巨大优势。
- 结合所提出的 PGI 和 GELAN,YOLOv9 在 MS COCO 数据集上的目标检测性能在各个方面都大大超过了现有的实时目标检测器。
2. 相关工作
2.1. 实时目标检测器
目前主流的实时目标检测器是 YOLO 系列 [2, 7, 13–15, 25, 30, 31, 47–49, 61–63, 74, 75],其中大多数模型使用 CSPNet [64] 或 ELAN [65] 及其变体作为主要计算单元。在特征集成方面,通常使用改进的 PAN [37] 或 FPN [35] 作为工具,然后使用改进的 YOLOv3 head [49] 或 FCOS head [57, 58] 作为预测头。最近,一些实时目标检测器,例如基于 DETR [4] 的 RT DETR [43] 也被提出。然而,由于 DETR 系列目标检测器在没有相应领域预训练模型的情况下极难应用于新领域,因此目前使用最广泛的实时目标检测器仍然是 YOLO 系列。本文选择已被证明在各种计算机视觉任务和场景中有效的 YOLOv7 [63] 作为开发所提出方法的基础。我们使用 GELAN 来改进架构,并使用所提出的 PGI 来改进训练过程。上述新颖方法使所提出的 YOLOv9 成为新一代的顶级实时目标检测器。
2.2. 可逆架构
可逆架构 [3, 16, 19] 的操作单元必须保持可逆转换的特性,从而确保每个操作单元层的输出特征图能够保留完整的原始信息。此前,RevCol [3] 将传统可逆单元推广到多个级别,从而可以扩展不同层单元所表达的语义级别。通过对各种神经网络架构的文献综述,我们发现有许多高性能架构具有不同程度的可逆属性。例如,Res2Net 模块 [11] 以分层方式将不同的输入分区与下一个分区组合,并在向后传递之前连接所有转换后的分区。CBNet [34, 39] 通过复合骨干网络重新引入原始输入数据以获得完整的原始信息,并通过各种组合方法获得不同级别的多级可逆信息。这些网络架构通常具有出色的参数利用率,但额外的复合层导致推理速度变慢。DynamicDet [36] 结合了 CBNet [34] 和高效实时目标检测器 YOLOv7 [63],在速度、参数数量和准确性之间取得了很好的平衡。本文引入 DynamicDet 架构作为设计可逆分支的基础。此外,可逆信息被进一步引入到所提出的 PGI 中。所提出的新架构在推理过程中不需要额外的连接,因此可以充分保留速度、参数量和准确性的优势。
2.3. 辅助监督
深度监督 [28, 51, 54, 68] 是最常见的辅助监督方法,它通过在中间层插入额外的预测层来进行训练。特别是基于 Transformer 的方法中引入的多层解码器的应用最为常见。另一种常见的辅助监督方法是利用相关的元信息来引导中间层产生的特征图,并使其具有目标任务所需的属性 [18, 20, 24, 29, 76]。这类例子包括使用分割损失或深度损失来提高目标检测器的准确性。最近,文献中有许多报告 [53, 67, 82] 使用不同的标签分配方法来生成不同的辅助监督机制,以加快模型的收敛速度并同时提高鲁棒性。然而,辅助监督机制通常只适用于大型模型,因此当应用于轻量级模型时,容易导致欠参数化现象,从而使性能变差。我们提出的 PGI 设计了一种重新编程多级语义信息的方法,这种设计允许轻量级模型也能从辅助监督机制中受益。
3. 问题陈述
通常,人们将深度神经网络的收敛困难归因于梯度消失或梯度饱和等因素,这些现象确实存在于传统的深度神经网络中。然而,现代深度神经网络已经通过设计各种归一化和激活函数从根本上解决了上述问题。尽管如此,深度神经网络仍然存在收敛缓慢或收敛结果不佳的问题。
在本文中,我们进一步探讨了上述问题的本质。通过对信息瓶颈的深入分析,我们推断出这个问题的根本原因是,最初来自非常深的网络中的初始梯度在传输后不久就丢失了实现目标所需的大量信息。为了证实这一推论,我们用初始权重对不同架构的深度网络进行正向传播,然后将其可视化并说明在图 2 中。显然,PlainNet 在深层中丢失了目标检测所需的大量重要信息。至于 ResNet、CSPNet 和 GELAN 能够保留的重要信息的比例,它确实与训练后可以获得的准确性正相关。我们进一步设计了基于可逆网络的方法来解决上述问题的原因。在本节中,我们将详细阐述我们对信息瓶颈原理和可逆函数的分析。
3.1. 信息瓶颈原理
根据信息瓶颈原理,我们知道数据 在经过变换时可能会导致信息丢失,如下面的公式 (1) 所示:
其中 表示互信息, 和 是变换函数, 和 分别是 和 的参数。
在深度神经网络中, 和 分别代表深度神经网络中两个连续层的操作。从公式 (1) 中,我们可以预测,随着网络层数变得更深,原始数据将更有可能丢失。然而,深度神经网络的参数是基于网络的输出以及给定的目标,然后在计算损失函数生成新梯度后更新网络。可以想象,更深层神经网络的输出保留关于预测目标的完整信息的能力较弱。这将使得在网络训练期间使用不完整信息成为可能,从而导致不可靠的梯度和较差的收敛。
解决上述问题的一种方法是直接增加模型的大小。当我们使用大量参数来构建模型时,它更有能力对数据进行更完整的变换。上述方法使得即使在数据正向传播过程中丢失了信息,仍然有机会保留足够的信息来执行到目标的映射。上述现象解释了为什么在大多数现代模型中宽度比深度更重要。然而,上述结论不能从根本上解决非常深神经网络中梯度不可靠的问题。下面,我们将介绍如何使用可逆函数来解决问题并进行相关分析。
3.2. 可逆函数
当函数 具有逆变换函数 时,我们称该函数为可逆函数,如公式 (2) 所示。
其中 和 分别是 和 的参数。数据 通过可逆函数转换而不会丢失信息,如公式 (3) 所示。
当网络的变换函数由可逆函数组成时,可以获得更可靠的梯度来更新模型。当今几乎所有流行的深度学习方法都是符合可逆属性的架构,例如公式 (4)。
其中 表示 PreAct ResNet 的第 层, 是第 层的变换函数。PreAct ResNet [22] 以显式方式将原始数据 重复传递给后续层。虽然这样的设计可以使具有超过一千层的深度神经网络收敛得非常好,但它破坏了我们需要深度神经网络的一个重要原因。也就是说,对于困难的问题,我们很难直接找到简单的映射函数将数据映射到目标。这也解释了为什么当层数较少时,PreAct ResNet 的性能比 ResNet [21] 差。
此外,我们尝试使用允许 Transformer 模型取得重大突破的掩码建模。我们使用近似方法,例如公式 (5),试图找到 的逆变换 ,以便转换后的特征可以使用稀疏特征保留足够的信息。公式 (5) 的形式如下:
其中 是动态二进制掩码。通常用于执行上述任务的其他方法是扩散模型和变分自编码器,它们都具有寻找逆函数的功能。然而,当我们应用上述方法到轻量级模型时,会出现缺陷,因为轻量级模型对于大量原始数据来说将是欠参数化的。由于上述原因,将数据 映射到目标 的重要信息 也将面临同样的问题。对于这个问题,我们将使用信息瓶颈 [59] 的概念来探索它。信息瓶颈的公式如下:
一般来说, 只会占据 的一小部分。然而,它对于目标任务至关重要。因此,即使正向传播阶段丢失的信息量不显著,只要 被覆盖,训练效果就会受到很大影响。轻量级模型本身处于欠参数化状态,因此在正向传播阶段很容易丢失大量重要信息。因此,我们对轻量级模型的目标是如何从 中准确过滤出 。至于完全保留 的信息,那是很难实现的。基于上述分析,我们希望提出一种新的深度神经网络训练方法,不仅可以生成可靠的梯度来更新模型,而且适用于浅层和轻量级神经网络。
4. 方法论
4.1. 可编程梯度信息
为了解决上述问题,我们提出了一种新的辅助监督框架,称为可编程梯度信息(PGI),如图 3 (d) 所示。PGI 主要包括三个组件,即 (1) 主分支,(2) 辅助可逆分支,以及 (3) 多级辅助信息。从图 3 (d) 中我们可以看到,PGI 的推理过程仅使用主分支,因此不需要任何额外的推理成本。至于其他两个组件,它们用于解决或减缓深度学习方法中的几个重要问题。其中,辅助可逆分支旨在处理由神经网络加深引起的问题。网络加深会导致信息瓶颈,这将使损失函数无法生成可靠的梯度。至于多级辅助信息,它旨在处理由深度监督引起的误差累积问题,特别是对于多预测分支的架构和轻量级模型。接下来,我们将逐步介绍这两个组件。
4.1.1. 辅助可逆分支
在 PGI 中,我们提出辅助可逆分支来生成可靠的梯度并更新网络参数。通过提供从数据到目标的映射信息,损失函数可以提供指导,并避免从与目标相关性较低的不完整正向传播特征中找到错误相关性的可能性。我们提出通过引入可逆架构来维护完整信息,但将主分支添加到可逆架构中会消耗大量的推理成本。我们分析了图 3 (b) 的架构,发现当添加从深层到浅层的额外连接时,推理时间将增加 20%。当我们反复将输入数据添加到网络的高分辨率计算层(黄色框)时,推理时间甚至超过了两倍。
由于我们的目标是使用可逆架构来获得可靠的梯度,“可逆”并不是推理阶段唯一必要的条件。鉴于此,我们将可逆分支视为深度监督分支的扩展,然后设计辅助可逆分支,如图 3 (d) 所示。至于由于信息瓶颈而丢失了重要信息的主分支深层特征,它们将能够从辅助可逆分支接收可靠的梯度信息。这些梯度信息将驱动参数学习以辅助提取正确且重要的信息,上述动作可以使主分支获得对目标任务更有效的特征。此外,可逆架构在浅层网络上的表现比在通用网络上更差,因为复杂的任务需要在更深的网络中进行转换。我们提出的方法并不强制主分支保留完整的原始信息,而是通过辅助监督机制生成有用的梯度来更新它。这种设计的优点是所提出的方法也可以应用于更浅的网络。
最后,由于辅助可逆分支可以在推理阶段被移除,因此可以保留原始网络的推理能力。我们也可以在 PGI 中选择任何可逆架构来扮演辅助可逆分支的角色。
4.1.2. 多级辅助信息
在本节中,我们将讨论多级辅助信息是如何工作的。包含多个预测分支的深度监督架构如图 3 (c) 所示。对于目标检测,可以使用不同的特征金字塔来执行不同的任务,例如它们可以一起检测不同大小的对象。因此,在连接到深度监督分支后,浅层特征将被引导学习小目标检测所需的特征,此时系统会将其他大小对象的位置视为背景。然而,上述做法会导致深层特征金字塔丢失预测目标对象所需的大量信息。关于这个问题,我们认为每个特征金字塔都需要接收关于所有目标对象的信息,以便后续的主分支可以保留完整的信息来学习各种目标的预测。
多级辅助信息的概念是在辅助监督的特征金字塔层级和主分支之间插入一个集成网络,然后使用它来组合来自不同预测头的返回梯度,如图 3 (d) 所示。多级辅助信息的作用是聚合包含所有目标对象的梯度信息,并将其传递给主分支,然后更新参数。此时,主分支的特征金字塔层级的特征将不会被某些特定对象的信息所主导。结果,我们的方法可以缓解深度监督中的信息破碎问题。此外,任何集成网络都可以用于多级辅助信息。因此,我们可以规划所需的语义级别来引导不同尺寸网络架构的学习。
4.2. 广义 ELAN
在本节中,我们描述了所提出的新网络架构——GELAN。通过结合两个神经网络架构,CSPNet [64] 和 ELAN [65],它们都是用梯度路径规划设计的,我们设计了广义高效层聚合网络(GELAN),它考虑了轻量级、推理速度和准确性。其整体架构如图 4 所示。我们将 ELAN [65] 的能力进行了泛化,它最初只使用卷积层的堆叠,扩展到可以使用任何计算块的新架构。
5. 实验
5.1. 实验设置
我们使用 MS COCO 数据集验证所提出的方法。所有实验设置均遵循 YOLOv7 AF [63],数据集为 MS COCO 2017 划分。我们提到的所有模型均使用从头训练(train-from-scratch)策略进行训练,总训练次数为 500 个 epoch。在设置学习率时,我们在前三个 epoch 使用线性预热(linear warm-up),后续 epoch 根据模型规模设置相应的衰减方式。至于最后 15 个 epoch,我们关闭马赛克(mosaic)数据增强。更多设置请参考附录。
5.2. 实现细节
我们分别基于 YOLOv7 [63] 和 Dynamic YOLOv7 [36] 构建了通用和扩展版本的 YOLOv9。在网络架构设计中,我们用使用规划的 RepConv [63] 作为计算块的 CSPNet 块 [64] 替换了 ELAN [65]。我们还简化了下采样模块并优化了无锚点(anchor-free)预测头。至于 PGI 的辅助损失部分,我们完全遵循 YOLOv7 的辅助头设置。请参阅附录了解更多详情。
表 1. 最先进的实时目标检测器的比较。
| 模型 | #Param. (M) | FLOPs (G) | (%) | (%) | (%) | (%) | (%) | (%) |
|---|---|---|---|---|---|---|---|---|
| YOLOv5-N r7.0 [14] | 1.9 | 4.5 | 28.0 | 45.7 | – | – | – | – |
| YOLOv5-S r7.0 [14] | 7.2 | 16.5 | 37.4 | 56.8 | – | – | – | – |
| YOLOv5-M r7.0 [14] | 21.2 | 49.0 | 45.4 | 64.1 | – | – | – | – |
| YOLOv5-L r7.0 [14] | 46.5 | 109.1 | 49.0 | 67.3 | – | – | – | – |
| YOLOv5-X r7.0 [14] | 86.7 | 205.7 | 50.7 | 68.9 | – | – | – | – |
| YOLOv6-N v3.0 [30] | 4.7 | 11.4 | 37.0 | 52.7 | – | – | – | – |
| YOLOv6-S v3.0 [30] | 18.5 | 45.3 | 44.3 | 61.2 | – | – | – | – |
| YOLOv6-M v3.0 [30] | 34.9 | 85.8 | 49.1 | 66.1 | – | – | – | – |
| YOLOv6-L v3.0 [30] | 59.6 | 150.7 | 51.8 | 69.2 | – | – | – | – |
| YOLOv7 [63] | 36.9 | 104.7 | 51.2 | 69.7 | 55.9 | 31.8 | 55.5 | 65.0 |
| YOLOv7-X [63] | 71.3 | 189.9 | 52.9 | 71.1 | 51.4 | 36.9 | 57.7 | 68.6 |
| YOLOv7-N AF [63] | 3.1 | 8.7 | 37.6 | 53.3 | 40.6 | 18.7 | 41.7 | 52.8 |
| YOLOv7-S AF [63] | 11.0 | 28.1 | 45.1 | 61.8 | 48.9 | 25.7 | 50.2 | 61.2 |
| YOLOv7 AF [63] | 43.6 | 130.5 | 53.0 | 70.2 | 57.5 | 35.8 | 58.7 | 68.9 |
| YOLOv8-N [15] | 3.2 | 8.7 | 37.3 | 52.6 | – | – | – | – |
| YOLOv8-S [15] | 11.2 | 28.6 | 44.9 | 61.8 | – | – | – | – |
| YOLOv8-M [15] | 25.9 | 78.9 | 50.2 | 67.2 | – | – | – | – |
| YOLOv8-L [15] | 43.7 | 165.2 | 52.9 | 69.8 | 57.5 | 35.3 | 58.3 | 69.8 |
| YOLOv8-X [15] | 68.2 | 257.8 | 53.9 | 71.0 | 58.7 | 35.7 | 59.3 | 70.7 |
| DAMO YOLO-T [75] | 8.5 | 18.1 | 42.0 | 58.0 | 45.2 | 23.0 | 46.1 | 58.5 |
| DAMO YOLO-S [75] | 12.3 | 37.8 | 46.0 | 61.9 | 49.5 | 25.9 | 50.6 | 62.5 |
| DAMO YOLO-M [75] | 28.2 | 61.8 | 49.2 | 65.5 | 53.0 | 29.7 | 53.1 | 66.1 |
| DAMO YOLO-L [75] | 42.1 | 97.3 | 50.8 | 67.5 | 55.5 | 33.2 | 55.7 | 66.6 |
| Gold YOLO-N [61] | 5.6 | 12.1 | 39.6 | 55.7 | – | 19.7 | 44.1 | 57.0 |
| Gold YOLO-S [61] | 21.5 | 46.0 | 45.4 | 62.5 | – | 25.3 | 50.2 | 62.6 |
| Gold YOLO-M [61] | 41.3 | 87.5 | 49.8 | 67.0 | – | 32.3 | 55.3 | 66.3 |
| Gold YOLO-L [61] | 75.1 | 151.7 | 51.8 | 68.9 | – | 34.1 | 57.4 | 68.2 |
| YOLO MS-N [7] | 4.5 | 17.4 | 43.4 | 60.4 | 47.6 | 23.7 | 48.3 | 60.3 |
| YOLO MS-S [7] | 8.1 | 31.2 | 46.2 | 63.7 | 50.5 | 26.9 | 50.5 | 63.0 |
| YOLO MS [7] | 22.2 | 80.2 | 51.0 | 68.6 | 55.7 | 33.1 | 56.1 | 66.5 |
| GELAN-S (Ours) | 7.1 | 26.4 | 46.7 | 63.0 | 50.7 | 25.9 | 51.5 | 64.0 |
| GELAN-M (Ours) | 20.0 | 76.3 | 51.1 | 67.9 | 55.7 | 33.6 | 56.4 | 67.3 |
| GELAN-C (Ours) | 25.3 | 102.1 | 52.5 | 69.5 | 57.3 | 35.8 | 57.6 | 69.4 |
| GELAN-E (Ours) | 57.3 | 189.0 | 55.0 | 71.9 | 60.0 | 38.0 | 60.6 | 70.9 |
| YOLOv9-S (Ours) | 7.1 | 26.4 | 46.8 | 63.4 | 50.7 | 26.6 | 56.0 | 64.5 |
| YOLOv9-M (Ours) | 20.0 | 76.3 | 51.4 | 68.1 | 56.1 | 33.6 | 57.0 | 68.0 |
| YOLOv9-C (Ours) | 25.3 | 102.1 | 53.0 | 70.2 | 57.8 | 36.2 | 58.5 | 69.3 |
| YOLOv9-E (Ours) | 57.3 | 189.0 | 55.6 | 72.8 | 60.6 | 40.2 | 61.0 | 71.4 |
5.3. 与最先进技术的比较
表 1 列出了我们提出的 YOLOv9 与其他从头训练的实时目标检测器的比较。总体而言,现有方法中表现最好的是用于轻量级模型的 YOLO MS-S [7],用于中型模型的 YOLO MS [7],用于通用模型的 YOLOv7 AF [63],以及用于大型模型的 YOLOv8-X [15]。与轻量级和中型模型 YOLO MS [7] 相比,YOLOv9 的参数减少了约 10%,计算量减少了 515%,但 AP 仍有 0.40.6% 的提升。与 YOLOv7 AF 相比,YOLOv9-C 的参数减少了 42%,计算量减少了 22%,但达到了相同的 AP (53%)。与 YOLOv8-X 相比,YOLOv9-E 的参数减少了 16%,计算量减少了 27%,并且 AP 有 1.7% 的显著提升。上述比较结果表明,我们提出的 YOLOv9 与现有方法相比在各个方面都有显著改进。
另一方面,我们还将 ImageNet 预训练模型纳入比较,结果如图 5 所示。我们分别基于参数和计算量对它们进行了比较。在参数数量方面,表现最好的大型模型是 RT DETR [43]。从图 5 中,我们可以看到使用传统卷积的 YOLOv9 在参数利用率上甚至优于使用深度可分离卷积的 YOLO MS。至于大型模型的参数利用率,它也大大超过了使用 ImageNet 预训练模型的 RT DETR。更好的是,在深度模型中,YOLOv9 展示了使用 PGI 的巨大优势。通过准确保留和提取将数据映射到目标所需的信息,我们的方法仅需要 66% 的参数,同时保持与 RT DETR-X 相同的准确性。
至于计算量,从最小到最大的最佳现有模型是 YOLO MS [7]、PP-YOLOE [74] 和 RT DETR [43]。从图 5 中,我们可以看到 YOLOv9 在计算复杂度方面远优于从头训练的方法。此外,如果与基于深度可分离卷积和基于 ImageNet 预训练模型的方法相比,YOLOv9 也非常有竞争力。
5.4. 消融研究
5.4.1.### 广义 ELAN
对于 GELAN,我们首先对计算块进行了消融研究。我们分别使用 Res 块 [21]、Dark 块 [49] 和 CSP 块 [64] 进行了实验。表 2 显示,在用不同的计算块替换 ELAN 中的卷积层后,系统可以保持良好的性能。用户确实可以自由地替换计算块并将其用于各自的推理设备。在不同的计算块替换中,CSP 块表现特别好。它们不仅减少了参数量和计算量,还将 AP 提高了 0.7%。因此,我们在 YOLOv9 的 GELAN 中选择了 CSP-ELAN 作为组件单元。
表 2. 关于各种计算块的消融研究。
| 模型 | CB 类型 | #Param. | FLOPs | |
|---|---|---|---|---|
| GELAN-S | Conv | 6.2M | 23.5G | 44.8% |
| GELAN-S | Res [21] | 5.4M | 21.0G | 44.3% |
| GELAN-S | Dark [49] | 5.7M | 21.8G | 44.5% |
| GELAN-S | CSP [64] | 5.9M | 22.4G | 45.5% |
CB 类型表示计算块类型。 -S 表示小型模型。
接下来,我们对不同尺寸的 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}}。
表 3. 关于 ELAN 和 CSP 深度的消融研究。
| 模型 | #Param. | FLOPs | |||
|---|---|---|---|---|---|
| GELAN-S | 2 | 1 | 5.9M | 22.4G | 45.5% |
| GELAN-S | 2 | 2 | 6.5M | 24.4G | 46.0% |
| GELAN-S | 3 | 1 | 7.1M | 26.3G | 46.5% |
| GELAN-S | 2 | 3 | 7.1M | 26.4G | 46.7% |
| GELAN-M | 2 | 1 | 20.0M | 76.3G | 51.1% |
| GELAN-M | 2 | 2 | 22.2M | 85.1G | 51.7% |
| GELAN-M | 3 | 1 | 24.3M | 93.5G | 51.8% |
| GELAN-M | 2 | 3 | 24.4M | 94.0G | 52.3% |
| GELAN-C | 1 | 1 | 18.9M | 77.5G | 50.7% |
| GELAN-C | 2 | 1 | 25.3M | 102.1G | 52.5% |
| GELAN-C | 2 | 2 | 28.6M | 114.4G | 53.0% |
| GELAN-C | 3 | 1 | 31.7M | 126.8G | 53.2% |
| GELAN-C | 2 | 3 | 31.9M | 126.7G | 53.3% |
和 分别表示 ELAN 和 CSP 的深度。 -{S, M, C} 表示小型、中型和紧凑型模型。
5.4.2. 可编程梯度信息
在 PGI 方面,我们分别对骨干网络和颈部网络进行了辅助可逆分支和多级辅助信息的消融研究。我们设计了辅助可逆分支 ICN,使用 DHLC [34] 链接来获取多级可逆信息。至于多级辅助信息,我们使用 FPN 和 PAN 进行消融研究,PFH 的作用等同于传统的深度监督。所有实验结果列于表 4 中。从表 4 中可以看出,PFH 仅在深层模型中有效,而我们提出的 PGI 可以在不同的组合下提高准确性。特别是在使用 ICN 时,我们获得了稳定且更好的结果。我们还尝试将 YOLOv7 [63] 中提出的引导头分配(lead-head guided assignment)应用于 PGI 的辅助监督,并取得了更好的性能。
表 4. 关于骨干网络和颈部网络 PGI 的消融研究。
| 模型 | ||||||
|---|---|---|---|---|---|---|
| GELAN-C | – | – | 52.5% | 35.8% | 57.6% | 69.4% |
| GELAN-C | PFH | – | 52.5% | 35.3% | 58.1% | 68.9% |
| GELAN-C | FPN | – | 52.6% | 35.3% | 58.1% | 68.9% |
| GELAN-C | – | ICN | 52.7% | 35.3% | 58.4% | 68.9% |
| GELAN-C | FPN | ICN | 52.8% | 35.8% | 58.2% | 69.1% |
| GELAN-C | ICN | – | 52.9% | 35.2% | 58.7% | 68.6% |
| GELAN-C | LHG-ICN | – | 53.0% | 36.3% | 58.5% | 69.1% |
| GELAN-E | – | – | 55.0% | 38.0% | 60.6% | 70.9% |
| GELAN-E | PFH | – | 55.3% | 38.3% | 60.3% | 71.6% |
| GELAN-E | FPN | – | 55.6% | 40.2% | 61.0% | 71.4% |
| GELAN-E | PAN | – | 55.5% | 39.0% | 61.1% | 71.5% |
| GELAN-E | FPN | ICN | 55.6% | 39.8% | 60.9% | 71.9% |
和 分别表示 ELAN 和 CSP 的深度。 LHG 表示 YOLOv7 [63] 提出的引导头训练。
我们进一步在各种尺寸的模型上实现了 PGI 和深度监督的概念,并比较了结果,这些结果显示在表 5 中。正如开头所分析的那样,引入深度监督会导致浅层模型的准确性下降。至于通用模型,引入深度监督会导致性能不稳定,而深度监督的设计理念只能在极深的模型中带来增益。所提出的 PGI 可以有效处理信息瓶颈和信息破碎等问题,并能全面提高不同尺寸模型的准确性。PGI 的概念带来了两个有价值的贡献。第一个是使辅助监督方法适用于浅层模型,第二个是使深度模型训练过程获得更可靠的梯度。这些梯度使深度模型能够使用更准确的信息在数据和目标之间建立正确的关联。
表 5. 关于 PGI 的消融研究。
| 模型 | |||
|---|---|---|---|
| GELAN-S | 46.7% | 63.0% | 50.7% |
| + DS | 46.5% (-0.2) | 62.9% (-0.1) | 50.5% (-0.2) |
| + PGI | 46.8% (+0.1) | 63.4% (+0.4) | 50.7% (=) |
| GELAN-M | 51.1% | 67.9% | 55.7% |
| + DS | 51.2% (+0.1) | 68.2% (+0.3) | 55.7% (=) |
| + PGI | 51.4% (+0.3) | 68.1% (+0.2) | 56.1% (+0.4) |
| GELAN-C | 52.5% | 69.5% | 57.3% |
| + DS | 52.5% (=) | 69.9% (+0.4) | 57.1% (-0.2) |
| + PGI | 53.0% (+0.5) | 70.3% (+0.8) | 57.8% (+0.5) |
| GELAN-E | 55.0% | 71.9% | 60.0% |
| + DS | 55.3% (+0.3) | 72.3% (+0.4) | 60.2% (+0.2) |
| + PGI | 55.6% (+0.6) | 72.8% (+0.9) | 60.6% (+0.6) |
DS 表示深度监督。 -{S, M, C, E} 表示小型、中型、紧凑型和扩展型模型。
最后,我们在表中展示了从基准 YOLOv7 逐步增加组件到 YOLOv9-E 的结果。我们提出的 GELAN 和 PGI 为模型带来了全面的改进。
表 6. 关于 GELAN 和 PGI 的消融研究。
| 模型 | #Param. | FLOPs | ||||
|---|---|---|---|---|---|---|
| YOLOv7 [63] | 36.9 | 104.7 | 51.2% | 31.8% | 55.5% | 65.0% |
| + AF [63] | 43.6 | 130.5 | 53.0% | 35.8% | 58.7% | 68.9% |
| + GELAN | 41.2 | 126.4 | 53.2% | 36.2% | 58.5% | 69.9% |
| + DHLC [34] | 57.3 | 189.0 | 55.0% | 38.0% | 60.6% | 70.9% |
| + PGI | 57.3 | 189.0 | 55.6% | 40.2% | 61.0% | 71.4% |
5.5. 可视化
本节将探讨信息瓶颈问题并对其进行可视化。此外,我们还将可视化所提出的 PGI 如何使用可靠的梯度来找到数据和目标之间的正确关联。在图 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 确实可以提供更好的梯度来更新参数,并使主分支的正向传播阶段保留更多重要的特征。
6. 结论
在本文中,我们提出使用 PGI 来解决信息瓶颈问题以及深度监督机制不适用于轻量级神经网络的问题。我们设计了一个高效且轻量级的神经网络 GELAN。在目标检测方面,GELAN 在不同的计算块和深度设置下具有强大且稳定的性能。它确实可以广泛扩展为适用于各种推理设备的模型。对于上述两个问题,PGI 的引入使轻量级模型和深度模型都能在准确性上取得显著提升。通过结合 PGI 和 GELAN 设计的 YOLOv9 表现出了强大的竞争力。其出色的设计使深度模型与 YOLOv8 相比,参数减少了 49%,计算量减少了 43%,但在 MS COCO 数据集上仍有 0.6% 的 AP 提升。
7. 致谢
作者感谢国家高速网络与计算中心 (NCHC) 提供计算和存储资源。