【YOLO系列】YOLOv9论文超详细解读(翻译 +学习笔记)

前言 

时隔一年,YOLOv8还没捂热,YOLO系列最新版本——YOLOv9 终于闪亮登场!

YOLOv9的一作和v7一样。v4也有他。

他于2017年获得台湾省National Central University计算机科学与信息工程博士学位,现在就职于该省Academia Sinica的信息科学研究所。

悄悄说一句,这篇文章的排版是我目前最喜欢的一篇,强迫症福音!

学习资料:

  • 论文题目:《YOLOv9: 利用可编程梯度信息学习你想学习的内容》
  • YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information论文链接:YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information
  • 开源项目:GitHub - WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information

YOLO论文系列前期回顾: 

【YOLO系列】YOLOv7论文超详细解读(翻译 +学习笔记)

【YOLO系列】YOLOv6论文超详细解读(翻译 +学习笔记)

【YOLO系列】YOLOv5超详细解读(网络详解)

【YOLO系列】YOLOv4论文超详细解读2(网络详解)

【YOLO系列】YOLOv4论文超详细解读1(翻译 +学习笔记)

【YOLO系列】YOLOv3论文超详细解读(翻译 +学习笔记)

【YOLO系列】YOLOv2论文超详细解读(翻译 +学习笔记)

【YOLO系列】YOLOv1论文超详细解读(翻译 +学习笔记)


目录

前言 

Abstract—摘要

翻译

精读

1. Introduction—简介

翻译

精读

2. Related work—相关工作

2.1. Real-time Object Detectors—实时目标检测器

翻译

精读

2.2. Reversible Architectures—可逆结构

翻译

精读

2.3. Auxiliary Supervision—辅助监督

翻译

精读

3. Problem Statement—问题描述

翻译

精读

3.1. Information Bottleneck Principle—信息瓶颈原理

翻译

精读

3.2. Reversible Functions—可逆函数

翻译

精读

 4. Methodology—方法

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

翻译

精读 

4.1.1 Auxiliary Reversible Branch—辅助可逆分支

翻译

精读

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

翻译

精读

4.2. Generalized ELAN—广义ELAN

翻译

精读

5. Experiments—实验

5.1. Experimental Setup—实验设置

翻译

精读

5.2. Implimentation Details—实现细节

翻译

精读

5.3. Comparison with state-of-the-arts—与最先进水平的比较

翻译

精读

5.4. Ablation Studies—消融实验

5.4.1 Generalized ELAN—广义ELAN(实验)

翻译

精读 

5.4.2 Programmable Gradient Information—可编程梯度信息(实验)

翻译

精读

5.5. Visualization—可视化

翻译

精读

6. Conclusions—结论

翻译

精读


Abstract—摘要

翻译

当今的深度学习方法专注于设计最合适的目标函数,以使模型的预测结果与实际情况最接近。同时,必须设计一个合适的架构,以便获取足够的信息进行预测。现有方法忽略了一个事实,即当输入数据经过逐层特征提取和空间变换时,大量信息将会丢失。本文将深入探讨当数据通过深度网络传输时的数据丢失重要问题,即信息瓶颈和可逆函数。我们提出了可编程梯度信息(PGI)的概念,以处理深度网络所需的各种变化,以实现多个目标。PGI可以为目标任务提供完整的输入信息来计算目标函数,从而获得可靠的梯度信息以更新网络权重。此外,基于梯度路径规划设计了一种新的轻量级网络架构——广义高效层聚合网络(GELAN)。GELAN的架构证实了PGI在轻量级模型上取得了优异的结果。我们在基于MS COCO数据集的目标检测上验证了提出的GELAN和PGI。结果显示,GELAN仅使用常规卷积算子即可实现比基于深度卷积开发的最先进方法更好的参数利用率。PGI可用于各种模型,从轻量级到大型。它可用于获取完整信息,使得从头开始训练的模型可以获得比使用大型数据集预训练的最先进模型更好的结果,比较结果如图1所示。源代码可在以下网址找到:https://github.com/WongKinYiu/yolov9。


精读

传统深度学习方法的不足

深度网络输入数据在逐层进行特征提取和空间变换时,会丢失大量的信息

本文主要解决问题

针对数据在传输时的信息丢失问题,研究问题如下:

(1)提出了可编程梯度信息(PGI)的概念,以应对深度网络实现多个目标所需的各种变化。

(2)设计了一种新的基于梯度路径规划的轻量级网络结构——广义高效层聚合网络(GELAN)

本文取得成果

(1)在基于MS COCO数据集的目标检测上验证了提出的GELAN和PGI。

(2)GELAN仅使用常规卷积算子可以获得更好的参数利用率

(3)PGI可用于从轻型到大型的各种模型,并且可以用来获取完整的信息,使得从头开始训练的模型比使用大数据集预训练的最先进的模型获得更好的结果。

图1.MS COCO数据集上实时目标检测器的比较。基于GELAN和pgi的目标检测方法在目标检测性能上超越了以往所有从头开始训练的方法。在精度方面,新方法优于大数据集预训练的RT DETR[43],在参数利用率方面也优于基于深度卷积的设计YOLO MS[7]。

1. Introduction—简介

翻译

基于深度学习的模型在各个领域,如计算机视觉、语言处理和语音识别等方面,已经展示出远远优于过去人工智能系统的性能。近年来,深度学习领域的研究人员主要关注如何开发更强大的系统架构和学习方法,例如CNNs、Transformers、Perceivers和Mambas等。此外,一些研究人员尝试开发更通用的目标函数,如损失函数、标签分配和辅助监督等。上述研究都试图精确地找到输入和目标任务之间的映射关系。然而,大多数过去的方法忽视了在前向传播过程中输入数据可能会存在大量信息丢失的事实。这种信息丢失会导致偏倚的梯度流,随后用于更新模型。上述问题可能导致深度网络建立目标与输入之间的错误关联,使得训练模型产生不正确的预测。

在深度网络中,输入数据在前向传播过程中丢失信息的现象通常被称为信息瓶颈,其示意图如图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数据集上的目标检测性能在各个方面大大超过了现有的实时目标检测器。

精读

研究背景1:目标检测

  • 基于GELAN和PGI的目标检测方法逐渐流行,超越了传统方法。
  • 在精度方面,新方法优于大数据集预训练的RT DETR。
  • 在参数利用率方面,也优于基于深度卷积的设计YOLO MS。

存在的问题:

  • 过去的大部分方法忽略了在前馈过程中输入数据可能存在的信息损失。
  • 这种信息丢失可能导致梯度流的偏差,并且可能会导致深度网络在目标和输入之间建立不正确的关联,从而导致训练模型出现不正确的预测。

研究背景2:信息瓶颈

目前解决方法:

  • 可逆架构
  • 掩模建模
  • 引入深度监督概念

存在的问题:

  • 可逆架构——需要额外的层来组合重复输入的数据,这将增加推理成本,并且在训练过程中难以对高阶语义信息进行建模。
  • 掩模建模——重建损失有时与目标损失相冲突。此外,大多数掩码机制也会与数据产生不正确的关联。
  • 深层监督机制——会产生误差积累。

可编程梯度信息(PGI)

思想: 通过辅助可逆分支生成可靠的梯度,使深层特征仍能保持关键特征以执行目标任务。

目的: 辅助可逆分支的设计可以避免传统的多路径特征融合深度监督过程可能造成的语义损失


广义ELAN (GELAN)

思想: GELAN的设计同时考虑了参数数量计算复杂度精度和推理速度

目的: 这种设计允许用户为不同的推理设备任意选择合适的计算块


本文主要贡献

通过对现有深度神经网络架构进行理论分析,从可逆函数的角度解释了许多以前难以理解的现象。通过引入PGI和辅助可逆支路,实现了良好的效果。

  1. PGI解决了深度监督只适用于极深度神经网络架构的限制,使新的轻量级架构真正适用于日常生活中。
  2. 结合PGI和GELAN,YOLOv9在MS COCO数据集上在实时目标检测方面在各个方面都明显超过了现有的目标检测器
  3. GELAN是一种仅使用常规卷积的设计,具有比基于最先进技术的深度卷积设计更高的参数利用率,并显示出轻量、快速和准确的巨大优势。

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成为新一代顶级实时目标检测器。


精读

  • YOLO系列(YOLOv1—v8)
  • DETR系列

2.2. Reversible Architectures—可逆结构

翻译

可逆架构的操作单元[3, 16, 19]必须保持可逆转换的特性,以确保每个操作单元层的输出特征图能够保留完整的原始信息。在此之前,RevCol [3]将传统的可逆单元泛化至多个层级,从而可以扩展不同层单元所表达的语义层级。通过对各种神经网络架构的文献综述,我们发现有许多具有不同程度可逆属性的高性能架构。例如,Res2Net模块[11]以分层方式将不同的输入分区与下一个分区组合,然后将所有转换后的分区连接在一起反向传递。CBNet [34, 39]通过复合主干重新引入原始输入数据,以获得完整的原始信息,并通过各种组合方法获得不同级别的多级可逆信息。这些网络架构通常具有出色的参数利用率,但额外的复合层会导致推理速度较慢。DynamicDet [36]将CBNet [34]和高效实时目标检测器YOLOv7 [63]结合起来,以在速度、参数数量和准确性之间取得很好的平衡。本文将DynamicDet架构引入作为设计可逆分支的基础。此外,可逆信息还进一步引入到提出的PGI中。提出的新架构在推理过程中不需要额外的连接,因此能充分保留速度、参数数量和准确性的优势。


精读

  • RevCol
  • Res2Net
  • CBNet
  • DynamicDet

2.3. Auxiliary Supervision—辅助监督

翻译

深度监督[28, 54, 68]是最常见的辅助监督方法,通过在中间层插入额外的预测层进行训练。特别是在基于Transformer的方法中引入多层解码器的应用最为常见。另一种常见的辅助监督方法是利用相关的元信息指导中间层生成的特征图,并使其具有目标任务所需的属性[18, 20, 24, 29, 76]。这种类型的示例包括使用分割损失或深度损失来增强目标检测器的准确性。最近,文献中有很多关于使用不同的标签分配方法生成不同的辅助监督机制以加快模型收敛速度并同时提高鲁棒性的报道[53, 67, 82]。然而,辅助监督机制通常仅适用于大型模型,因此当应用于轻量级模型时,很容易导致欠参数化现象,使性能变差。我们提出的PGI设计了一种重新编程多层语义信息的方式,这种设计使得轻量级模型也能从辅助监督机制中受益。


精读

  • 深度监督

3. Problem Statement—问题描述

翻译

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

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


精读

主要解决问题

深度神经网络存在收敛速度慢或收敛效果差的问题。

推断

这个问题的根本原因是原本来自非常深的网络的初始梯度在传输后不久就丢失了大量实现目标所需的信息。

可视化分析

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

3.1. Information Bottleneck Principle—信息瓶颈原理

翻译

根据信息瓶颈原理,我们知道数据 X 在经过转换时可能会引起信息损失,如下所示的方程式 

I(X,X)\geq I(X,f\theta (X))\geq I(X,g\phi (f\theta (X)))\: \: \: \: \: \: \: \: \: \: (1)

其中,I 表示互信息,f 和 g 是转换函数,θ 和 ϕ 分别是 f 和 g 的参数。

在深度神经网络中,fθ(·) 和 gϕ(·) 分别代表深度神经网络中两个连续层的操作。从方程式 1 中,我们可以预测随着网络层的增加,原始数据更有可能丢失。然而,深度神经网络的参数是基于网络输出以及给定目标,然后通过计算损失函数生成新的梯度更新网络。可以想象,深层神经网络的输出能力较低,无法完整地保留有关预测目标的信息。这将导致在网络训练过程中使用不完整信息,导致不可靠的梯度和收敛困难。

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


精读

公式1:数据X在进行变换时可能会造成信息丢失

  • X:输入数据
  • I:互信息
  • f和g:变换函数
  • θ和φ:f和g的参数
  • fθ(·)和gϕ(·):表示深度神经网络中连续两层的操作

预测结果:随着网络层数的加深,原始数据丢失的可能性也会增大。

信息瓶颈原理

网络在训练中使用信息(得到的输入信息)是不完整的,从而导致梯度不可靠,收敛性差。

方法尝试

直接增加模型的大小。

不足:不能从根本上解决极深神经网络中梯度不可靠的问题。


3.2. Reversible Functions—可逆函数

翻译

当一个函数 r 具有反向转换函数 v 时,我们称这个函数为可逆函数,如方程式 2 所示:

X=v\zeta (r\psi (X))\, \, \, \: \: \: \: (2)

其中,ψ 和 ζ 分别是 r 和 v 的参数。数据 X 经可逆函数转换后不会丢失信息,如方程式 3 所示:

I(X,X)=I(X,r\psi (X))=I(X,v\zeta (r\psi (X)))\: \: \: \: \: (3)

当网络的转换函数由可逆函数组成时,可以获得更可靠的梯度来更新模型。几乎所有当今流行的深度学习方法都符合可逆性质,如方程式 4:

X^{l+1}=X^{l}+f_{\theta }^{l+1}(X_{l})\; \; \; \; \; (4)

其中 l 表示 PreAct ResNet 的第 l 层,f 是第 l 层的变换函数。PreAct ResNet 通过明确的方式将原始数据 X 重复传递给后续层。尽管这样的设计可以使具有超过一千层的深度神经网络非常好地收敛,但它破坏了我们需要深度神经网络的一个重要原因。即,对于困难问题,我们难以直接找到简单的映射函数将数据映射到目标。这也解释了为什么在层数较少时,PreAct ResNet 的表现不如 ResNet。

此外,我们尝试使用允许变压器模型取得重大突破的蒙版建模。我们使用近似方法,如方程式 5,试图找到函数 r 的反向转换 v,使得转换后的特征能够保留足够的信息使用稀疏特征。方程式 5 的形式如下:

X=v\varsigma (r\psi (X)\cdot M)\: \: \: \: (5)

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

I(X,X)\geq I(Y,X)\geq I(Y,f\theta (x))\geq ...\geq I(Y,\hat{Y})\; \; \; \; (6)

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


精读

公式2:可逆函数原理

  • r:可逆函数
  • v:逆变换函数
  • ψ和ζ:分别是r和v的参数

公式3:数据X用可逆函数变换,不丢失信息

公式4:一个符合可逆性质的架构的深度学习网络的栗子

  • PreAct ResNet以显式的方式将原始数据X反复传递给后续层
  • l:PreAct ResNet的第l层
  • f:第l层的变换函数

公式5:试图找到r的逆变换v,使变换后的特征可以使用稀疏特征保留足够的信息

  • M:动态二进制掩码

不足:轻量级模型将被参数化为大量的原始数据。

公式6:信息瓶颈的计算公式

I(Y,X)只占I(X,X)的很小一部分,但对目标任务至关重要。


思路

即使前馈阶段丢失的信息量并不显著,但只要覆盖了I(Y,X),训练效果就会受到很大影响。

目标

轻量级模型的目标:如何准确地从I(X,X)中过滤出I(Y,X)。

本文目标

提出一种新的深度神经网络训练方法,既能生成可靠的梯度来更新模型,又能适用于浅层和轻量级神经网络。


 4. Methodology—方法

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

翻译

为了解决前述问题,我们提出了一个名为可编程梯度信息(PGI)的新辅助监督框架,如图 3(d)所示。PGI 主要包括三个组件,分别是主分支、辅助可逆分支和多级辅助信息。从图 3(d)中可见,PGI 的推理过程只使用主分支,因此不需要额外的推理成本。至于另外两个组件,它们用于解决或减缓深度学习方法中的几个重要问题。其中,辅助可逆分支设计用于处理由神经网络加深引起的问题。网络加深将导致信息瓶颈,这将使损失函数无法生成可靠的梯度。至于多级辅助信息,它设计用于处理深度监督造成的错误累积问题,特别适用于多个预测分支的架构和轻量级模型。接下来,我们将逐步介绍这两个组件。


精读 

可编程梯度信息(Programmable Gradient Information, PGI)

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

PGI主要包括三个部分,即:

(1)主分支(用于推理过程)

(2)辅助可逆分支(用于解决神经网络深度化带来的问题)

(3)多级辅助信息(用于处理深度监督带来的误差积累问题,特别是针对多预测分支的架构和轻量化模型。)


4.1.1 Auxiliary Reversible Branch—辅助可逆分支

翻译

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

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

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


精读

引入可逆体系结构的不足

在可逆体系结构中增加主干会消耗大量的推理成本,推理时间将增加20%。

可逆结构在浅层网络上的表现比一般网络差。

本文做法

将可逆分支作为深度监管分支的扩展,然后设计辅助可逆分支,如图3 (d)所示。

  • 优点1: 在一些主要分支中可能因信息瓶颈的bug而丢失重要信息,而本文的方法能够从辅助可逆分支接收驱动参数学习,帮助提取正确的重要信息。
  • 优点2: 不强制主分支保留完整的原始信息,而是通过辅助监督机制生成有用的梯度来更新原始信息。所提的方法也可以应用于较浅的网络。
  • 优点3: 辅助可逆分支可以在推理阶段去除,因此可以保留原始网络的推理能力。
  • 优点4: 可以在PGI中选择任意可逆体系结构来充当辅助可逆分支的角色。

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

翻译

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

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


精读

深度监督分支工作原理

目标检测中,可以使用不同的特征金字塔来执行不同的任务,例如它们可以一起检测不同大小的对象。

不足:

会导致深层特征金字塔丢失大量预测目标物体所需的信息

多级辅助信息的概念

  • 在辅助监督的特征金字塔层次和主分支之间插入一个集成网络,然后利用它来组合不同预测头返回的梯度。
  • 多级辅助信息将包含所有目标对象的梯度信息聚合,传递给主分支,再更新参数。

优点:

  • 该方法可以缓解深度监督中的信息破碎问题。
  • 任何集成网络都可以使用多层次的辅助信息。

4.2. Generalized ELAN—广义ELAN

翻译

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


精读

图 4. GELAN 的架构: (a) CSPNet [64], (b) ELAN [65], 和 (c) 提出的 GELAN。我们模仿了 CSPNet 并将 ELAN 扩展为支持任何计算块的 GELAN。

作者把 CSPNet、 ELAN 这两种神经网络架构结合起来,从而设计出兼顾轻量级、推理速度和准确性的通用高效层聚合网络(generalized efficient layer aggregation network ,GELAN)。

将最初仅使用卷积层堆叠的 ELAN 的功能泛化到可以使用任何计算块的新架构。


5. Experiments—实验

5.1. Experimental Setup—实验设置

翻译

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


精读

  • 数据集: MS COCO 2017拆分
  • 实验设置: 遵循YOLOv7 AF
  • 训练次数: 500
  • 学习率: 前3个epoch采用线性预热,之后的epoch根据模型尺度设置相应的衰减方式。对于最后15个epoch,我们关闭马赛克数据增强。

5.2. Implimentation Details—实现细节

翻译

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


精读

基础构件: 分别基于YOLOv7和Dynamic YOLOv7构建了通用版和扩展版yolov9。

网络架构设计: 使用CSPNet块和计划的RepConv作为计算块,将ELAN替换为GELAN。


5.3. Comparison with state-of-the-arts—与最先进水平的比较

翻译

表格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相同的准确性。

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


精读

表1:最先进的实时目标探测器的比较

  • 与轻量化和中型型号YOLO MS相比:参数减少约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%。

图5:加入了ImageNet预训练模型进行比较

图5.最先进的实时目标探测器的比较。参与比较的方法均使用ImageNet作为预训练权值,包括RT DETR[43]、RTMDet[44]、PP-YOLOE[74]等。使用从头开始训练方法的YOLOv9的性能明显优于其他方法。
  • 参数利用率方面:使用常规卷积的YOLOv9甚至比使用深度卷积的yoloms更好。
  • 在大型模型的参数利用率方面:大大超过了使用ImageNet预训练模型的RT - DETR。

5.4. Ablation Studies—消融实验

5.4.1 Generalized ELAN—广义ELAN(实验)

翻译

对于 GELAN,我们首先对计算块进行了消融研究。我们分别使用了 Res 块 [21]、Dark 块 [49] 和 CSP 块 [64] 进行实验。如表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}}。


精读 

表2:不同计算块的消融研究

在不同的计算块替换中,CSP块执行得特别好。它们不仅减少了参数和计算量,而且使AP提高了0.7%。

表3:ELAN和CSP深度的消融研究

GELAN对深度不敏感。换句话说,用户可以任意组合GELAN中的组件来设计网络架构,无需特别设计就能得到性能稳定的模型。


5.4.2 Programmable Gradient Information—可编程梯度信息(实验)

翻译

关于 PGI,我们对主干和颈部进行了辅助可逆分支和多层次辅助信息的消融研究。我们设计了辅助可逆分支 ICN,使用 DHLC [34] 连接获得多级可逆信息。至于多层次辅助信息,我们使用 FPN 和 PAN 进行消融研究,而 PFH 的作用相当于传统的深层监督。所有实验结果列在表4中。从表4中可以看出,PFH 只在深度模型中有效,而我们提出的 PGI 可以在不同组合下提高准确性。特别是在使用 ICN 时,我们获得了稳定且更好的结果。我们还尝试将 YOLOv7 [63] 中提出的前导头引导分配方法应用于 PGI 的辅助监督,结果表现更加优秀。

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

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


精读

表4:主干及颈部PGI的消融研究

PFH仅在深度模型中有效,而我们提出的PGI在不同组合下都可以提高精度。

表5:PGI的消融研究

所提出的PGI能够有效处理信息瓶颈、信息破碎等问题,全面提高不同尺寸模型的精度。


5.5. Visualization—可视化

翻译

这一部分将探讨信息瓶颈问题并对其进行可视化。此外,我们还将展示提出的 PGI 如何利用可靠的梯度来找到数据和目标之间的正确关系。在图 6 中,我们展示了在不同架构下使用随机初始权重作为前向传播获取到的特征图的可视化结果。我们可以看到随着层数的增加,所有架构的原始信息逐渐减少。例如,在 PlainNet 的第 50 层,很难看出物体的位置,在第 100 层所有可分辨的特征都会丢失。至于 ResNet,虽然在第 50 层仍然能看到物体的位置,但边界信息已经丢失。当深度达到第 100 层时,整个图像变得模糊。无论是 CSPNet 还是提出的 GELAN 都表现出色,它们都能保持特征以支持对物体的清晰识别,直到第 200 层。在比较中,GELAN 的结果更稳定,边界信息更清晰。 图 7 用于展示 PGI 是否能在训练过程中提供更可靠的梯度,以便用于更新的参数能够有效捕获输入数据和目标之间的关系。

图 7 显示了在 PAN 偏置预热中,GELAN 和 YOLOv9(GELAN + PGI)的特征图的可视化结果。通过比较图 7(b) 和 (c),我们可以清楚地看到 PGI 准确简洁地捕捉到包含物体的区域。至于不使用 PGI 的 GELAN,我们发现在检测对象边界时存在发散,并且在某些背景区域还产生了意料之外的响应。这个实验证实了 PGI 确实能够提供更好的梯度来更新参数,并使主分支的前向传播阶段保留更多重要特征。


精读

图6:在不同架构下使用随机初始权重作为前馈得到的特征图的可视化结果

图6.PlainNet、ResNet、CSPNet、GELAN在不同深度随机初始权值输出的特征图(可视化结果)。在100层之后,ResNet开始产生前馈输出,足以混淆对象信息。我们提出的GELAN到150层仍然可以保留相当完整的信息,到200层仍然具有足够的判别能力。

随着层数的增加,所有架构的原始信息逐渐减少。在比较中,GELAN的结果更稳定,边界信息更清晰。

图7:PGI在训练过程中是否能够提供更可靠的梯度

图7.偏置预热一历元后,GELAN和YOLOv9 (GELAN + PGI)的PAN特征图(可视化结果)。GELAN原本有一些分歧,但在加入PGI的可逆分支后,它更能聚焦于目标物体。

本实验证实了PGI确实可以提供更好的梯度来更新参数,使主分支的前馈阶段保留更重要的特征。


6. Conclusions—结论

翻译

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


精读

本文设计了一种高效、轻量级的神经网络GELAN。在目标检测方面,在不同的计算块和深度设置下,GELAN具有强大而稳定的性能。

它确实可以广泛地扩展成适用于各种推理装置的模型。由PGI和GELAN联合设计的YOLOv9表现出了很强的竞争力。

与YOLOv8相比,其出色的设计使深度模型的参数数量减少了49%,计算量减少了43%,但在MS COCO数据集上仍有0.6%的AP改进。 


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

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

相关文章

Maya笔记 软选择

文章目录 1什么是软选择2注意3如何打开软选择3.1方法一3.2方法二 4调整软选择的范围5衰减模式5.1体积模式5.2表面模式 6衰减曲线 1什么是软选择 也就是渐变选择,从中心点向外影响力度越来越小 软选择针对的是点线面这些模型元素 下图中展示了对被软选择的区域移动…

Rust泛型与trait特性,模仿接口的实现

泛型是一个编程语言不可或缺的机制。 C 语言中用"模板"来实现泛型,而 C 语言中没有泛型的机制,这也导致 C 语言难以构建类型复杂的工程。 泛型机制是编程语言用于表达类型抽象的机制,一般用于功能确定、数据类型待定的类&#xf…

Flink StreamGraph生成过程

文章目录 概要SteramGraph 核心对象SteramGraph 生成过程 概要 在 Flink 中,StreamGraph 是数据流的逻辑表示,它描述了如何在 Flink 作业中执行数据流转换。StreamGraph 是 Flink 运行时生成执行计划的基础。 使用DataStream API开发的应用程序&#x…

SQL server内存问题排查方案

前言 由于昨晚线上服务器数据库突然访问数据缓慢,任务管理里面SQL server进程爆满等等,重大事故的排查拟写解决方案。 整体思路 查询数据库请求连接:排查连接池是否占满查询数据库请求量:排查数据是否存在反复查询查询数据库阻…

【Hadoop大数据技术】——HDFS分布式文件系统(学习笔记)

📖 前言:Hadoop的核心是HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)和MapReduce。其中,HDFS是解决海量大数据文件存储的问题,是目前应用最广泛的分布式文件系统。 目录 &#x…

C++复习笔记——泛型编程模板

01 模板 模板就是建立通用的模具,大大提高复用性; 02 函数模板 C另一种编程思想称为 泛型编程 ,主要利用的技术就是模板 C 提供两种模板机制:函数模板和类模板 函数模板语法 函数模板作用: 建立一个通用函数,其函…

NextJs教程系列(一):介绍安装

什么是 Next.js Next.js 是一个用于构建全栈 Web 应用程序的 React 框架。您可以使用 React 组件来构建用户界面,并使用 Next.js 来构建其他功能和优化。 Next.js 的特点 构建全栈 Web 应用程序的 React 框架。为 React 提供了开箱即用的服务器端渲染。为 React …

基于java SSM的房屋租赁系统设计和实现

基于java SSM的房屋租赁系统设计和实现 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式…

使用Jenkins CI/CD和Gitee webhooks发布前端自定义组件库到npm

通过之前的学习,沉淀出了一套自定义公共组件库,现在要实现将其通过Jenkins的CICD 推送代码到npm上 一、配置npm (服务器命令行窗口上配置) 1.设置官方网址 npm config set registry https://registry.npmjs.org/2.登录&#xf…

智慧城市中的数据力量:大数据与AI的应用

目录 一、引言 二、大数据与AI技术的融合 三、大数据与AI在智慧城市中的应用 1、智慧交通 2、智慧环保 3、智慧公共安全 4、智慧公共服务 四、大数据与AI在智慧城市中的价值 1、提高城市管理的效率和水平 2、优化城市资源的配置和利用 3、提升市民的生活质量和幸福感…

四节点/八节点四边形单元悬臂梁Matlab有限元编程 | 平面单元 | Matlab源码 | 理论文本

专栏导读 作者简介:工学博士,高级工程师,专注于工业软件算法研究本文已收录于专栏:《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现,并提供所有案例完整源码;2.单元…

微服务获取登录用户Id与单体服务下获取用户Id对比(黑马头条Day03)

前置声明 当前前后端分离开发项目中,后端某个请求向具体某个数据库中的多个表插入数据时,经常需要使用到当前登录用户的Id(唯一标识)。在当前用户线程下以实现变量共享,同时为了避免不同用户线程之间操作变量的影响&am…