YOLOv9算法原理——使用可编程梯度信息学习想要学习的内容

前言

2023年1月发布YOLOv8正式版后,经过一年多的等待,YOLOv9终于面世了!YOLO是一种利用图像全局信息进行目标检测的系统。自从2015年Joseph Redmon、Ali Farhadi等人提出了第一代模型以来,该领域的研究者们已经对YOLO进行了多次更新迭代,使得模型的性能越来越强大。YOLOv9由中国台湾的中央研究院、台北科技大学等机构联合开发,相关论文《Learning What You Want to Learn Using Programmable Gradient Information》已经发布,也已经在git上开源了算法源码与部分模型。

论文地址:https://arxiv.org/pdf/2402.13616.pdf
GitHub 地址:https://github.com/WongKinYiu/yolov9

摘要

当今的深度学习方法关注于如何设计最合适的目标函数,以使模型的预测结果最接近真实情况。同时,还必须设计一种合适的架构,以便为预测提供足够的信息。现有方法忽视了一个事实,即当输入数据经过逐层特征提取和空间变换时,会丢失大量信息。本文将深入探讨数据在通过深度网络传输时的重要问题,即信息瓶颈和可逆函数。我们提出了可编程梯度信息(PGI)的概念,以应对深度网络所需的各种变化,以实现多个目标。

PGI可以为目标任务提供完整的输入信息,以计算目标函数,从而可以获得可靠的梯度信息来更新网络权重。此外,我们设计了一种新的轻量级网络架构——广义高效层聚合网络(GELAN),该架构基于梯度路径规划。GELAN的架构证实了PGI在轻量级模型上取得了优越的结果。我们在MS COCO数据集上验证了提出的GELAN和PGI的目标检测方法。结果表明,GELAN仅使用传统的卷积算子,就实现了比基于深度卷积的最先进方法更好的参数利用率。PGI可以用于从轻量级到大型的各种模型。它可以用于获取完整的信息,使得从头开始训练的模型可以取得比使用大型数据集预训练的最先进模型更好的结果,比较结果如图1所示。

引言

在这里插入图片描述
图1. MS COCO数据集上实时目标检测器的比较。基于GELAN和PGI的目标检测方法在目标检测性能方面超过了所有以从头开始训练为基础的先前方法。在准确性方面,新方法优于使用大型数据集预训练的RT DETR [43],并且在参数利用率方面也优于基于深度卷积的YOLO MS [7]。

基于深度学习的模型在计算机视觉、语言处理和语音识别等各个领域展示了比过去的人工智能系统更好的性能。近年来,深度学习领域的研究人员主要关注于如何开发更强大的系统架构和学习方法,例如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]。上述研究都试图准确地找到输入和目标任务之间的映射关系。然而,大多数过去的方法忽视了输入数据在前向传播过程中可能丢失的信息量。这种信息丢失可能导致梯度流偏差,进而用于更新模型。上述问题可能导致深度网络在目标和输入之间建立错误的关联,导致训练模型产生错误的预测结果。
在这里插入图片描述
图2. 不同网络架构的随机初始权重输出特征图的可视化结果:(a)输入图像,(b)PlainNet,(c)ResNet,(d)CSPNet和(e)提出的GELAN。从图中可以看出,在不同的架构中,提供给目标函数计算损失的信息会有不同程度的丢失,而我们的架构可以保留最完整的信息,并为计算目标函数提供最可靠的梯度信息。

在深度网络中,输入数据在前向传播过程中丢失信息的现象通常被称为信息瓶颈 [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在所有比较中都取得了最佳性能。

本文的贡献总结如下:

  1. 从可逆函数的角度对现有的深度神经网络架构进行了理论分析,成功解释了许多过去难以理解的现象。 基于理论分析设计了PGI(Programmable Gradient Information)和辅助可逆分支,取得了出色的结果。
  2. 设计的PGI解决了深度监督只能用于极深神经网络架构的问题,从而使得新的轻量级架构能够真正应用于日常生活。
  3. 结合提出的PGI和GELAN(Global Edge Learning Adversarial Network),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]作为预测头部。最近还提出了一些实时目标检测器,例如基于DETR [4]的RT DETR [43]。然而,由于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能够保留的重要信息的比例,确实与训练后可以获得的准确性呈正相关。我们进一步设计了基于可逆网络的方法来解决上述问题的原因。在本节中,我们将详细阐述信息瓶颈原理和可逆函数的分析。

信息瓶颈原理

根据信息瓶颈原理,我们知道数据在经过变换时可能会导致信息丢失,如下所示的公式1:
I ( X , X ) ≥ I ( X , f θ ( X ) ) ≥ I ( X , g ϕ ( f θ ( X ) ) ) ( 1 ) {I}(X,X)\ge{I}(X,f_{\theta}(X))\ge{I}(X,g_{\phi}(f_{\theta}(X))) \quad(1) I(X,X)I(X,fθ(X))I(X,gϕ(fθ(X)))(1)
其中 I I I表示互信息, f f f g g g是变换函数, θ \theta θ ϕ \phi ϕ f f f g g g的参数。在深度神经网络中, f θ f_{\theta} fθ g ϕ ( . ) g_{\phi}(.) gϕ(.)分别表示深度神经网络中两个连续层的操作。从公式1可以预测,随着网络层数的增加,原始数据更有可能丢失。然而,深度神经网络的参数是基于网络的输出以及给定的目标,然后通过计算损失函数生成新的梯度来更新网络。可以想象,更深的神经网络的输出能力更弱,无法完整地保留关于预测目标的完整信息。这将使得在网络训练过程中使用不完整的信息,导致不可靠的梯度和收敛性差。

解决上述问题的一种方法是直接增加模型的大小。当我们使用大量参数构建模型时,它能够更完整地对数据进行转换。上述方法即使在数据前向传播过程中丢失信息,仍然有机会保留足够的信息进行映射到目标。上述现象解释了为什么在大多数现代模型中,宽度比深度更重要。然而,上述结论不能从根本上解决非常深的神经网络中不可靠梯度的问题。接下来,我们将介绍如何使用可逆函数来解决问题并进行相关分析。

可逆函数

当一个函数 r r r具有逆变换函数 v v v时,我们称这个函数为可逆函数,如公式2所示:
X = v ζ ( r ψ ( X ) ) ( 2 ) X\ =\,v_{\zeta}(r_{\psi}(X))\quad(2) X =vζ(rψ(X))(2)

其中 ψ \psi ψ ζ \zeta ζ r r r v v v的参数, X X X通过可逆函数转换而不丢失信息,如公式3所示:
I ( X , X ) = I ( X , r ψ ( X ) ) = I ( X , v ζ ( r ψ ( X ) ) ) ( 3 ) {I}(X,X)=I(X,r_{\psi}(X))=I(X,v_{\zeta}(r_{\psi}(X))) \quad(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}\equiv\mathcal{X}^{l}+\mathcal{f}_{\theta}^{l+1}\big(X^{l}\big)\quad(4) Xl+1Xl+fθl+1(Xl)(4)

此外,我们尝试使用掩码建模来实现显著突破。我们使用近似方法,例如公式5,来尝试找到r的逆变换v,以使转换后的特征能够使用稀疏特征保留足够的信息。公式5的形式如下:
X = v ζ ( r ψ ( X ) ⋅ M ) ( 5 ) X=v_{\zeta}(r_{\psi}(X)\cdot M)\quad(5) X=vζ(rψ(X)M)(5)
其中M是一个动态二进制掩码。常用的执行上述任务的其他方法包括扩散模型和变分自编码器,它们都具有寻找逆函数的功能。然而,当我们将上述方法应用于轻量级模型时,会出现缺陷,因为轻量级模型对大量原始数据进行了参数化。因此,将数据X映射到目标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)\ge{I}(Y,X)\ge{I}(Y,f_{\theta}(X))\ge{\bf\cdot}\cdot\cdot\cdot\geq{I}(Y,{\hat{Y}})\quad(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的信息,那是很难实现的。基于上述分析,我们希望提出一种新的深度神经网络训练方法,既能生成可靠的梯度来更新模型,又适用于浅层和轻量级神经网络。
在这里插入图片描述
图3. PGI及相关网络架构和方法。(a) 路径聚合网络 (PAN) [37],(b) 可逆列 (RevCol) [3],© 传统深度监督,以及 (d) 我们提出的可编程梯度信息 (PGI)。PGI主要由三个组成部分组成:(1) 主分支:用于推理的架构,(2) 辅助可逆分支:生成可靠的梯度以供反向传输的主分支使用,以及 (3) 多级辅助信息:控制主分支学习可规划的多级语义信息。

实践方法

可编程梯度信息

为了应对深度神经网络中出现的信息瓶颈和梯度不稳定等问题,我们提出了一种新的辅助监督框架,称为可编程梯度信息(PGI)。PGI由三个主要组成部分构成,包括主分支、辅助可逆分支和多级辅助信息。在PGI中,推理过程仅使用主分支,无需额外的推理成本。辅助可逆分支旨在解决由于网络加深而引起的信息瓶颈问题,而多级辅助信息则用于处理深度监督引起的错误累积问题,特别是对于多个预测分支的架构和轻量级模型。接下来,我们将详细介绍这两个组成部分。

辅助可逆分支

辅助可逆分支的作用是生成可靠的梯度并更新网络参数。它通过提供从数据到目标的映射信息来指导损失函数,避免了从不完整的前馈特征中找到虚假相关性的可能性,这些特征与目标关系较小。我们引入可逆架构以保持完整信息,但将主分支添加到可逆架构中会增加推理成本。我们分析了架构,并发现添加了额外连接后,推理时间将增加20%。当我们将输入数据重复添加到网络的高分辨率计算层时,推理时间甚至超过原来的两倍。

考虑到我们的目标是获得可靠的梯度,可逆性并非推理阶段的必要条件。因此,我们将可逆分支视为深度监督分支的扩展,并设计了辅助可逆分支。主分支深层特征由于信息瓶颈而丢失重要信息,辅助可逆分支能够为其提供可靠的梯度信息。这些梯度信息将驱动参数学习,以提取正确和重要的信息,从而使主分支获得对目标任务更有效的特征。此外,由于可逆架构在浅层网络上的表现不如一般网络好,我们的方法不要求主分支保留完整的原始信息,而是通过辅助监督机制生成有用的梯度来更新它。这样的设计使我们的方法也可以应用于更浅的网络。
在这里插入图片描述
图4. GELAN的架构:(a) CSPNet [64],(b) ELAN [65],以及 © 我们提出的GELAN。我们模仿CSPNet并将ELAN扩展为GELAN,可以支持任何计算块。

最后,由于辅助可逆分支可以在推理阶段移除,因此可以保留原始网络的推理能力。在PGI中,我们可以选择任何可逆架构来充当辅助可逆分支的角色。

多级辅助信息

在这一部分,我们将探讨多级辅助信息的工作原理。深度监督架构包含多个预测分支,以执行不同的任务,例如使用不同的特征金字塔检测不同大小的对象。然而,连接到深度监督分支后,浅层特征被引导学习用于小目标检测所需的特征,而这可能会导致深层特征金字塔丢失大量预测目标对象所需的信息。为解决这一问题,我们认为每个特征金字塔都需要接收关于所有目标对象的信息,以保留用于各种目标的完整信息。

多级辅助信息的概念是在辅助监督和主分支之间的特征金字塔层次结构之间插入一个集成网络,然后使用它来组合来自不同预测头部的返回梯度。这样,多级辅助信息的目标是聚合包含所有目标对象的梯度信息,并将其传递给主分支进行参数更新。这种方法有助于缓解深度监督中的信息丢失问题,并确保主分支的特征不会被某些特定对象的信息所主导。此外,多级辅助信息可用于指导不同尺寸的网络架构的学习,因为任何集成网络都可以用于这一目的。

通用ELAN

通用ELAN是我们提出的新网络架构,通过结合CSPNet和ELAN两个神经网络架构,我们设计了通用高效的层聚合网络(GELAN),考虑了轻量级、推理速度和准确性。该架构的整体设计如图4所示,我们泛化了ELAN的能力,使其可以使用任何类型的计算块,而不仅仅是卷积层的堆叠。

实验

实验设置

我们在MS COCO数据集上验证了所提出的方法。所有实验设置均遵循YOLOv7 AF [63],使用的数据集为MS COCO 2017分割版本。所有提到的模型都是从头开始训练,训练总次数为500个epoch。在学习率设置方面,我们采用了线性预热策略,前三个epoch进行预热,随后的epoch根据模型规模采用相应的衰减方式。在最后的15个epoch中,我们关闭了马赛克数据增强。更多设置细节请参考附录。
在这里插入图片描述

方法比较

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

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

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

消融研究

广义ELAN

对于GELAN,我们进行了计算块的消融研究。我们分别使用了Res块 [21],Dark块 [49]和CSP块 [64]进行了实验。结果如表2所示,在ELAN中使用不同的计算块替换卷积层后,系统能够保持良好的性能。这表明用户可以自由替换计算块并在各自的推理设备上使用它们。在不同的计算块替换中,CSP块表现特别出色。它不仅减少了参数和计算量,还提高了0.7%的AP。因此,我们选择CSPELAN作为YOLOv9中GELAN的组件单元。
在这里插入图片描述
接下来,我们进行了对不同大小的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}。
在这里插入图片描述

可编程梯度信息

在PGI方面,我们对骨干和颈部的辅助可逆分支和多级辅助信息进行了消融研究。我们设计了辅助可逆分支ICN,使用DHLC链接获取多级可逆信息。至于多级辅助信息,我们使用FPN和PAN进行消融研究,PFH的作用相当于传统的深度监督。所有实验的结果列在表4中。从表4可以看出,PFH只对深度模型有效,而我们提出的PGI可以在不同组合下提高准确性。特别是在使用ICN时,我们获得了稳定且更好的结果。我们还尝试将YOLOv7中提出的引导辅助分配方法应用于PGI的辅助监督,并取得了更好的性能。
在这里插入图片描述
在这里插入图片描述
我们进一步在不同大小的模型上实现了PGI和深度监督的概念,并比较了结果,这些结果显示在表5中。正如一开始分析的那样,引入深度监督会导致浅层模型的准确性下降。对于通用模型,引入深度监督会导致性能不稳定,并且深度监督的设计概念只能在极深的模型中带来收益。我们提出的PGI可以有效解决信息瓶颈和信息丢失等问题,并全面提高不同大小模型的准确性。PGI的概念带来了两个有价值的贡献。第一个是使辅助监督方法适用于浅层模型,第二个是使深度模型训练过程获得更可靠的梯度。这些梯度使深度模型能够使用更准确的信息来建立数据和目标之间的正确关联。

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

可视化

在本节中,我们将探讨信息瓶颈问题并进行可视化。此外,我们还将可视化我们提出的PGI如何使用可靠的梯度来找到数据和目标之间的正确关联。在图6中,我们展示了在不同架构下使用随机初始权重作为前馈的特征图的可视化结果。我们可以看到,随着层数的增加,所有架构的原始信息逐渐减少。例如,在PlainNet的第50层,很难看到物体的位置,所有可辨别的特征在第100层都会丢失。至于ResNet,虽然在第50层仍然可以看到物体的位置,但边界信息已经丢失。当深度达到第100层时,整个图像变得模糊。CSPNet和我们提出的GELAN都表现得非常好,它们都可以保持支持清晰识别物体的特征,直到第200层。在比较中,GELAN具有更稳定的结果和更清晰的边界信息。
在这里插入图片描述
图6. 在不同深度下使用随机初始权重的PlainNet、ResNet、CSPNet和GELAN输出的特征图(可视化结果)。在100层之后,ResNet开始产生足以混淆物体信息的前馈输出。我们提出的GELAN在150层之前仍然能够保留相当完整的信息,并且在200层之前仍然具有足够的区分能力。
在这里插入图片描述
图7. GELAN和YOLOv9(GELAN + PGI)进行一次偏置预热后的PAN特征图(可视化结果)。GELAN最初存在一些分歧,但在添加PGI的可逆分支后,它更能够集中精力在目标物体上。

结论

在本文中,我们提出了使用PGI解决信息瓶颈和深度监督机制不适用于轻量级神经网络的问题。我们设计了GELAN,一个高效且轻量级的神经网络。在目标检测方面,GELAN在不同计算块和深度设置下表现出强大且稳定的性能。它确实可以广泛扩展为适用于各种推断设备的模型。通过引入PGI,我们解决了轻量级模型和深度模型在准确性上的问题,使得它们都取得了显著的提升。结合PGI和GELAN设计的YOLOv9表现出了强大的竞争力。其出色的设计使得与YOLOv8相比,深度模型参数数量减少了49%,计算量减少了43%,但在MS COCO数据集上仍然有0.6%的AP改进。

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

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

相关文章

k8s HPA 自动伸缩机制 (配置,资源限制,)

目录 一、概念 核心概念 工作原理 HPA 的配置关键参数 关键组件 使用场景 注意事项 如何确保程序稳定和服务连续 二、metrics-server 部署 metrics-server 准备 metrics-server 镜像: 使用 Helm 安装 metrics-server: 配置 metrics-server: 安装 metrics-server: …

EOS 与ESD 区别

ESD: 英文:Electrical Static Discharge; 定义:不同静电电位的两个物体之间的电荷转移;中文释为静电放电。静电是一种客观的自然现象; EOS: 英文:Electrical Over Stress 定义&#xf…

【算法】KY187 二进制数

https://www.nowcoder.com/ta/kaoyan 描述 大家都知道,数据在计算机里中存储是以二进制的形式存储的。 有一天,小明学了C语言之后,他想知道一个类型为unsigned int 类型的数字,存储在计算机中的二进制串是什么样子的。 你能帮帮小…

C++中在定义一个宏的时候要注意什么?

在定义宏时,有一些重要的注意事项需要牢记,以确保代码的正确性、可读性和可维护性。以下是一些关键的建议: 避免副作用:宏只是简单的文本替换,所以它们不会检查是否有变量被多次修改或者是否有潜在的副作用。例如&…

钉钉小程序 - - - - - 如何通过一个链接打开小程序内的指定页面

方式1 钉钉小程序 scheme dingtalk://dingtalkclient/action/open_mini_app?miniAppId123&pagepages%2Findex%2Findex%3Fx%3D%25E4%25B8%25AD%25E6%2596%2587 方式2 https://applink.dingtalk.com/action/open_mini_app?type2&miniAppIdminiAppId&corpIdcorpId&…

spacy进行简单的自然语言处理的学习

自然语言处理基本概念 概念:自然语言处理,是让机器理解人的语言的过程。 作用:通过使用自然语言处理,机器可以理解人的语言,从而进行语义分析,例如:从一句话中判断喜怒哀乐;从一段文…

计算机安全

一、跨站脚本攻击XSS? XSS就是通过在用户端注入恶意的可运行脚本,若服务端对用户的输入不进行处理,直接将用户的输入输出到浏览器,然后浏览器将会执行用户注入的脚本。 获取用户的输入,不用innerHtml,用innerText; 对用户的输入…

Unity类银河恶魔城学习记录10-12 p100 Improve aliments - chill源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili CharacterStats.cs using System.Collections; using System.Collections…

【每日算法】理论:生成模型基础; 刷题:力扣单调栈

文章目录 一、理论问题1、怎么理解重参数化技术?2、KL散度是什么?3、DDPM4、什么是马尔可夫过程5、GAN模型6、VAE模型 二、力扣回顾-单调栈 一、理论问题 1、怎么理解重参数化技术? 重参数化是神经网络中的一种技术,也可以称之为…

计算机二级Python题目13

目录 1. 基本题 1.1 基本题1 1.2 基本题2 1.3 基本题3 2. turtle画图 3. 大题 3.1 大题1 3.2 大题2 1. 基本题 1.1 基本题1 lseval(input()) s"" for item in ls:if type(item)type("香山"):s item print(s) 1.2 基本题2 import random random.se…

说下你对TCP以及TCP三次握手四次挥手的理解?

参考自简单理解TCP三次握手四次挥手 什么是TCP协议? TCP( Transmission control protocol )即传输控制协议,是一种面向连接、可靠的数据传输协议,它是为了在不可靠的互联网上提供可靠的端到端字节流而专门设计的一个传输协议。 面向连接&a…

VMware的安装和Ubuntu的配置安装

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、linux是什么?二、基础知识虚拟机 三、安装VMware总结 前言 提示:这里可以添加本文要记录的大概内容: Linux是一个功能…

Java项目:55 springboot基于SpringBoot的在线视频教育平台的设计与实现015

作者主页:舒克日记 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 在线视频教育平台分为管理员和用户、教师三个角色的权限模块。 管理员所能使用的功能主要有:首页、个人中心、用户管理、教师管理、课程信…

数据指标体系方法—UJM模型

了解 UJM UJM 模型,全称为 User-Journey-Map 模型,即用户旅途地图。 UJM 模型是用户在使用产品过程中的生命旅程,指用户从首次接触直至下单以及享受产品或服务期间,用户与企业产品或者平台互动的全过程。 用户旅途常常会和用户…

用 bsdtar 做 Linux 全系统迁移 - 最省空间、最灵活的Linux系统迁移方式,但需要那么一点点技巧

(首发地址:学习日记 https://www.learndiary.com/2024/03/migrate-linux-with-bsdtar/ ) 我们在做 Linux 全系统迁移的时候,可以直接备份磁盘或分区(如 dd ),也可以备份全部文件(如…

想兼职赚钱?盘点6个靠谱兼职,赚钱更轻松!

1,微头条搬砖 微头条搬砖是一个门槛不高的赚钱方式,而且不需要你有多么好的原创能力,去收集一些热门文章的素材进行文章伪原创,十分钟就能搞定,只要你的文章有爆点,足够吸人眼球,就能够获取不低…

throws vs throw

方法内, throw是生成异常,结束当前方法运行,此时要么捕获(自己抛的自己捕获,没有意义),要么上抛,即方法上throws声明,让调用者处理throws是处理异常(抛给别人处理&#x…

给Python初学者的一些技巧

以下是一些Python实用技巧和工具,希望能对大家学习有所帮助。 交换变量 x 6 y 5 x, y y, x print x >>> 5 print y >>> 6 if 语句在行内 print "Hello" if True else "World" >>> Hello 连接 下面的最后一种方…

区块链技术中的共识机制算法:以权益证明(PoS)为例

引言: 在区块链技术的演进过程中,共识机制算法扮演着至关重要的角色。除了广为人知的工作量证明(PoW)外,权益证明(Proof of Stake,PoS)也是近年来备受关注的一种共识算法。 …

C++高级面试题:请解释 C++ 中的函数重载解析(Function Overload Resolution)

请解释 C 中的函数重载解析(Function Overload Resolution) 函数重载解析(Function Overload Resolution)是指编译器在调用重载函数时确定最合适的重载版本的过程。在 C 中,函数重载允许我们定义多个同名函数&#xf…