YOLOv9
论文:https://export.arxiv.org/pdf/2402.13616v2.pdf
代码:https://github.com/WongKinYiu/yolov9
Abstract
今天的深度学习方法侧重于如何设计最合适的目标函数,以便模型的预测结果可以最接近基本事实。同时,必须设计能够促进获取足够信息进行预测的适当架构。现有方法忽略了输入数据经过逐层特征提取和空间变换时的事实,会丢失大量信息。当数据通过深度网络传输时,本文将深入研究数据丢失的重要问题,即信息瓶颈和可逆函数。我们提出了可编程梯度信息 (PGI) 的概念来应对深度网络实现多个目标所需的各种变化。PGI可以为目标任务提供完整的输入信息来计算目标函数,从而获得可靠的梯度信息来更新网络权重。此外,设计了一种基于梯度路径规划的广义高效层聚合网络(GELAN)。GELAN 的架构证实 PGI 在轻量级模型上获得了更好的结果。我们在基于 MS COCO 数据集的对象检测上验证了所提出的 GELAN 和 PGI。结果表明,GELAN 仅使用传统的卷积算子来实现比基于深度卷积开发的最先进方法更好的参数利用率。PGI 可用于从轻量级到大型的各种模型。它可用于获取完整的信息,以便从头开始训练模型比使用大型数据集预训练的最先进模型获得更好的结果,比较结果如图 1 所示。
Introduction
在深度网络中,前馈过程中输入数据丢失信息的现象通常被称为信息瓶颈,其原理图如图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数据集上的目标检测性能在各个方面大大超过了现有的实时目标检测器
Problem Statement
通常,人们将深度神经网络收敛困难的问题归因于梯度消失或梯度饱和等因素,传统深度神经网络确实存在这些现象。现代深度神经网络通过设计各种归一化和激活函数从根本上解决了上述问题。然而深度神经网络仍然存在收敛速度慢或收敛差的问题。通过对信息瓶颈的深入分析,本文推断该问题的根本原因是,最初来自非常深的网络的初始梯度在传输目标后立即丢失了大量信息为了确认这种推理,我们前馈了具有不同架构的深度网络,具有初始权重,然后在图 2 中可视化和说明它们,显然,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 是变换函数,θ 和 φ 分别是 f 和 g 的参数。
在深度神经网络中,fθ(·)和gφ(·)分别表示深度神经网络中两个连续层的操作。从方程式。 1,我们可以预测随着网络层数量的增加,原始数据将更有可能丢失。然而,深度神经网络的参数是基于网络的输出和给定的目标,然后通过计算损失函数生成新的梯度来更新网络。可以想象,更深层次的神经网络的输出不太能够保留有关预测目标的完整信息。这将使网络训练过程中使用不完整的信息成为可能,导致梯度不可靠,收敛差。解决上述问题的一种方法是直接增加模型的大小。当我们使用大量参数来构建模型时,它能够对数据进行更完整的转换。上述方法即使在数据前馈过程中会丢失信息,仍然有机会保留足够的信息来执行到目标的映射。上述现象解释了为什么在大多数现代模型中宽度比深度更重要。然而,上述结论不能从根本上解决非常深的神经网络中梯度不可靠的问题。下面将介绍如何使用可逆函数来解决问题并进行相对分析。
Reversible Functions
当函数 r 具有逆变换函数 v 时,我们将此函数称为可逆函数,Data X通过可逆函数转换而不丢失信息,如下式所示。
I
(
X
,
X
)
=
I
(
X
,
r
φ
(
X
)
)
=
I
(
X
,
v
ξ
(
r
φ
(
X
)
)
)
I(X,X) = I(X,r_\varphi(X)) = I(X,v_\xi(r_\varphi(X)))
I(X,X)=I(X,rφ(X))=I(X,vξ(rφ(X)))
当网络的变换函数由可逆函数组成时,可以得到更可靠的梯度来更新模型。PreAct ResNet 以显式的方式将原始数据 X 重复传递到后续层,尽管这样的设计可以使具有超过几千层的深度神经网络收敛得非常好,但它破坏了我们需要深度神经网络的一个重要原因。对于困难的问题,我们很难找到简单的映射函数来将数据映射到目标。这也解释了为什么当层数较小时,PreAct ResNet 的性能比 ResNet 差。Transformer 模型使用掩码的方式取得重大突破,我们使用近似方法试图找到 r 的逆变换 v,以便转换后的特征可以使用稀疏特征保留足够的信息。通常用于提升扩散模型和变分自动编码器的表现,它们都具有寻找逆函数的函数特性。然而,当我们将上述方法应用于轻量级模型时,会出现缺陷,因为轻量级模型将被参数化到大量原始数据中。由于上述原因,将数据 X 映射到目标 Y 的重要信息 I(Y, X) 也将面临相同的问题。
Methodology
Programmable Gradient Information
为了解决上述问题,我们提出了一种新的辅助监督框架,称为可编程梯度信息 (PGI),如图 3 (d) 所示。PGI主要包括三个组成部分,即(1)主分支,(2)辅助可逆分支和(3)多级辅助信息。从图 3 (d) 中,我们看到 PGI 的推理过程仅使用主分支,因此不需要任何额外的推理成本。至于其他两个组件,它们用于解决或减缓深度学习方法中几个重要问题。其中,设计了辅助可逆分支来处理神经网络深化带来的问题。网络深化会导致信息瓶颈,这将使损失函数无法生成可靠的梯度。对于多级辅助信息,它旨在处理深度监督引起的误差累积问题,特别是对于多个预测分支的架构和轻量级模型。接下来,我们将逐步介绍这两个组件。
Auxiliary Reversible Branch
PGI 中,我们提出了辅助可逆分支来生成可靠的梯度并更新网络参数。通过提供从数据映射到目标的信息,损失函数可以提供指导并避免从与目标不太相关的不完整前馈特征中找到错误相关性的可能性。通过引入可逆架构来维护完整信息,但向可逆架构添加主分支将消耗大量的推理成本。我们分析了图 3 (b) 的架构,发现当添加了从深层到浅层的额外连接时,推理时间将增加 20%。当我们将输入数据重复添加到网络的高分辨率计算层(黄色框)时,推理时间甚至超过两倍的时间。
由于本文的目标是使用可逆架构来获得可靠的梯度,因此“可逆”不是推理阶段唯一必要的条件。鉴于此,本文将可逆分支视为深度监督分支的扩展,然后设计辅助可逆分支,如图 3 (d) 所示。至于由于信息瓶颈而丢失重要信息的主要分支深度特征,它们将能够从辅助可逆分支接收可靠的梯度信息。这些梯度信息将驱动参数学习来辅助提取正确和重要的信息,上述动作可以使主分支获得对目标任务更有效的特征。此外,可逆架构在浅层网络上的表现比一般网络差,因为复杂任务需要在更深的网络中转换。我们提出的方法不强制主分支保留完整的原始信息,而是通过辅助监督机制生成有用的梯度来更新它。这种设计的优点是所提出的方法也可以应用于较浅的网络。最后,由于在推理阶段可以消除辅助可逆分支,因此可以保留原始网络的推理能力。我们还可以选择 PGI 中的任何可逆架构来发挥辅助可逆分支的作用。
Multi-level Auxiliary Information
多个预测分支的深度监督架构如图 3 © 所示。对于目标检测,可以使用不同的特征金字塔来执行不同的任务,例如它们一起可以检测不同大小的对象。因此,在连接到深度监督分支后,将引导浅层特征学习小目标检测所需的特征,此时系统将其他大小对象的位置视为背景。然而,上述 deed 将导致深度特征金字塔丢失预测目标对象所需的大量信息。关于这个问题,我们认为每个特征金字塔都需要接收所有目标对象的信息,以便后续的主分支可以保留完整的信息来学习各种目标的预测。多级辅助信息的概念是在辅助监督的特征金字塔层次层和主分支之间插入一个集成网络,然后使用它来组合来自不同预测头的返回梯度,如图 3 (d) 所示。然后多级辅助信息聚合包含所有目标对象的梯度信息,并将其传递给主分支,然后更新参数。此时,主分支特征金字塔层次结构的特征不会由某些特定对象的信息主导。因此,我们的方法可以缓解深度监督中的破碎信息问题。此外,任何集成网络都可以用于多级辅助信息。因此,我们可以规划所需的语义级别来指导不同大小的网络架构的学习。
Generalized ELAN
本文通过结合两种神经网络体系结构CSPNet[64]和ELAN[65],这些体系结构是用梯度路径规划设计的,我们设计了广义高效的层聚合网络(GELAN),该网络考虑了权重、推理速度和准确性。它的整体架构如图 4 所示。我们将 ELAN的能力(最初仅使用卷积层的堆叠)推广到可以使用任何计算块的新架构。
Experiments
使用任何计算块的新架构。
[外链图片转存中…(img-DijHcqqr-1711002997735)]
Experiments
实验细节及结果请阅读原论文