目标检测 | yolov9 原理和介绍

相关系列:
目标检测 | yolov1 原理和介绍
目标检测 | yolov2/yolo9000 原理和介绍
目标检测 | yolov3 原理和介绍
目标检测 | yolov4 原理和介绍
目标检测 | yolov5 原理和介绍
目标检测 | yolov6 原理和介绍
目标检测 | yolov7 原理和介绍
目标检测 | yolov8 原理和介绍
目标检测 | yolov9 原理和介绍
目标检测 | yolov10 原理和介绍
论文:https://arxiv.org/pdf/2402.13616
代码:https://github.com/WongKinYiu/yolov9

1. 简介

 今天的深度学习方法侧重于如何设计最合适的目标函数,以便模型的预测结果可以最接近基本事实。同时,必须设计能够促进获取足够信息进行预测的适当架构。现有方法忽略了输入数据经过逐层特征提取和空间变换时的事实,会丢失大量信息。当数据通过深度网络传输时,本文将深入研究数据丢失的重要问题,即信息瓶颈和可逆函数。我们提出了可编程梯度信息 (PGI) 的概念来应对深度网络实现多个目标所需的各种变化。PGI可以为目标任务提供完整的输入信息来计算目标函数,从而获得可靠的梯度信息来更新网络权重。此外,设计了一种基于梯度路径规划的广义高效层聚合网络(GELAN)。GELAN 的架构证实 PGI 在轻量级模型上获得了更好的结果。我们在基于 MS COCO 数据集的对象检测上验证了所提出的 GELAN 和 PGI。结果表明,GELAN 仅使用传统的卷积算子来实现比基于深度卷积开发的最先进方法更好的参数利用率。PGI 可用于从轻量级到大型的各种模型。它可用于获取完整的信息,以便从头开始训练模型比使用大型数据集预训练的最先进模型获得更好的结果,比较结果如图 1 所示。
在这里插入图片描述

YOLOv9相较于之前的YOLO版本,引入了以下主要改进:
1.PGI(Programmable Gradient Information):提出了可编程梯度信息的概念,通过辅助的可逆分支生成可靠的梯度信息,解决了深层网络训练中的信息瓶颈问题,允许网络更有效地更新权重。
2.GELAN(Generalized Efficient Layer Aggregation Network):设计了一种新的轻量级网络架构,基于梯度路径规划,考虑了参数数量、计算复杂性、准确性和推理速度,使其适应不同的推理设备。
3.信息瓶颈问题的解决:YOLOv9通过PGI解决了信息瓶颈问题,即在数据通过深层网络时信息丢失的问题,这有助于提高模型训练的效率和准确性。
4.多尺度特征融合:GELAN架构支持多尺度特征融合,提高了模型对不同尺寸目标的检测能力。
5.参数和计算量的优化:YOLOv9在减少参数数量和计算量方面进行了优化,与之前的YOLO版本相比,在保持或提高准确性的同时减少了模型大小和计算需求。
6.改进的检测性能:在MS COCO数据集上的实验结果表明,YOLOv9在对象检测性能上超越了之前版本的YOLO,包括YOLOv8。
7.训练策略的改进:YOLOv9采用了新的训练策略,包括学习率调度、数据增强技术等,进一步提高了模型的训练效果。
8.适用性:YOLOv9的设计使其适用于从轻量级到大型的多种模型,提高了模型的通用性和实用性。
9.辅助监督机制的改进:PGI的设计允许轻量级模型也能从辅助监督机制中受益,这在以前的深度监督机制中是做不到的。
10.开源代码:YOLOv9的代码已经开源,提供了实现细节和训练配置,方便研究者和开发者使用和进一步研究。

 基于深度学习的模型在计算机视觉、语言处理和语音识别等各个领域都表现出比过去的人工智能系统更好的性能。近年来,深度学习领域的研究人员主要关注如何开发更强大的系统架构和学习方法,如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所示。
在这里插入图片描述

图 2. 不同网络架构的随机初始权重输出特征图的可视化结果:(a)输入图像,(b)PlainNet,(c)ResNet,(d)CSPNet,(e)提议的 GELAN。从图中我们可以看出,在不同的架构中,提供给目标函数来计算损失的信息会不同程度的损失,我们的架构可以保留最完整的信息,并提供最可靠的梯度信息来计算目标函数。

 目前,缓解这一现象的主要方法如下:(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 在所有比较中取得了最佳性能。
 我们将本文的贡献总结如下:

  1. 我们从可逆函数的角度从理论上分析了现有的深度神经网络架构,通过这个过程,我们成功地解释了过去难以解释的许多现象。我们还基于该分析设计了 PGI 和辅助可逆分支,并取得了出色的结果。
  2. 我们设计的PGI解决了深度监督只能用于极深神经网络架构的问题,因此允许新的轻量级架构真正应用于日常生活中。
  3. 我们设计的GELAN仅使用传统的卷积来实现比基于先进技术的深度卷积设计更高的参数使用,同时显示出光、快速、准确等优点。
  4. 结合所提出的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]作为预测头。最近还提出了一些实时目标检测器,如RT DETR[43],它将其资金放在DETR[4]上。然而,由于 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]是最常见的辅助监督方法,它通过在中间层插入额外的预测层来执行训练。特别是在基于变压器的方法中引入的多层解码器的应用是最常见的。另一种常见的辅助监督方法是利用相关的元信息来指导中间层产生的特征图,使它们具有目标任务所需的属性[18,20,24,29,76]。这种类型的示例包括使用分割损失或深度损失来提高对象检测器的准确性。最近,文献中有很多报道[53,67,82]使用不同的标签分配方法生成不同的辅助监督机制来加速模型的收敛速度,同时提高鲁棒性。然而,辅助监督机制通常只适用于大型模型,因此在应用于轻量级模型时,容易导致参数化现象不足,使性能变差。我们提出的 PGI 设计了一种重新编程多级语义信息的方法,这种设计允许轻量级模型也受益于辅助监督机制。

3. Problem Statement 问题陈述

 通常,由于梯度消失或梯度饱和等因素,人们将深度神经网络收敛问题的难度归因于传统深度神经网络确实存在这些现象。然而,现代深度神经网络通过设计各种归一化和激活函数从根本上解决了上述问题。然而,深度神经网络仍然存在收敛速度慢或收敛差的问题。
 在本文中,我们进一步探讨了上述问题的性质。通过对信息瓶颈的深入分析,我们推断该问题的根本原因是,最初来自非常深的网络的初始梯度在传输目标后立即丢失了大量信息。为了确认这种推理,我们前馈了具有不同架构的深度网络,具有初始权重,然后在图 2 中可视化和说明它们。显然,PlainNet 丢失了深层目标检测所需的大量重要信息。至于 ResNet、CSPNet 和 GELAN 可以保留的重要信息的比例,确实与训练后可以获得的准确度呈正相关。我们进一步设计了可逆基于网络的方法来解决上述问题的原因。在本节中,我们将详细阐述我们对信息瓶颈原理和可逆函数的分析。

3.1. Information Bottleneck Principle 信息瓶颈原理

 根据信息瓶颈原理,我们知道数据 X X X在经过变换时可能会导致信息丢失,如式1所示:
I ( X , X ) ≥ I ( X , f θ ( X ) ) ≥ I ( X , g φ ( f θ ( X ) ) ) , (1) I(X,X)\geq I(X,f_\theta(X)) \geq I(X, g_\varphi (f_\theta(X))),\tag{1} I(X,X)I(X,fθ(X))I(X,gφ(fθ(X))),(1)
其中 I I I 表示互信息, f f f g g g 是变换函数, θ θ θ φ φ φ 分别是 f f f g g g 的参数。
 在深度神经网络中, f θ ( ⋅ ) f_θ(·) fθ() g φ ( ⋅ ) g_φ(·) gφ()分别表示深度神经网络中两个连续层的操作。从方程式1,我们可以预测随着网络层数量的增加,原始数据将更有可能丢失。然而,深度神经网络的参数是基于网络的输出和给定的目标,然后通过计算损失函数生成新的梯度来更新网络。可以想象,更深层次的神经网络的输出不太能够保留有关预测目标的完整信息。这将使网络训练过程中使用不完整的信息成为可能,导致梯度不可靠,收敛差。
 解决上述问题的一种方法是直接增加模型的大小。当我们使用大量参数来构建模型时,它能够对数据进行更完整的转换。上述方法即使在数据前馈过程中会丢失信息,仍然有机会保留足够的信息来执行到目标的映射。上述现象解释了为什么在大多数现代模型中宽度比深度更重要。然而,上述结论不能从根本上解决非常深的神经网络中梯度不可靠的问题。下面,我们将介绍如何使用可逆函数来解决问题并进行相对分析。

3.2. Reversible Functions 可逆函数

 当函数 r r r 具有逆变换函数 v v v 时,我们将此函数称为可逆函数,如公式 2 所示。
X = v ζ ( r ψ ( X ) ) , (2) X = vζ (r_ψ (X)),\tag{2} X=vζ(rψ(X)),(2)
 其中 ψ ψ ψ ζ ζ ζ 分别是 r r r v v v 的参数。Data X X X通过可逆函数转换而不丢失信息,如式3所示。
I ( X , X ) = I ( X , r ψ ( X ) ) = I ( X , v ζ ( r ψ ( X ) ) ) . (3) I(X, X) = I(X, r_ψ (X)) = I(X, v_ζ (r_ψ (X))).\tag{3} I(X,X)=I(X,rψ(X))=I(X,vζ(rψ(X))).(3)
 当网络的变换函数由可逆函数组成时,可以得到更可靠的梯度来更新模型。当今几乎所有流行的深度学习方法都是符合可逆属性的架构,例如方程式 4.
X l + 1 = X l + f θ l + 1 ( X l ) , (4) X^{l+1} = X^l + f^{ l+1}_θ (X^l),\tag{4} Xl+1=Xl+fθl+1(Xl),(4)
 其中 l l l 表示 PreAct ResNet 的第 l l l 层, f f f 是第 l l l 层的变换函数。PreAct ResNet [22] 以显式的方式将原始数据 X 重复传递到后续层。尽管这样的设计可以使具有超过几千层的深度神经网络收敛得非常好,但它破坏了我们需要深度神经网络的一个重要原因。也就是说,对于困难的问题,我们很难找到简单的映射函数来将数据映射到目标。这也解释了为什么当层数较小时,PreAct ResNet 的性能比 ResNet [21] 差。
 此外,我们尝试使用掩码建模,允许 Transformer 模型取得重大突破。我们使用近似方法,例如等式5,试图找到 r r r 的逆变换 v v v,以便转换后的特征可以使用稀疏特征保留足够的信息。等式的公式5 如下:
X = v ζ ( r ψ ( X ) ⋅ M ) , (5) X = v_ζ (r_ψ (X) · M ), \tag{5} X=vζ(rψ(X)M),(5)
 其中 M M M 是一个动态二进制掩码。通常用于执行上述任务的其他方法是扩散模型和变分自动编码器,它们都具有寻找逆函数的函数。然而,当我们将上述方法应用于轻量级模型时,会出现缺陷,因为轻量级模型将被参数化到大量原始数据中。由于上述原因,将数据 X X X 映射到目标 Y Y Y 的重要信息 I ( Y , X ) I(Y, X) I(Y,X) 也将面临相同的问题。对于这个问题,我们将使用信息瓶颈的概念[59]来探索它。信息瓶颈公式如下:
I ( X , X ) ≥ I ( Y , X ) ≥ I ( Y , f θ ( X ) ) ≥ . . . ≥ I ( Y , Y ^ ) . (6) I(X, X) ≥ I(Y, X) ≥ I(Y, f_θ (X)) ≥ ... ≥ I(Y, \hat{Y} ). \tag{6} I(X,X)I(Y,X)I(Y,fθ(X))...I(Y,Y^).(6)
 一般来说, 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 X X 的信息,很难实现。基于上述分析,我们希望提出一种新的深度神经网络训练方法,该方法不仅可以生成可靠的梯度来更新模型,而且适用于浅层和轻量级的神经网络。

4. Methodology 方法

4.1. Programmable Gradient Information 可编程梯度信息

 为了解决上述问题,我们提出了一种新的辅助监督框架,称为可编程梯度信息 (PGI),如图 3 (d) 所示。PGI主要包括三个组成部分,即(1)主分支,(2)辅助可逆分支和(3)多级辅助信息。从图 3 (d) 中,我们看到 PGI 的推理过程仅使用主分支,因此不需要任何额外的推理成本。至于其他两个组件,它们用于解决或减缓深度学习方法中几个重要问题。其中,设计了辅助可逆分支来处理神经网络深化带来的问题。网络深化会导致信息瓶颈,这将使损失函数无法生成可靠的梯度。对于多级辅助信息,它旨在处理深度监督引起的误差累积问题,特别是对于多个预测分支的架构和轻量级模型。接下来,我们将逐步介绍这两个组件。
在这里插入图片描述

图 3. PGI 和相关的网络架构和方法。( a ) 路径聚合网络 (PAN)) [37], ( b ) 可逆列 (RevCol) [3],( c ) 传统的深度监督,以及 ( d ) 我们提出的可编程梯度信息 (PGI)。PGI主要由三个部分组成:(1)主分支:用于推理的体系结构,(2)辅助可逆分支:生成可靠的梯度,为后向传输提供主分支;(3)多级辅助信息:控制主分支学习可规划的语义信息多层次。

4.1.1 Auxiliary Reversible Branch 辅助可逆分支

 在 PGI 中,我们提出了辅助可逆分支来生成可靠的梯度并更新网络参数。通过提供从数据映射到目标的信息,损失函数可以提供指导并避免从与目标不太相关的不完整前馈特征中找到错误相关性的可能性。我们建议通过引入可逆架构来维护完整信息,但向可逆架构添加主分支会消耗大量的推理成本。我们分析了图 3 (b) 的架构,发现当添加了从深层到浅层的额外连接时,推理时间将增加 20%。当我们将输入数据重复添加到网络的高分辨率计算层(黄色框)时,推理时间甚至超过两倍的时间。
 由于我们的目标是使用可逆架构来获得可靠的梯度,因此“可逆”不是推理阶段唯一必要的条件。鉴于此,我们将可逆分支视为深度监督分支的扩展,然后设计辅助可逆分支,如图 3 (d) 所示。至于由于信息瓶颈而丢失重要信息的主要分支深度特征,它们将能够从辅助可逆分支接收可靠的梯度信息。这些梯度信息将驱动参数学习来辅助提取正确和重要的信息,上述动作可以使主分支获得对目标任务更有效的特征。此外,可逆架构在浅层网络上的表现比一般网络差,因为复杂任务需要在更深的网络中转换。我们提出的方法不强制主分支保留完整的原始信息,而是通过辅助监督机制生成有用的梯度来更新它。这种设计的优点是所提出的方法也可以应用于较浅的网络。
 最后,由于在推理阶段可以消除辅助可逆分支,因此可以保留原始网络的推理能力。我们还可以选择 PGI 中的任何可逆架构来发挥辅助可逆分支的作用。

4.1.2 Multi-level Auxiliary Information 多级辅助信息

 在本节中,我们将讨论多级辅助信息是如何工作的。包括多个预测分支的深度监督架构如图 3 © 所示。对于目标检测,可以使用不同的特征金字塔来执行不同的任务,例如它们一起可以检测不同大小的对象。因此,在连接到深度监督分支后,将引导浅层特征学习小目标检测所需的特征,此时系统将其他大小对象的位置视为背景。然而,上述行为将导致深度特征金字塔丢失预测目标对象所需的大量信息。关于这个问题,我们认为每个特征金字塔都需要接收所有目标对象的信息,以便后续的主分支可以保留完整的信息来学习各种目标的预测。
 多级辅助信息的概念是在辅助监督的特征金字塔层次层和主分支之间插入一个集成网络,然后使用它来组合来自不同预测头的返回梯度,如图 3 (d) 所示。然后多级辅助信息聚合包含所有目标对象的梯度信息,并将其传递给主分支,然后更新参数。此时,主分支特征金字塔层次结构的特征不会由某些特定对象的信息主导。因此,我们的方法可以缓解深度监督中的破碎信息问题。此外,任何集成网络都可以用于多级辅助信息。因此,我们可以规划所需的语义级别来指导不同大小的网络架构的学习。

4.2. Generalized ELAN 广义ELAN

 在本节中,我们描述了提议的新网络架构——GELAN。通过结合两种神经网络体系结构CSPNet[64]和ELAN[65],这些体系结构是用梯度路径规划设计的,我们设计了广义高效的层聚合网络(GELAN),该网络考虑了权重、推理速度和准确性。它的整体架构如图 4 所示。我们将 ELAN [65] 的能力(最初仅使用卷积层的堆叠)推广到可以使用任何计算块的新架构。
在这里插入图片描述

图4。GELAN的体系结构:(a) CSPNet[64], (b) ELAN[65], ©提出了GELAN。我们模仿 CSPNet 并将 ELAN 扩展到可以支持任何计算块的 GELAN。

5. Experiments 实验

5.1. Experimental Setup 实验装置

 我们使用 MS COCO 数据集验证所提出的方法。所有实验设置都遵循 YOLOv7 AF [63],而数据集是 MS COCO 2017 拆分。我们提到的所有模型都是使用从头开始训练策略进行训练的,训练时间总数为 500 个 epoch。在设置学习率时,我们在前三个 epoch 中使用线性预热,随后的 epoch 根据模型尺度设置相应的衰减方式。对于最后 15 个 epoch,我们关闭马赛克数据增强。有关更多设置,请参阅附录。

5.2. Implimentation Details 放大细节

 我们分别基于YOLOv7[63]和动态YOLOv7[36]构建了YOLOv9的一般和扩展版本。在网络架构的设计中,我们使用CSPNet块[64]将ELAN[65]替换为GELAN,计划RepConv[63]作为计算块。我们还简化了下采样模块和优化的无锚预测头。至于 PGI 的辅助损失部分,我们完全遵循 YOLOv7 的辅助头部设置。有关详细信息,请参阅附录。

5.3. Comparison with state-of-the-arts 与最先进技术的比较

在这里插入图片描述

表1。最先进的实时目标检测器的比较。

 表 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%)。与 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的准确性。
在这里插入图片描述

图 5. 最先进的实时目标检测器的比较。参与比较的方法都使用 ImageNet 作为预训练的权重,包括 RT DETR [43]、RTMDet [44] 和 PP-YOLOE [74] 等。使用从头开始训练方法的 YOLOv9 明显优于其他方法的性能。

 至于计算量,从最小到最大的最佳模型是 YOLO MS [7]、PP YOLOE [74] 和 RT DETR [43]。从图 5 可以看出,YOLOv9 在计算复杂度方面远远优于从头开始训练方法。此外,与基于深度卷积和基于 ImageNet 的预训练模型相比,YOLOv9 也非常具有竞争力。

5.4. Ablation Studies 消融研究

5.4.1 Generalized ELAN 广义ELAN

 对于 GELAN,我们首先对计算块进行消融研究。我们使用Res块[21]、Dark块[49]和CSP块[64]分别进行实验。表 2 显示,在用不同的计算块替换 ELAN 中的卷积层后,系统可以保持良好的性能。用户确实可以自由地替换计算块并在它们各自的推理设备上使用它们。在不同的计算块替换中,CSP块的性能特别好。它们不仅减少了参数和计算量,而且将 AP 提高了 0.7%。因此,我们选择CSPELAN作为YOLOv9中GELAN的组成部分单元。
在这里插入图片描述

表 2. 各种计算块的消融研究。

 接下来,我们对不同大小的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 深度的消融研究。

5.4.2 Programmable Gradient Information 可编程梯度信息

 在 PGI 方面,我们分别对主干颈部和颈部的辅助可逆分支和多级辅助信息进行了消融研究。我们设计了辅助可逆分支ICN来使用DHLC[34]链接来获得多级可逆信息。对于多级辅助信息,我们使用 FPN 和 PAN 进行消融研究,PFH 的作用相当于传统的深度监督。所有实验的结果如表 4 所示。从表 4 可以看出,PFH 仅在深度模型中有效,而我们提出的 PGI 可以提高不同组合下的准确性。尤其是在使用 ICN 时,我们得到了稳定和更好的结果。我们还尝试将 YOLOv7 [63] 中提出的引导分配应用于 PGI 的辅助监督,并取得了更好的性能。
在这里插入图片描述

表4。骨干颈部PGI的消融研究。

 我们进一步实现了 PGI 和深度监督在不同尺寸的模型上的概念,并将结果进行了比较,结果如表 5 所示。正如一开始分析的那样,深度监督的引入将导致浅层模型的准确性损失。至于通用模型,引入深度监督会导致性能不稳定,深度监督的设计概念只能带来极深模型的收益。所提出的 PGI 可以有效地处理信息瓶颈和信息破坏等问题,并可以全面提高不同大小的模型的准确性。PGI的概念带来了两个有价值的贡献。第一个是使辅助监督方法适用于浅层模型,第二个是使深度模型训练过程获得更可靠的梯度。这些梯度使深度模型能够使用更准确的信息来建立数据和目标之间的正确相关性。
在这里插入图片描述

表5。PGI的消融研究。

 最后,我们在表中显示了从基线 YOLOv7 到 YOLOv9-E 逐渐增加组件的结果。我们提出的 GELAN 和 PGI 给模型带来了全方位的改进。
在这里插入图片描述

表6。GELAN和PGI的消融研究。

5.5. Visualization 可视化

 本节将探索信息瓶颈问题并将它们可视化。此外,我们还将可视化所提出的 PGI 如何使用可靠的梯度来找到数据和目标之间的正确相关性。在图 6 中,我们展示了在不同架构下使用随机初始权重作为前馈获得的特征图的可视化结果。我们可以看到,随着层数的增加,所有架构的原始信息逐渐减小。例如,在 PlainNet 的第 50 层,很难看到对象的位置,所有可区分的特征将在第 100 层丢失。至于 ResNet,虽然对象的位置仍然可以在第 50 层看到,但边界信息会丢失。当深度达到第 100 层时,整个图像变得模糊。CSPNet 和提议的 GELAN 都表现得非常好,它们都可以保持支持明确识别对象的特征,直到第 200 层。在比较中,GELAN 具有更稳定的结果和更清晰的边界信息。
在这里插入图片描述

图6所示。不同深度的PlainNet、ResNet、CSPNet和GELAN的随机初始权值输出的特征映射(可视化结果)。经过 100 层后,ResNet 开始产生足以混淆对象信息的前馈输出。我们提出的 GELAN 仍然可以保留多达 150 层的完整信息,并且仍然足够区分到第 200 层。

 图 7 用于显示 PGI 是否可以在训练过程中提供更可靠的梯度,以便用于更新的参数可以有效地捕获输入数据和目标之间的关系。图 7 显示了 GELAN 和 YOLOv9 (GELAN + PGI) 在 PAN 偏差预热中的特征图的可视化结果。从图 7(b) 和 ( c ) 的比较中,我们可以清楚地看到 PGI 准确而简洁地捕获了包含对象的区域。至于不使用 PGI 的 GELAN,我们发现它在检测对象边界时存在分歧,并且还在一些背景区域产生了意想不到的响应。该实验证实 PGI 确实可以为更新参数提供更好的梯度,并使主分支的前馈阶段能够保留更重要的特征。
在这里插入图片描述

图 7. GELAN 和 YOLOv9 (GELAN + PGI) 在偏差热身的一个时期之后的 PAN 特征图(可视化结果)。GELAN 最初有一些分歧,但在添加 PGI 的可逆分支后,它更有能力专注于目标对象。

6. Conclusions 结论

 在本文中,我们建议使用 PGI 来解决信息瓶颈问题,深度监督机制不适合轻量级神经网络的问题。我们设计了 GELAN,这是一种高效且轻量级的神经网络。在目标检测方面,GELAN 在不同的计算块和深度设置下具有强大且稳定的性能。它确实可以广泛扩展为适合各种推理设备的模型。对于上述两个问题,PGI 的引入允许轻量级模型和深度模型实现高精度的显着改进。结合 PGI 和 GELAN 设计的 YOLOv9 显示出很强的竞争力。它出色的设计允许深度模型将参数数量减少 49%,与 YOLOv8 相比计算量减少了 43%,但在 MS COCO 数据集上仍提高了 0.6% AP。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/405300.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

笨鸟先飞(疯狂的小鸟)小游戏自制分享

《Flappy Bird》是一款由越南独立游戏开发者阮哈东(Dong Nguyen)制作并发布的移动端小游戏。该游戏最初于2013年上线,在2014年初迅速走红,成为全球范围内的热门现象。 游戏的玩法非常简单,玩家只需通过点击屏幕来控制…

【算法专题】双指针算法

个人主页:CSDN_小八哥向前冲 所属专栏:基础算法 目录 移动零 复写零 快乐数 盛最多水的容器 有效三角形的个数 和为s的两个数 三数之和 四数之和 移动零 题目:【LeetCode】移动零 思路: 这里其实就是一个数组分块的问题&…

机器学习:逻辑回归--下采样

目录 前言 一、为什么使用下采样 1.例如: 2.导致: 3.办法: 4.结果: 二、代码实现 1.完整代码 2.导入库 3.可视化混淆矩阵 4.导入数据 5数据预处理 6.下采样 7.取出训练集和测试集 8.建立模型 9.进行测试 总结 前…

代码签名证书:软件安全的守护者

在数字化时代,软件的安全性和用户信任度成为了不可忽视的关键因素。为了确保软件的真实性和完整性,代码签名证书(Code Signing Certificate)应运而生,成为开发者不可或缺的工具。 什么是代码签名证书? 代…

Vue 3 的 emit 简单使用

在 Vue 3 中使用 emit&#xff0c;子组件可以将事件通知父组件&#xff0c;父组件可以在响应这些事件时执行特定的逻辑。 emit 是一种非常灵活的通信方式&#xff0c;允许组件之间以解耦的方式进行交互。 1. 基本用法 1、使用 defineEmits 子组件 <template><div…

Spring之@Bean注解

1. 使用方式 1.1 Configuration Bean 1.1.1 创建实体类 User Data NoArgsConstructor public class User {private String name;public User(String name) {this.name name;} } 1.1.2 创建配置类 UserConfig Configuration public class UserConfig {Beanpublic User us…

数据结构中的双向链表

1.链表的分类 链表的结构非常多样&#xff0c;以下情况组合起来就是8种&#xff08;2x2x2&#xff09;链表结构&#xff1a; 在带头链表中&#xff0c;除了头结点&#xff0c;其他结点均存储有效的数据。 头结点是占位子的&#xff0c;也叫做“哨兵位”。head结点就是头结点。…

PPT如何添加水印?推荐两种方法!

在PPT演示文稿中添加水印&#xff0c;可以有效地保护版权或在背景上增加品牌标识。本文将介绍两种在PPT中添加水印的方法&#xff0c;帮助你轻松实现这一功能&#xff0c;一起来看看吧&#xff01; 方法一&#xff1a;在单张幻灯片上添加水印 1、选择目标幻灯片 打开PPT文件&…

『深度长文』4种有效提高LLM输出质量的方法!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,专注于分享AI全维度知识,包括但不限于AI科普,AI工具测评,AI效率提升,AI行业洞察。关注我,AI之路不迷路,2024我们一起变强。 LLM,全…

docker 安装minio并配置https域名访问

一、准备目录 mkdir -p /home/minio/data/home/minio/config/home/minio/config/certs/二、下载域名证书&#xff0c;注意要Apache的 注意.key的换成 private.key&#xff0c;public.crt换成 public.crt&#xff0c;然后将这两个文件放到/home/minio/config/certs/目录下 三、…

贪心算法在背包问题上的运用(Python)

背包问题 有n个物品,它们有各自的体积和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和? 这就是典型的背包问题(又称为0-1背包问题),也是具体的、没有经过任何延伸的背包问题模型。 背包问题的传统求解方法较为复杂,现定义有一个可以载重为8kg的背…

JNA调用DLL报堆栈溢出错误(0xC00000FD)

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

C++观察者模式Observer

组件协作 –(都是晚绑定的&#xff09; ----观察者模式 为某些对象建立一种通知依赖的关系&#xff0c; 只要这个对象状态发生改变&#xff0c;观察者对象都能得到通知。 但是依赖关系要松耦合&#xff0c;不要太依赖。 eg&#xff1a;做一个文件分割器&#xff0c;需要一个…

React学习笔记(一)——react基础

1. React 介绍 1.1 React是什么 React由Meta公司研发&#xff0c;是一个用于 构建Web和原生交互界面的库 1.2 React的优势 相较于传统基于DOM开发的优势&#xff1a; 组件化的开发方式不错的性能 相较于其它前端框架的优势&#xff1a; 丰富的生态跨平台支持 1.3 React的市场…

基于MATLAB视觉的静态手势识别系统

一、课题介绍及思路 为了丰富手势识别方法的多样性&#xff0c;提高手势识别的正确率&#xff0c;提出了一种基于手势轮廓像素变化的手势识别方法。在Matlab环境下&#xff0c;设计并开发了一个基于视觉的静态手势识别系统。系统主要由两部分组成&#xff1a;手势分割与手势识…

数据科学已死?

既然有了人工智能&#xff0c;训练自己的机器学习模型是否还值得&#xff1f; 既然有了人工智能&#xff0c;学习 Python 是否还值得&#xff1f; 既然有了人工智能&#xff0c;KNIME 还在营业吗&#xff1f; 既然有了人工智能&#xff0c;数据科学是否仍然需要&#xff1f;…

指挥调度平台——数字赋能,让出行更有温度

智慧交通指挥调度平台是基于信息技术和智能化系统的创新解决方案&#xff0c;旨在提升城市交通管理效率、改善交通流畅度、减少拥堵问题&#xff0c;以及增强城市交通运行的智能化水平。该平台整合了大数据分析、实时监测、智能优化算法等技术&#xff0c;为交通管理部门提供全…

牛!6个大模型的核心技术!

大家好&#xff0c;我是花哥。本文我们谈下火爆的大模型背后&#xff0c;有哪些的核心技术&#xff01; 一、Transformer Transformer 是大模型的底层模型。在深度学习的早期阶段&#xff0c;循环神经网络&#xff08;RNN&#xff09;是处理序列数据的常用方法。尽管RNN及其变…

1.XV6环境配置

安装虚拟机 这个就不多说了&#xff0c;搞一台Ubuntu虚拟机即可&#xff0c;最好是通过vscode 用ssh远程连接进行实验会比较方便&#xff0c;具体怎么做可参考我这篇博客&#xff1a; VsCode配置SSH连接远程服务器&#xff08;手把手&#xff0c;学不会打我&#xff09;_vsco…

【GitLab】使用 Docker 安装 GitLab 1:配置 SSH 端口

使用 Docker 安装 GitLab 要求修改ssh端口 GitLab 使用 SSH 通过 SSH 与 Git 交互。默认情况下,GitLab 使用端口22。 要在使用 GitLab Docker 映像时使用其他端口,您可以执行以下操作之一: 更改服务器的 SSH 端口(推荐)。 更改 GitLab Shell SSH 端口。 更改服务器的 SSH …