YOLOv9改进 | 一文带你了解全新的SOTA模型YOLOv9(论文阅读笔记,效果完爆YOLOv8)

官方论文地址: 官方论文地址点击即可跳转

官方代码地址: 官方代码地址点击即可跳转

 图1. 在MS COCO数据集上实时对象检测器的比较。基于GELAN和PGI的对象检测方法在对象检测性能方面超越了所有以前的从头开始训练的方法。在准确性方面,新方法超越了使用大型数据集预训练的RT DETR,同时在参数利用率方面也超过了基于深度卷积的设计YOLO MS。


一、Introduction/引言

YOLOv9发布时间为2024年2月21日,其基于深度学习的模型在各个领域,如计算机视觉、语言处理和语音识别等方面,已经展现出比过去的人工智能系统更优异的性能。近年来,深度学习领域的研究主要集中在如何开发更强大的系统架构和学习方法,例如卷积神经网络(CNNs)、变换器(Transformers)、感知器(Perceivers)和Mambas。此外,一些研究人员试图开发更通用的目标函数,如损失函数、标签分配和辅助监督。上述研究都试图精确地找到输入和目标任务之间的映射。然而,大多数过去的方法忽略了输入数据在前馈过程中可能会有不容忽视的信息损失(YOLOv9重要改进)。这种信息的损失可以导致偏差的梯度流,随后用于更新模型。上述问题可能导致深度网络建立错误的目标和输入之间的关联,导致训练有素的模型产生错误的预测。

个人总结:此段落强调了深度学习在多个领域的显著进步,同时指出了现有研究的主要方向,包括开发先进的系统架构、学习方法以及更通用的目标函数。作者特别指出,大多数研究忽略了数据在前馈过程中可能发生的信息损失问题,这一问题可能导致模型更新时的梯度流偏差,最终影响模型的预测准确性。这一观察提示未来的研究需要更多地关注如何减少信息损失,以提高深度学习模型的性能和准确性。

图2展示了不同网络架构的随机初始权重输出特征图的可视化结果:(a) 输入图像,(b) PlainNet,(c) ResNet,(d) CSPNet,和 (e) 提议的GELAN。从这些可视化结果中,我们可以看出在不同的架构中,提供给目标函数用以计算损失的信息在不同程度上有所丢失,而提议的GELAN架构能够保留最完整的信息,并为计算目标函数提供最可靠的梯度信息。

具体来说,输入图像(a)是原始未处理的图像。接下来的四个图像(b-e)分别展示了当这个输入图像通过不同的网络架构时,在网络的某一层上的特征图。这些特征图通过网络层的权重随机初始化得到,旨在展示网络在处理数据时的特征提取能力。图中的颜色变化代表特征的激活程度,激活程度越高,说明网络对于图像的某一部分特征越敏感。

  • PlainNet (b) 显示了一个基本网络结构的特征图,可以看到有大量的信息丢失,这意味着在实际应用中可能不会捕捉到所有有用的特征。
  • ResNet (c) 作为一个经典的深度学习架构,展示了更好的信息保留能力,但仍有一些信息损失。
  • CSPNet (d) 通过其特殊的结构设计,进一步减少了信息的丢失。
  • GELAN (e) 展示了该研究提出的架构,从图中可以看出,与其他架构相比,它保留了最完整的信息,这表明GELAN架构能更好地保留输入数据的信息,为后续的目标函数计算提供更准确的梯度信息。

总体而言,图2强调了GELAN架构在保留关键信息上的优势,这对于目标检测等任务至关重要,因为信息的完整性直接关系到网络最后预测的准确性。

在深度网络中,输入数据在前馈过程中丢失信息的现象通常被称为信息瓶颈,其示意图如图2所示(图二在上面提供了)。目前,可以缓解这种现象的主要方法如下:

(1)使用可逆架构:这种方法主要通过重复使用输入数据并以显式方式保持输入数据的信息;(2)使用掩码建模:主要通过重构损失使用隐式方式最大化提取的特征并保留输入信息; 
(3)引入深度监督概念:它使用尚未丢失太多重要信息的浅层特征,预先建立从特征到目标的映射,以确保重要信息可以传输到更深的层。

然而,上述方法在训练过程和推理过程中都有不同的缺点。例如,可逆架构需要额外的层来组合重复输入的数据,这将显著增加推理成本。此外,由于输入数据层到输出层的路径不能太深,这一限制将使得在训练过程中难以建模高阶语义信息。至于掩码建模,其重构损失有时与目标损失冲突。此外,大多数掩码机制也会产生错误的数据关联。对于深度监督机制,它会产生错误累积,如果浅层监督在训练过程中丢失信息,后续层将无法检索所需信息。上述现象在困难任务和小型模型上会更加显著。

为了解决上述问题(为了解决的问题是输入数据在前馈过程中丢失信息的现象),我们提出了一个新概念,即可编程梯度信息(PGI)。该概念是通过辅助可逆分支生成可靠梯度,以便深层特征仍然可以保持执行目标任务的关键特性。辅助可逆分支的设计可以避免传统深度监督过程中可能造成的语义损失,该过程整合了多路径特征。换句话说,我们在不同的语义层次上编程梯度信息传播,从而实现最佳训练结果。PGI的可逆架构建立在辅助分支上,因此不会增加额外成本。由于PGI可以自由选择适合目标任务的损失函数,它还克服了掩码建模遇到的问题。所提出的PGI机制可以应用于各种大小的深度神经网络,比仅适用于非常深的神经网络的深度监督机制更为通用。

在本文中,我们还基于ELAN设计了广义ELAN(GELAN,论文提出一种全新结构),GELAN的设计同时考虑了参数数量、计算复杂度、准确性和推理速度。这种设计允许用户为不同的推理设备自由选择合适的计算块。我们结合了所提出的PGI和GELAN,然后设计了新一代YOLO系列对象检测系统,我们称之为YOLOv9。我们使用MS COCO数据集进行实验,实验结果验证了我们提出的YOLOv9在所有比较中都实现了顶级性能。

我们总结本文的贡献如下(这是论文中的总结):

  1. 我们从可逆函数的角度理论分析了现有的深度神经网络架构,并通过这一过程成功解释了过去难以解释的许多现象。我们还基于这一分析设计了PGI和辅助可逆分支,并取得了优异的结果。
  2. 我们设计的PGI解决了深度监督只能用于极深神经网络架构的问题,因此允许新的轻量级架构真正应用于日常生活中。
  3. 我们设计的GELAN仅使用传统卷积就实现了比基于最先进技术的深度卷积设计更高的参数利用率,同时展现了轻巧、快速和准确的巨大优势。
  4. 结合所提出的PGI和GELAN,YOLOv9在MS COCO数据集上的对象检测性能在所有方面都大大超过了现有的实时对象检测器。

个人总结:本段提出了解决深度网络中信息损失问题的新方法——可编程梯度信息(PGI),以及基于此的辅助可逆分支设计(可逆网络有Revcol不知道大家还记得不记得了),旨在维持深层特征的关键信息。同时,通过引入广义ELAN(GELAN)优化了网络架构的参数利用率和计算效率。


二、Related work/相关工作 

2.1 Real-time Object Detectors/实时对象检测器

当前主流的实时对象检测器是YOLO系列,大多数模型使用CSPNet或ELAN及其变体作为主要计算单元。在特征整合方面,通常使用改进的PAN或FPN作为工具,然后使用改进的YOLOv3头部或FCOS头部进行预测。最近,一些实时对象检测器,如基于DETR的RT-DETR也被提出。然而,由于DETR系列对象检测器在没有相应领域预训练模型的情况下应用于新领域极其困难,目前最广泛使用的实时对象检测器仍是YOLO系列。本文选择了在各种计算机视觉任务和不同场景中已被证明有效的YOLOv7作为开发所提出方法的基础。我们使用GELAN改进架构,并使用所提出的PGI改进训练过程。上述新方法使得所提出的YOLOv9成为新一代最顶尖的实时对象检测器。


2.2 Reversible Architectures/可逆架构

本节讨论了可逆架构的运算单元必须保持可逆转换的特性,这样可以确保每个运算单元的输出特征图能够保留完整的原始信息。在此之前,RevCol将传统的可逆单元推广到多个级别(我发过这个模型不知道大家记得不记得),从而可以扩展不同层单元所表达的语义级别。通过对各种神经网络架构的文献回顾,我们发现有许多具有不同程度可逆特性的高性能架构。例如,Res2Net模块以分层方式将不同的输入分区与下一个分区结合,并在反向传递之前连接所有转换的分区。CBNet通过复合主干重新引入原始输入数据以获得完整的原始信息,并通过各种组合方法获得不同级别的多级可逆信息。这些网络架构通常具有出色的参数利用率,但额外的复合层会导致推理速度变慢。DynamicDet结合了CBNet和高效的实时对象检测器YOLOv7,实现了速度、参数数量和准确性之间非常好的平衡。本文引入了DynamicDet架构作为设计可逆分支的基础。此外,可逆信息进一步引入到所提出的PGI中。所提出的新架构在推理过程中不需要额外的连接,因此可以完全保留速度、参数数量和准确性的优势。


2.3 辅助监督

深度监督是最常见的辅助监督方法,它通过在中间层插入额外的预测层来进行训练。特别是在基于变换器的方法中引入的多层解码器的应用是最常见的。另一种常见的辅助监督方法是利用相关的元信息来指导中间层产生的特征图,使其具有目标任务所需的属性。此类示例包括使用分割损失或深度损失来提高对象检测器的准确性。最近,文献中有许多报告使用不同的标签分配方法来生成不同的辅助监督机制,以加速模型的收敛速度并同时提高鲁棒性。然而,辅助监督机制通常只适用于大型模型,所以当应用于轻量级模型时,容易导致参数不足现象,这会使性能变差。我们提出的PGI设计了一种重新编程多级语义信息的方法,这种设计允许轻量级模型也能从辅助监督机制中受益。


三、Problem Statement/问题陈述 

通常,人们将深度神经网络收敛问题的困难归咎于梯度消失或梯度饱和等因素,这些现象确实存在于传统的深度神经网络中。然而,现代深度神经网络已经通过设计各种规范化和激活函数从根本上解决了上述问题。尽管如此,深度神经网络仍然面临收敛速度慢或收敛结果差的问题。

在本文中,我们进一步探索了上述问题的本质。通过深入分析信息瓶颈,我们推断出这个问题的根本原因是,最初来自非常深的网络的梯度,在传输后不久就失去了实现目标所需的大量信息。为了证实这一推断,我们使用初始权重前向传播不同架构的深度网络,然后在图2中进行了可视化和说明。显然,PlainNet在深层丢失了大量用于对象检测所需的重要信息。至于ResNet、CSPNet和GELAN能保留的重要信息的比例,实际上与训练后能获得的准确度成正相关。我们进一步设计了基于可逆网络的方法来解决上述问题的原因。在本节中,我们将详细阐述我们对信息瓶颈原理和可逆函数的分析。


3.1 Information Bottleneck Principle/信息瓶颈原理

根据信息瓶颈原理,我们知道数据X在经过变换时可能会导致信息损失,如下面的等式1所示:

其中I表示互信息,fg是变换函数,\Theta\Phi分别是fg的参数。在深度神经网络中,f\theta (·)g\varphi (·)分别代表深度神经网络中两个连续层的操作。从等式1我们可以预测,随着网络层数的加深,原始数据越有可能丢失。然而,深度神经网络的参数是基于网络的输出以及给定的目标,然后在计算损失函数生成新梯度后更新网络。可以想象,更深的神经网络输出越难以保留完整的预测目标信息。这将可能导致在网络训练过程中使用不完整信息,从而产生不可靠的梯度和较差的收敛性。

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


3.2 可逆函数

当函数r具有逆变换函数v时,我们称这个函数为可逆函数,如等式2所示。

其中,\psi\varsigma分别是r和v的参数。数据X通过可逆函数转换而不丢失信息,如等式3所示。

当网络的转换函数由可逆函数组成时,可以获得更可靠的梯度来更新模型。几乎所有当今流行的深度学习方法都是遵循可逆属性的架构,例如等式4。 

其中l表示PreAct ResNet的第l层,f是第l层的变换函数。PreAct ResNet通过显式方式重复将原始数据X传递给后续层。虽然这种设计可以使深度神经网络拥有超过一千层并且收敛得非常好,但它破坏了我们需要深度神经网络的一个重要原因。那就是,对于困难的问题,我们很难直接找到简单的映射函数将数据映射到目标上。这也解释了为什么PreAct ResNet在层数较少时的表现比ResNet差。

此外,我们尝试使用允许变换器模型取得重大突破的掩码建模。我们使用如等式5所示的近似方法,尝试找到r的逆变换v,以便转换后的特征可以使用稀疏特征保留足够的信息。等式5的形式如下:

其中M是一个动态二进制掩码。其他常用于执行上述任务的方法包括扩散模型和变分自编码器,它们都具有寻找逆函数的功能。然而,当我们将上述方法应用于轻量级模型时,会出现缺陷,因为轻量级模型将对大量原始数据进行欠参数化。因为上述原因,将数据X映射到目标Y的重要信息\(I(Y; X)\)也会面临同样的问题。对于这个问题,我们将使用信息瓶颈的概念来探讨。信息瓶颈的公式如下:

一般来说,I(Y;X)只占I(X;X)的很小一部分。然而,它对目标任务至关重要。因此,即使在前馈阶段丢失的信息量不显著,只要涵盖了I(Y;X),训练效果将会受到很大影响。轻量级模型本身处于欠参数化状态,因此在前馈阶段容易丢失大量重要信息。因此,我们对轻量级模型的目标是如何从I(X;X)中准确筛选出I(Y;X)。至于完全保留X的信息,那是难以实现的。基于上述分析,我们希望提出一种新的深度神经网络训练方法,不仅能生成可靠的梯度来更新模型,而且也适用于浅层和轻量级神经网络​​。 

这张图(图3)展示了可编程梯度信息(PGI)及其相关网络架构和方法。图中展示了四种不同的网络设计:

a) PAN (Path Aggregation Network):这种网络结构主要用于改进特征融合,以提高目标检测的性能。然而,由于信息瓶颈的存在,网络中可能会丢失一些信息。

b) RevCol (Reversible Columns):这是一种旨在减少信息丢失的网络设计。它通过可逆的列结构来尝试维持信息流通不受损失,但如图中“Heavy Cost”所示,这种结构会增加计算成本。

c) 深度监督:这种方法通过在网络的多个层次中插入额外的监督信号来提高学习的效率和最终模型的性能。图中显示了通过深度监督连接的各个层。

d) 可编程梯度信息 (PGI):PGI是作者提出的一种新方法(我理解的这种方法就是在前向传播的过程中没有跳级链接),它主要由三个部分组成:
   1. 主分支:用于推理的架构。
   2. 辅助可逆分支:生成可靠的梯度,以供给主分支进行反向传播。
   3. 多级辅助信息:控制主分支学习可规划的多级语义信息。

PGI的目的是通过辅助可逆分支(如图中虚线框所示)来解决信息瓶颈问题,以便在不增加推理成本的情况下为深度网络提供更可靠的梯度。通过这种设计,即使是轻量级和浅层的神经网络也可以实现有效的信息保留和准确的梯度更新。如图中的深色方框所示的主分支,通过辅助可逆分支提供的可靠梯度信息,可以获得更有效的目标任务特征,而不会因为信息瓶颈而损失重要信息。

图中的符号代表不同的操作:灰色圆形代表池化操作,白色圆形代表上采样操作,灰色方块代表预测头,蓝色方块代表辅助分支,深色方块代表主分支。这种设计允许网络在保持高效计算的同时,也能够处理复杂的目标检测任务。


四、Methodology/ 方法

4.1 Programmable Gradient Information​​/可编程梯度信息

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


4.1.1 Auxiliary Reversible Branch/辅助可逆分支

在PGI中,我们提出了辅助可逆分支来生成可靠的梯度并更新网络参数。通过提供从数据到目标的映射信息,损失函数可以提供指导,并避免从与目标关系较小的不完整前馈特征中找到错误相关性的可能性。我们提出通过引入可逆架构来维持完整信息,但在可逆架构中添加主分支将消耗大量的推理成本。我们分析了图3(b)的架构,并发现在深层到浅层添加额外连接时,推理时间将增加20%。当我们反复将输入数据添加到网络的高分辨率计算层(黄色框),推理时间甚至超过了两倍。

由于我们的目标是使用可逆架构来获取可靠的梯度,因此“可逆”并不是推理阶段的唯一必要条件。鉴于此,我们将可逆分支视为深度监督分支的扩展,并设计了如图3(d)所示的辅助可逆分支。至于主分支,由于信息瓶颈可能会丢失重要信息的深层特征,将能够从辅助可逆分支接收可靠的梯度信息。这些梯度信息将推动参数学习,以帮助提取正确和重要的信息,并使主分支能够获取更有效的目标任务特征。此外,由于复杂任务需要在更深的网络中进行转换,可逆架构在浅层网络上的表现不如在一般网络上。我们提出的方法不强迫主分支保留完整的原始信息,而是通过辅助监督机制生成有用的梯度来更新它。这种设计的优势是,所提出的方法也可以应用于较浅的网络。最后,由于辅助可逆分支可以在推理阶段移除,因此可以保留原始网络的推理能力。我们还可以在PGI中选择任何可逆架构来充当辅助可逆分支的角色。


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

在本节中,我们将讨论多级辅助信息是如何工作的。包含多个预测分支的深度监督架构如图3(c)所示。对于对象检测,可以使用不同的特征金字塔来执行不同的任务,例如它们可以一起检测不同大小的对象。因此,连接到深度监督分支后,浅层特征将被引导学习小对象检测所需的特征,此时系统将将其他大小的对象位置视为背景。然而,上述行为将导致深层特征金字塔丢失很多预测目标对象所需的信息。对于这个问题,我们认为每个特征金字塔都需要接收所有目标对象的信息,以便后续主分支能够保留完整信息来学习对各种目标的预测。

多级辅助信息的概念是在辅助监督的特征金字塔层之间和主分支之间插入一个集成网络,然后使用它来结合不同预测头返回的梯度,如图3(d)所示。然后,多级辅助信息将汇总包含所有目标对象的梯度信息,并将其传递给主分支然后更新参数。此时,主分支的特征金字塔层次的特性不会被某些特定对象的信息所主导。因此,我们的方法可以缓解深度监督中的断裂信息问题。此外,任何集成网络都可以在多级辅助信息中使用。因此,我们可以规划所需的语义级别来指导不同大小的网络架构的学习。


4.2 Generalized ELAN

在本节中,我们描述了提出的新网络架构 - GELAN。通过结合两种神经网络架构CSPNet和ELAN,这两种架构都是以梯度路径规划设计的,我们设计了考虑了轻量级、推理速度和准确性的广义高效层聚合网络(GELAN)。其整体架构如图4所示。我们推广了ELAN的能力,ELAN原本只使用卷积层的堆叠,到一个新的架构,可以使用任何计算块。

这张图(图4)展示了广义高效层聚合网络(GELAN)的架构,以及它是如何从CSPNet和ELAN这两种神经网络架构演变而来的。这两种架构都设计有梯度路径规划。

a) CSPNet:在CSPNet的架构中,输入通过一个转换层被分割为两部分,然后分别通过任意的计算块。之后,这些分支被重新合并(通过concatenation),并再次通过转换层。

b) ELAN:与CSPNet相比,ELAN采用了堆叠的卷积层,其中每一层的输出都会与下一层的输入相结合,再经过卷积处理。

c) GELAN:结合了CSPNet和ELAN的设计,提出了GELAN。它采用了CSPNet的分割和重组的概念,并在每一部分引入了ELAN的层级卷积处理方式。不同之处在于GELAN不仅使用卷积层,还可以使用任何计算块,使得网络更加灵活,能够根据不同的应用需求定制。

GELAN的设计考虑到了轻量化、推理速度和精确度,以此来提高模型的整体性能。图中显示的模块和分区的可选性进一步增加了网络的适应性和可定制性。GELAN的这种结构允许它支持多种类型的计算块,这使得它可以更好地适应各种不同的计算需求和硬件约束。

总的来说,GELAN的架构是为了提供一个更加通用和高效的网络,可以适应从轻量级到复杂的深度学习任务,同时保持或增强计算效率和性能。通过这种方式,GELAN旨在解决现有架构的限制,提供一个可扩展的解决方案,以适应未来深度学习的发展。

大家看图片一眼就能看出来它融合了什么,就是将CSPHet的anyBlock模块堆叠的方式和ELAN融合到了一起。


五、Experiments/实验 

5.1. Experimental Setup/实验设置 

我们使用MS COCO数据集验证了所提出的方法。所有的实验设置都遵循YOLOv7 AF的配置,而数据集分割为MS COCO 2017。我们提到的所有模型都采用了从头开始训练的策略,总训练次数为500个epoch。在设置学习率时,我们在前三个epoch使用线性预热,后续epoch根据模型规模设置相应的衰减方式。至于最后15个epoch,我们关闭了马赛克数据增强。更多设置请参见附录​​。


5.2 Implimentation Details/实验细节

我们基于YOLOv7和Dynamic YOLOv7分别构建了YOLOv9的通用和扩展版本。在网络架构设计中,我们用GELAN替换了ELAN,GELAN使用CSPNet块作为计算块,并计划采用RepConv。我们还简化了下采样模块,并优化了无锚点的预测头。至于PGI的辅助损失部分,我们完全遵循了YOLOv7的辅助头设置。更多细节请参阅附录​​。 

这个表格总结一些对比模型和YOLOv9的参数计算量和其它参数的对比。 


5.3. Comparison with state-of-the-arts/模型对比

表1列出了我们提出的YOLOv9与其他从头开始训练的实时对象检测器的比较。总体而言,在现有方法中表现最好的是轻量级模型YOLO MS-S、中等模型YOLO MS、通用模型YOLOv7 AF以及大型模型YOLOv8-X。与轻量级和中等模型YOLO MS相比,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。从图5可以看出,YOLOv9使用常规卷积在参数利用上甚至比使用深度卷积的YOLO MS还要好。至于大型模型的参数利用,它也大大超过了使用ImageNet预训练模型的RT DETR。更好的是,在深层模型中,YOLOv9显示出使用PGI的巨大优势。通过准确保留和提取将数据映射到目标所需的信息,我们的方法只需要64%的参数,同时保持了与RT DETR-X相同的准确性。

图5显示了最新实时对象检测器在MS COCO对象检测数据集上的性能比较。这张图分成两个部分,一边展示了平均精度(AP)与模型参数数量的关系,另一边展示了AP与模型计算复杂度(以浮点运算次数,即FLOPs计)的关系。

从左侧图表可以看出,随着模型参数数量的增加,不同模型的AP普遍呈现上升趋势。YOLOv9(我们的模型)在参数数量较少时就达到了较高的AP,超过了其他的实时对象检测器,如RT DETR、RTMdet、PP-YOLOE等。这表明YOLOv9在保持参数效率的同时实现了高精度。

右侧图表进一步比较了模型计算复杂度对性能的影响。在相同的FLOPs下,YOLOv9展示了出色的性能,尤其是在计算需求较低的情况下。这一结果表明,YOLOv9不仅在参数利用上效率高,而且在计算效率上也表现出色。

图表中提到,参与比较的所有方法都使用了ImageNet作为预训练权重,包括RT DETR和PP-YOLOE等。而YOLOv9使用了从头开始训练的方法,这表明在没有依赖大规模预训练数据集的情况下(就是没有预训练权重),YOLOv9能够实现优秀的性能。

总体而言,这个图表强调了YOLOv9在轻量级和计算效率上取得的进步,表明了它在实时对象检测领域相比其他现有技术的竞争优势。这些结果对于那些寻求在资源受限的环境中部署高性能深度学习模型的研究人员和工程师来说是有价值的。


5.4. Ablation Studies/消融实验

5.4.1 Generalized ELAN

对于GELAN,我们首先对计算块进行了消融研究。我们分别使用了Res块、Dark块和CSP块进行实验。表2显示,在ELAN中用不同的计算块替换卷积层后,系统可以保持良好的性能。用户确实可以自由替换计算块,并在他们各自的推理设备上使用它们。在不同计算块的替换中,CSP块表现尤为出色。它们不仅减少了参数量和计算量,还将AP提高了0.7%。因此,我们选择CSP-ELAN作为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}}。


5.4.2 Programmable Gradient Information 

在PGI方面,分别对背景网络和颈部网络的辅助可逆分支和多级辅助信息进行了消融研究。设计了辅助可逆分支ICN,使用DHLC连接来获得多级可逆信息。至于多级辅助信息,使用FPN和PAN进行了消融研究,而PFH的作用相当于传统的深度监督。所有实验的结果都列在表4中。从表4可以看出,PFH只在深层模型中有效,而我们提出的PGI可以在不同组合下提高准确性。特别是使用ICN时,我们得到了稳定和更好的结果。我们还尝试将YOLOv7中提出的引导头引导分配应用于PGI的辅助监督,并取得了更好的性能。

关于PGI,我们分别在主干网络和颈部网络上对辅助可逆分支和多级辅助信息进行了消融研究。我们设计了辅助可逆分支ICN,使用DHLC链接来获得多级可逆信息。对于多级辅助信息,我们使用FPN和PAN进行了消融研究,PFH的作用相当于传统的深度监督。所有实验的结果都列在表4中。从表4可以看出,PFH只在深度模型中有效,而我们提出的PGI在不同的组合下都能提高准确性。特别是使用ICN时,我们得到了稳定和更好的结果。我们还尝试将YOLOv7中提出的引导头指导分配应用于PGI的辅助监督,并取得了更好的性能。

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

 最后,我们在表格中展示了从基线YOLOv7到YOLOv9-E的组件逐步增加的结果。我们提出的GELAN和PGI为模型带来了全面的改进。


5.5. Visualization/可视化 

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

这一节将探讨信息瓶颈问题并将其可视化。此外,我们还将展示所提出的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. Conclusions/结论

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


7. Acknowledgements/致谢

作者感谢国家高性能计算中心(NCHC)提供的计算和存储资源


六、全文总结 

到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv9改进有效涨点专栏,本专栏目前为新开的,后期我会根据各种最新的前沿顶会进行论文复现,也会对一些老的改进机制进行补充,如果大家觉得本文帮助到你了,订阅本专栏(目前免费订阅,后期不迷路),关注后续更多的更新~

专栏地址:YOLOv9有效涨点专栏-持续复现各种顶会内容-有效涨点-全网改进最全的专栏 

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

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

相关文章

Go语言实现Redis分布式锁2

项目地址: https://github.com/liwook/Redislock 1.支持阻塞式等待获取锁 之前的是只尝试获取一次锁,要是获取失败就不再尝试了。现在修改为支持阻塞式等待获取锁。 添加LockOptions结构体 添加option.go文件。 在LockOptions中 isBlock表示是否是阻塞模式blo…

配置vscode用于STM32编译,Debug,github上传拉取

配置环境参考: Docs 用cubemx配置工程文件,用VScode打开工程文件。 编译的时候会有如下报错: vscode出现process_begin :CreateProcess failed 系统找不到指定文件 解决方案:在你的makefile中加上SHELLcmd.exe就可以了 参考…

java发送请求-cookie有关代码

在初始化后添加cookie的代码 用这个httpclients类调custom方法,进行代码定制化 找和cookie有关的方法,设置默认的cookie存储信息 入参是接口 将入参粘贴后找方法,用new实现这个接口 这个方法是无参空构造,可以使用 设置了cookie …

【C++】RapidJSON 设置支持 std::string,防止编译报错

问题 rapidjson 创建 json 数据,使用 std::string 字符串进行赋值,编译时,抱一堆错误 .... rapidjson/include/rapidjson/document.h:690:5: note: candidate expects 0 arguments, 1 provided [build] make[2]: *** [main/CMakeFiles/ma…

Betaflight 4.5RC3 AT32F435遇到的一些“怪”现象

Betaflight 4.5RC3 AT32F435遇到的一些“怪”现象 1. 源由2. “怪”现象2.1 电机#4没有RPM转速2.2 遥控器通道10接收机测试失败2.3 OSD 异常2.4 磁力计数据无法获取 3. 参考资料 1. 源由 升级下固件,追下“时髦”,赶下“潮流”,本着“活着就…

MySQL学习路线一条龙

引言 在当前的IT行业,无论是校园招聘还是社会招聘,MySQL的重要性不言而喻。 面试过程中,MySQL相关的问题经常出现,这不仅因为它是最流行的关系型数据库之一,而且在日常的软件开发中,MySQL的应用广泛&#…

蚁剑修改特征性信息

前言 我们首先得知道蚁剑的流量特征: 编码器和解码器的特征:蚁剑自带的编码器和解码器具有明显的特点,可以通过更改配置文件来达到流量加密的目的1。例如,蚁剑支持多种编码方式,如base64、chr、rot13等,这…

LLM 构建Data Multi-Agents 赋能数据分析平台的实践之②:数据治理之二(自动处理)

前述 在前文的multi Agents for Data Analysis的设计说起,本文将继续探索和测试借助llm实现基于私有知识库的数据治理全自动化及智能化。整体设计如下: 整个体系设计了3个Agent以及一个Planer&Execute Agent,第一个Agent用于从企业数据…

【Linux系列】“dev-node1“ 运行的操作系统分析

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Vue3与TypeScript中动态加载图片资源的解决之道

在前端开发中,Vue.js已成为一个备受欢迎的框架,尤其是在构建单页面应用时。Vue3的发布更是带来了许多性能优化和新特性,而TypeScript的加入则进一步提升了代码的可维护性和健壮性。然而,在实际的项目开发中,我们有时会…

牛客NC93 设计LRU缓存结构【hard 链表,Map Java】

题目 题目链接: https://www.nowcoder.com/practice/5dfded165916435d9defb053c63f1e84 思路 双向链表map最新的数据放头结点,尾节点放最老的数据,没次移除尾巴节点本地考察链表的新增,删除,移动节点参考答案Java im…

第六篇: 3.5 性能效果 (Performance)- IAB/MRC及《增强现实广告效果测量指南1.0》

​​​​​​​ 翻译计划 第一篇概述—IAB与MRC及《增强现实广告效果测量指南》之目录、适用范围及术语第二篇 广告效果测量定义和其他矩阵之- 3.1 广告印象(AD Impression)第三篇 广告效果测量定义和其他矩阵之- 3.2 可见性 (Viewability…

正确使用@Autowired

目录 一、前言二、跟着官方文档,学习正确使用Autowired0、实验环境1、通过构造方法进行注入1.1 问题1:那万一没有这个CustomerPreferenceDao对象,会报错吗? 2、通过setter方法注入3、通过方法注入(这个方法可以是任意名…

【Android】apk安装报错:包含病毒: a.gray.BulimiaTGen.f

​ 有时候apk安装或者更新时,显示:[高风险]包含病毒: a.gray.BulimiaTGen.f这种bug; 原因:这是手机管家误报病毒。 处理方法:我看网上其他资料可以进行申诉,也可以进行apk加固,我这边尝试用360…

无参数绕过RCE

一.什么是无参数 顾名思义,就是只使用函数,且函数不能带有参数,这里有种种限制:比如我们选择的函数必须能接受其括号内函数的返回值;使用的函数规定必须参数为空或者为一个参数等 无参数题目特征 if(; preg_replace…

基于小程序+ssm实现的悬赏信息发布系统

作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】:Java 【框架】:ssm 【…

2024年妈妈杯数学建模MathorCup数学建模思路B题思路解析+参考成品

1 赛题思路 (赛题出来以后第一时间在群内分享,点击下方群名片即可加群) 2 比赛日期和时间 报名截止时间:2024年4月11日(周四)12:00 比赛开始时间:2024年4月12日(周五)8:00 比赛结束时间&…

数字人解决方案——Champ单个视频单张图像生成可控且一致的人体视频生成

概述 Champ是阿里巴巴集团、南京大学和复旦大学的研究团队共同提出了一种创新的人体动画生成技术,Champ能够在仅有一段原始视频和一张静态图片的情况下,激活图片中的人物,使其按照视频中的动作进行动态表现,极大地促进了虚拟主播…

【Emgu CV教程】10.12、Moments()函数计算轮廓矩和质心

文章目录 一、概念介绍1.矩2.矩能干什么3.矩函数 二、演示1.原始素材2.代码3.运行结果 一、概念介绍 1.矩 矩,英文叫moment,是一个数学中的概念,以下的解释来自百度百科: 是不是看不懂,没关系,数学基础不…

mysqldump: Got error: 1049: Unknown database ‘root‘ when selecting the datab

1.问题描述 MySQL版本号:MySQL Server 8.3MySQL持久化到处数据库结构及数据 mysqldump: Got error: 1049: Unknown database root when selecting the datab2.问题解决 cmd 切换本地路径 cd /d D:\Program Files\MySQL\MySQL Server 8.3\bin执行数据库备份命令 …