YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information

paper: https://arxiv.org/abs/2402.13616
code

YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information

  • 一、引言部分
  • 二、问题分析
    • 2.1 信息瓶颈原理
    • 2.2 可逆函数
  • 三、本文方法
    • 3.1 可编程梯度信息
  • 四、实验
    • 4.1消融实验部分

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

一、引言部分

近年来,随着计算机视觉的发展,大多数的方法都忽略了输入数据在前馈过程中可能具有不可忽略的信息损失。这种信息的丢失会导致有偏差的梯度流,这些梯度流随后被用来更新模型。上述问题可能导致深度网络在目标和输入之间建立不正确的关联,从而导致训练模型产生不正确的预测。
在深度网络中,输入数据在前馈过程中丢失信息的现象通常被称为信息瓶颈。其原理图如下图所示。在这里插入图片描述
目前,缓解这一现象的主要方法有。(1)使用可逆架构:该方法主要利用重复输入数据,并以显式的方式维护输入数据的信息;(2)使用掩模建模:主要利用重构损失,采用隐式方式最大限度地提取特征并保留输入信息;(3)引入深度监督的概念:它利用没有丢失太多重要信息的浅层特征,预先建立特征到目标的映射,保证重要信息能够传递到更深层。
然而,上述方法在训练过程和推理过程中都有不同的缺点。例如,可逆架构需要额外的层来组合重复输入的数据,这将显著增加推理成本。此外,由于输入数据层到输出层不能有太深的路径,这一限制将使在训练过程中难以对高阶语义信息进行建模。对于掩模建模,其重建损失有时与目标损失相冲突。此外,大多数掩码机制也会与数据产生不正确的关联。对于深层监督机制,会产生误差积累,如果浅层监督在训练过程中丢失信息,后续层将无法检索到所需的信息。上述现象在难度较大的任务和较小的模型上更为明显。
为了解决上述问题,作者提出了一个新的概念,即可编程梯度信息(PGI)。其思想是通过辅助可逆分支生成可靠的梯度,使深层特征仍能保持关键特征以执行目标任务。
辅助可逆分支的设计可以避免传统的多路径特征融合深度监督过程可能造成的语义损失。在不同的语义层次上对梯度信息传播进行编程,从而获得最佳的训练结果。PGI的可逆结构构建在辅助分支上,所以没有额外的参数开销。
由于PGI可以自由选择适合目标任务的损失函数,它也克服了掩模建模所遇到的问题。所提出的PGI机制可以应用于各种规模的深度神经网络,并且比深度监督机制更通用,而深度监督机制只适用于非常深度的神经网络。
这篇文章的贡献如下:
1、从可逆函数的角度对现有的深度神经网络架构进行了理论分析,并通过这一过程成功地解释了许多过去难以解释的现象。在此基础上设计了PGI和辅助可逆分支。
2、设计的PGI解决了深度监督只能用于极深度神经网络架构的问题,从而使新的轻量级架构真正应用于日常生活中。
3、GELAN仅使用常规卷积,实现了比基于最先进技术的深度卷积设计更高的参数使用率,同时显示出轻、快、准的巨大优势。

二、问题分析

通常,人们将深度神经网络收敛问题的困难归因于梯度消失或梯度饱和等因素,这些现象在传统的深度神经网络中确实存在。而现代深度神经网络通过设计各种归一化和激活函数,已经从根本上解决了上述问题。然而,深度神经网络仍然存在收敛速度慢或收敛效果差的问题。
通过对信息瓶颈的深入分析,作者推断出这个问题的根本原因是原本来自非常深的网络的初始梯度在传输后不久就丢失了大量实现目标所需的信息。为了证实这一推断,作者对具有初始权重的不同架构的深度网络进行前馈,结果如下图所示。
在这里插入图片描述
显然,PlainNet丢失了许多深层目标检测所需的重要信息。至于ResNet、CSPNet和GELAN能保留的重要信息比例,确实与训练后能获得的准确率呈正相关。我们进一步设计了基于可逆网络的方法来解决上述问题的原因。

2.1 信息瓶颈原理

根据信息瓶颈原理,数据X在进行变换时可能会造成信息丢失,如下式1所示:
在这里插入图片描述
式中, I I I为交互信息, f f f g g g为变换函数, θ θ θ φ φ φ分别为 f f f g g g的参数。

在深度神经网络中, f θ ( ⋅ ) fθ(·) fθ() g ϕ ( ⋅ ) gϕ(·) gϕ()分别表示深度神经网络中连续两层的操作。从上式中可以看出,随着网络层数的加深,原始数据丢失的可能性也会增大。然而,深度神经网络的参数是基于网络的输出以及给定的目标,然后通过计算损失函数产生新的梯度后更新网络。
可以想象,深度神经网络的输出不太能够保留关于预测目标的完整信息。这将使得在网络训练中使用不完全信息成为可能,从而导致梯度不可靠,收敛性差。
解决上述问题的一种方法是直接增加模型的大小。当使用大量的参数来构建模型时,它更有能力对数据进行更完整的转换。上述方法允许即使在数据前馈过程中丢失信息,仍然有机会保留足够的信息来执行到目标的映射。
上述现象解释了为什么在大多数现代模型中,宽度比深度更重要。然而,上述结论并不能从根本上解决极深神经网络中梯度不可靠的问题。
下面将介绍如何使用可逆函数来解决问题并进行相关分析。

2.2 可逆函数

当一个函数 r r r有一个逆变换函数 v v v时,称这个函数为可逆函数,如下式所示。
在这里插入图片描述
其中 ψ ψ ψ ζ ζ ζ分别是 r r r v v v的参数。数据 X X X用可逆函数变换,不丢失信息,如下式所示。

在这里插入图片描述
当网络的变换函数由可逆函数组成时,可以得到更可靠的梯度来更新模型。几乎所有的今天流行深度学习方法是符合可逆性质的架构,如下式所示:
在这里插入图片描述
式中, l l l为PreAct ResNet的第 l l l层, f f f为第 l l l层的变换函数。PreAct ResNet以显式的方式将原始数据X反复传递给后续层。虽然这样的设计可以使一千多层的深度神经网络很好地收敛,但它破坏了我们需要深度神经网络的一个重要原因。也就是说,对于困难的问题,很难直接找到简单的映射函数将数据映射到目标。这也解释了为什么PreAct ResNet在层数较少的情况下性能比ResNet差。
此外,作者尝试使用屏蔽建模,使变压器模型实现重大突破。使用如下式近似方法,试图找到r的逆变换v,使变换后的特征可以使用稀疏特征保留足够的信息。
在这里插入图片描述
其中 M M M为动态二进制掩码。通常用于执行上述任务的其他方法是扩散模型和变分自编码器,它们都具有查找反函数的功能。然而,当上述方法应用于轻量级模型时,将存在缺陷,因为轻量级模型将被参数化为大量的原始数据。由于上述原因,将数据 X X X映射到目标 Y Y Y的重要信息 I ( Y , X ) I(Y, X) I(Y,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),训练效果就会受到很大影响。轻量化模型本身处于参数化不足的状态,在前馈阶段容易丢失大量重要信息。因此,作者对轻量化模型的目标是如何准确地从 I ( X , X ) I(X, X) I(X,X)中过滤出 I ( Y , X ) I(Y, X) I(Y,X),而要完全保留 X X X的信息,这是很难做到的。基于以上分析,作者希望提出一种新的深度神经网络训练方法,既能生成可靠的梯度来更新模型,又能适用于浅量和轻量神经网络。

三、本文方法

3.1 可编程梯度信息

为了解决上述问题,作者提出了一种新的辅助监督框架,称为可编程梯度信息(Programmable Gradient Information, PGI),如下图(d)所示。PGI主要包括三个部分,即(1)主分支,(2)辅助可逆分支,(3)多级辅助信息。从下图 (d)可以看出,PGI的推理过程只使用了主干分支,因此不需要任何额外的推理成本。
在这里插入图片描述
至于其他两个组件,它们用于解决或减缓深度学习方法中的几个重要问题。其中,设计了辅助可逆分支来解决神经网络深度化带来的问题。网络深化会造成信息瓶颈,使损失函数无法产生可靠的梯度。对于多级辅助信息,设计用于处理深度监督带来的误差积累问题,特别是针对多预测分支的架构和轻量化模型。
(1)辅助可逆分支
在PGI中,作者提出了辅助可逆分支来生成可靠的梯度和更新网络参数。通过提供从数据到目标的映射信息,损失函数可以提供指导,并避免从与目标不太相关的不完整前馈特征中发现虚假关联的可能性。作者提出通过引入可逆体系结构来维护完整的信息,但是在可逆体系结构中增加主干会消耗大量的推理成本。作者分析了下图(b)的架构,发现当添加从深层到浅层的额外连接时,推理时间将增加20%。将输入数据反复添加到网络的高分辨率计算层(黄色框)时,推理时间甚至超过了时间的两倍。
在这里插入图片描述
由于使用可逆架构是来获得可靠的梯度,因此“可逆”并不是推理阶段的唯一必要条件。鉴于此,作者将可逆分支作为深度监督分支的扩展,然后设计辅助可逆分支,如上图(d)所示。对于因信息瓶颈而丢失重要信息的主分支深度特征,将能够从辅助可逆分支接收到可靠的梯度信息。
这些梯度信息将驱动参数学习,帮助提取正确的重要信息,以上动作可以使主分支获得对目标任务更有效的特征。此外,可逆结构在浅层网络上的表现比一般网络差,因为复杂的任务需要在深层网络中进行转换。作者提出的方法并不强制主分支保留完整的原始信息,而是通过辅助监督机制生成有用的梯度来更新原始信息。这种设计的优点是,所提出的方法也可以应用于较浅的网络。
最后,由于在推理阶段可以去除辅助可逆分支,因此可以保留原始网络的推理能力。也可以在PGI中选择任意可逆体系结构来充当辅助可逆分支的角色。
(2)多级辅助信息
在本节中将讨论多层辅助信息是如何工作的。包含多个预测分支的深度监督架构如下图©所示。对于对象检测,可以使用不同的特征金字塔来执行不同的任务,例如它们可以一起检测不同大小的对象。因此,在连接到深度监督分支后,将引导浅层特征学习小目标检测所需的特征,此时系统将其他大小目标的位置作为背景。然而,上述行为会导致深层特征金字塔丢失大量预测目标物体所需的信息。对于这个问题,作者认为每个特征金字塔都需要接收到所有目标对象的信息,这样后续的主干分支才能保留完整的信息来学习对各种目标的预测。
在这里插入图片描述
多级辅助信息的概念是在辅助监督的特征金字塔层次层和主分支之间插入一个集成网络,然后利用它来组合来自不同预测头的返回梯度,如上图(d)所示。多级辅助信息就是将包含所有目标对象的梯度信息进行聚合,传递给主分支,然后更新参数。此时,主要分支的特征金字塔层次结构的特征就不会被某些特定对象的信息所支配。因此,该方法可以缓解深度监督中的信息破碎问题。此外,任何集成网络都可以使用多层次的辅助信息。因此,可以规划所需的语义层次来指导不同规模的网络架构的学习。
(3)广义ELAN
通过结合CSPNet和ELAN这两种采用梯度路径规划设计的神经网络架构,设计了兼顾轻量级、推理速度和准确性的广义高效层聚合网络(GELAN)。它的整体架构如下图所示。将最初仅使用卷积层堆叠的ELAN的能力推广到可以使用任何计算块的新架构。
在这里插入图片描述

四、实验

在这里插入图片描述
在这里插入图片描述

4.1消融实验部分

在这里插入图片描述
接下来,对不同尺寸的GELAN进行ELAN block-depth和CSP blockdepth实验,结果如下表所示。当ELAN的深度从1增加到2时,精度明显提高。但当深度大于等于2时,无论是提高ELAN深度还是CSP深度,参数数量、计算量和精度始终呈现线性关系。这意味着GELAN对深度不敏感。
换句话说,用户可以任意组合GELAN中的组件来设计网络架构,无需特别设计就能得到性能稳定的模型。在下表中,对于YOLOv9-{S,M,C},将ELAN深度和CSP深度的配对设置为{{2,3},{2,1},{2,1}}。
在这里插入图片描述
可编程梯度信息

在PGI方面,作者分别对骨干和neck的辅助可逆分支和多层辅助信息进行了消融研究。设计了辅助可逆分支ICN,利用DHLC联动获取多级可逆信息。对于多层辅助信息,使用FPN和PAN进行消融研究,PFH的作用相当于传统的深度监督。所有实验结果列于下表。PFH仅在深度模型中有效,而PGI在不同组合下都可以提高精度。特别是在使用ICN时,得到了稳定和更好的结果。
在这里插入图片描述
进一步将PGI和深度监督的概念应用到不同大小的模型上,并对结果进行比较,结果如下示。如前所述,引入深度监督会导致浅层模型的准确性损失。对于一般模型,引入深度监督会导致性能不稳定,深度监督的设计理念只能在极深的模型中带来收益。所提出的PGI能够有效处理信息瓶颈、信息破碎等问题,全面提高不同尺寸模型的精度。PGI的概念带来了两个有价值的贡献。一是使辅助监督方法适用于浅层模型,二是使深层模型训练过程获得更可靠的梯度。这些梯度使深度模型能够使用更准确的信息来建立数据和目标之间的正确相关性。
在这里插入图片描述
可视化结果
在下图中,展示了在不同架构下使用随机初始权重作为前馈得到的特征图的可视化结果。可以看到,随着层数的增加,所有架构的原始信息逐渐减少。例如,在PlainNet的第50层,很难看到物体的位置,而在第100层,所有可区分的特征都将丢失。对于ResNet,虽然在第50层仍然可以看到物体的位置,但是已经丢失了边界信息。当深度达到第100层时,整个图像变得模糊。CSPNet和所提出的GELAN都表现得非常好,并且它们都可以保持支持清晰识别目标的特征,直到第200层。在比较中,GELAN的结果更稳定,边界信息更清晰。
在这里插入图片描述
下图展示了PGI在训练过程中是否能够提供更可靠的梯度,使用于更新的参数能够有效地捕捉输入数据与目标之间的关系。下图为PAN偏置预热时GELAN和YOLOv9 (GELAN + PGI)特征图的可视化结果。从图(b)和©的对比中,可以清楚地看到,PGI准确、简洁地捕获了包含物体的区域。对于不使用PGI的GELAN,发现它在检测物体边界时存在发散,并且在一些背景区域也会产生意想不到的响应。本实验证实了PGI确实可以提供更好的梯度来更新参数,使主分支的前馈阶段保留更重要的特征。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ajax、Axios、Vue、Element与其案例

目录 一.Ajax 二.Axios 三.Vue 四.Element 五.增删改查案例 一.依赖:数据库,mybatis,servlet,json-对象转换器 二.资源:elementvueaxios 三.pojo 四.mapper.xml与mapper接口 五.service 六.servlet 七.html页…

产品展示型wordpress外贸网站模板

孕婴产品wordpress外贸网站模板 吸奶器、待产包、孕妇枕头、护理垫、纸尿裤、孕妇装、孕婴产品wordpress外贸网站模板。 https://www.jianzhanpress.com/?p4112 床品毛巾wordpress独立站模板 床单、被套、毛巾、抱枕、靠垫、围巾、布艺、枕头、乳胶枕、四件套、浴巾wordpre…

请说明Vue中的异步组件加载

Vue中的异步组件加载是指当页面需要渲染某个组件时,可以在需要时再去加载这个组件,而不是在页面初始化的时候就将所有组件一次性加载进来。这种方式能够有效降低页面的初始加载时间,提升用户体验。 在Vue中,我们可以使用import函…

Dgraph 入门教程三(linux本地部署)

上一章中,我们用的官方的Clound操作的,怎么在本地部署一套Dgraph呢。这一章将做详细介绍。安装有好几种方式,最简单的就是联网部署。因为项目需要,这里先不介绍和测试线上部署了,只介绍离线部署。 1、下载安装包 Rel…

flask 数据库迁移报错 Error: No such command ‘db‘.

初学FLASK,使用pycharm的terminal 启动,实现数据库迁移 文件结构 项目启动文件不在一级目录pycharm>terminal启动 由于自己初入 python flask 很多东西并不懂,只能依葫芦画瓢,使用如下命令,输入完第一行命令执行没有任何错误…

Android Termux系统安装openssh实现公网使用SFTP远程访问

文章目录 1. 安装openSSH2. 安装cpolar3. 远程SFTP连接配置4. 远程SFTP访问4. 配置固定远程连接地址 SFTP(SSH File Transfer Protocol)是一种基于SSH(Secure Shell)安全协议的文件传输协议。与FTP协议相比,SFTP使用了…

力扣写法题:最后一个单词的长度

如果最后一个单词后有空格可以采用以下的写 int lengthOfLastWord(char* s) {int count0,flag0;int i(strlen(s)-1);while(i>0){if(s[i]! ) flag1;if(flag1) {if(s[i] ) break;else count;}i--;}return count; }

IAR全面支持小华全系芯片,强化工控及汽车MCU生态圈

IAR Embedded Workbench for Arm已全面支持小华半导体系列芯片,加速高端工控MCU和车用MCU应用的安全开发 嵌入式开发软件和服务的全球领导者IAR与小华半导体有限公司(以下简称“小华半导体”)联合宣布,IAR Embedded Workbench fo…

STM32CubeMX学习笔记14 ---SPI总线

1. 简介 1.1 SPI总线介绍 SPI 是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola(摩托罗拉)首先在其MC68HCXX系列处理器上定义的。 SPI,是一种高速的,全双工,同步的通信总线,并且在…

如何把网页调用变为代码调用

1.背景 最近有一个需求,猜测一段十六进制流的校验方式,挨个尝试非常耗时,需要写代码,调用网页上的功能。 2.解决方案 可以使用Python的 requests 库来发起HTTP请求,并通过POST请求将数据发送给服务器进行计算CRC校验和…

类和对象周边知识

再谈构造函数 前几期我们把六个默认成员函数一一说明后,构造函数还有一些周边知识。 初始化列表 我们在没有了解初始化列表的时候一般都是使用构造函数初始化或者在声明哪里给予缺省值,那么为什么好药存在初始化列表呢?是因为①.有些值必须…

Java后台面试相关知识点解析

文章目录 JavaJava中四种引用类型及使用场景集合HashMap源码及扩容策略HashMap死循环问题ConcurrentHashMap与HashtableConCurrentHashMap 1.8 相比 1.7 判断单链表是否有环,并且找出环的入口IO线程池线程池的几种创建方式判断线程是否可以回收线程池的7大核心参数线…

【实战】K8S集群部署nacos并接入Springcloud项目容器化运维

文章目录 前言Nacos集群搭建Spring cloud配置nacos将Springcloud项目部署在k8s写在最后 前言 相信很多同学都开发过以微服务为架构的系统,开发微服务必不可少要使用注册中心,比如nacos\consul等等。当然在自动化运维流行的今天,我们也会将注…

Qt6.6搭建WebAssembly

1.首先安装python , 链接:https://www.python.org/ 2.下载并安装qt6. 3.克隆emsdk工程 3.1 进入emsdk目录,然后更新emsdk代码 3.2 下载并安装最新的SDK工具。(C:\Qt\emsdk>emsdk install --global latest) 3.3…

一周学会Django5 Python Web开发-Django5修改视图UpdateView

锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计31条视频,包括:2024版 Django5 Python we…

Sui RFP两个提案正在悬赏Grant,4月1日截止速来申请

项目1:智能合约模板市场 概述 创建一个供开发人员购买或提供智能合约模板的市场。针对这样一个特定用户群体,制定支持所需动态的激励机制至关重要。 问题描述 随着众多区块链使用EVM,这些生态中的开发人员受益于各种应用程序和智能合约示…

Linux系统 -- 信号

一 信号的概念 在我们的日常生活中,红绿灯其实也叫信号灯,因此,我们将用红绿灯给大家讲解一下信号的概念。 当你开着车经过红绿灯路口时,你也在收到红绿灯给你的通知,假设是红灯,那么你就需要停下来等待&am…

【MySQL】lower_case_table_names作用及使用

知识点: lower_case_table_names 是mysql设置大小写是否敏感的一个参数。 场景:在使用dataease时,连接外部数据库,启动报错!后查看官方文档,特别要求改数据库配置文件:lower_case_table_names …

linux系统---selinux

目录 前言 一、SELinux 的作用及权限管理机制 1.SELinux 的作用 1.1DAC 1.2MAC 1.3DAC 和 MAC 的对比 2.SELinux 基本概念 2.1主体(Subject) 2.2对象(Object) 2.3政策和规则(Policy & Rule) …

MybatisPlus入门详解

一、MyBatisPlus 简介 1.1 创建新模块 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.1</version></dependency> 由于mp并未被收录到idea的系统内置配置,无法…