YOLOv9解读

论文地址:https://arxiv.org/abs/2402.13616

Github地址:https://github.com/WongKinYiu/yolov9

一、引言

作者认为当前深度学习方法忽略了一个事实,即当输入数据经过逐层特征提取和空间变换时,大量信息将会丢失。本文基于深入研究数据通过深度网络传输时数据丢失的重要问题(即信息瓶颈和可逆函数),提出了可编程梯度信息(PGI)的概念来应对深度网络实现多个目标所需的各种变化。

PGI可以为目标任务计算目标函数提供完整的输入信息,从而获得可靠的梯度信息来更新网络权值。此外,本文还设计了一种基于梯度路径规划的新型轻量级网络架构——通用高效层聚合网络GELAN。GELAN的架构证实了PGI在轻量级模型上取得了优异的结果。

论文在基于 MS COCO 数据集的目标检测上验证了所提出的 GELAN 和 PGI。结果表明,GELAN 仅使用传统的卷积算子即可实现更好的参数利用率。 PGI 可用于从轻型到大型的各种模型。它可以用来获取完整的信息,从而获得更好的效果,比较结果如图1所示:

二、主要贡献

在深度网络中,输入数据在前馈过程中丢失信息的现象俗称信息瓶颈,其示意图如图2所示:

为了解决上述问题,论文提出了一个新的概念,即可编​​程梯度信息(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数据集上的目标检测性能在各个方面都大大超过了现有的实时目标检测器。

三、核心方法

3.1 可编程梯度信息

为了解决上述问题,论文提出了一种新的辅助监督框架,称为可编程梯度信息(PGI),如图3(d)所示。 PGI主要包括三个组成部分:主分支、辅助可逆分支、多级辅助信息。

从图3(d)中我们可以看出,PGI的推理过程仅使用主分支,因此不需要任何额外的推理成本。至于其他两个组件,它们仅用于训练阶段而不在推理阶段,用于解决或减缓深度学习方法中的几个重要问题:

  • 辅助可逆分支:是为了处理神经网络加深带来的问题而设计的。网络加深会造成信息瓶颈,导致损失函数无法生成可靠的梯度。
  • 对于多级辅助信息:旨在处理深度监督带来的误差累积问题,特别是针对多个预测分支的架构和轻量级模型。
3.1.1 辅助可逆分支

在PGI中,论文提出了辅助可逆分支来生成可靠的梯度并更新网络参数。通过提供从数据映射到目标的信息,损失函数可以提供指导并避免从与目标不太相关的不完整前馈特征中发现错误相关性的可能性。论文提出通过引入可逆架构来维护完整信息,但是在可逆架构中添加主分支会消耗大量的推理成本。

论文分析了图3(b)的架构,发现当添加从深层到浅层的额外连接时,推理时间将增加20%。当我们反复将输入数据添加到网络的高分辨率计算层(黄色框)时,推理时间甚至超过了两倍。

由于论文的目标是使用可逆架构来获得可靠的梯度,因此“可逆”并不是推理阶段的唯一必要条件。鉴于此,论文将可逆分支视为深度监督分支的扩展,然后设计辅助可逆分支,如图3(d)所示。对于由于信息瓶颈而丢失重要信息的主分支深度特征,它们将能够从辅助可逆分支接收可靠的梯度信息。

这些梯度信息将驱动参数学习来协助提取正确且重要的信息,上述动作可以使主分支获得对目标任务更有效的特征。此外,可逆架构在浅层网络上的表现比在一般网络上差,因为复杂的任务需要在更深的网络中进行转换。我们提出的方法并不强迫主分支保留完整的原始信息,而是通过辅助监督机制生成有用的梯度来更新它。这种设计的优点是所提出的方法也可以应用于较浅的网络。

3.1.2 多级辅助信息

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

多级辅助信息的概念是在辅助监督的特征金字塔层次层和主分支之间插入一个集成网络,然后用它来组合来自不同预测头的返回梯度,如图3(d)所示。多级辅助信息就是将包含所有目标物体的梯度信息聚合起来,传递给主分支,然后更新参数。此时,主分支特征金字塔层次结构的特征将不再受某些特定对象信息的支配。因此,我们的方法可以缓解深度监督中的信息损坏问题。此外,任何综合网络都可以用于多级辅助信息。

3.2 GELAN

通过结合采用梯度路径规划设计的两种神经网络架构CSPNet 和ELAN ,论文设计了兼顾轻量级、推理速度和准确性的广义高效层聚合网络(GELAN)。其整体架构如图 4 所示。论文将最初仅使用卷积层堆叠的 ELAN 的功能推广到可以使用任何计算块的新架构。

四、实验效果

4.1 实验设置

论文使用 MS COCO 数据集验证了所提出的方法。所有实验设置均遵循 YOLOv7 AF,而数据集为 MS COCO 2017。论文提到的所有模型都是从头开始训练的,总训练次数为 500 epoch。在设置学习率时,论文在前三个epoch中使用线性预热,随后的epoch根据模型规模设置相应的衰减方式。至于最后 15 个epoch,论文关闭mosaic数据增强。

4.2 实现细节

论文分别基于 YOLOv7 和 Dynamic YOLOv7 构建了 YOLOv9 的通用版本和扩展版本。在网络架构的设计中,论文使用 CSPNet Blocks 和 RepConv Blocks作为计算块,用 GELAN 替换了 ELAN 。论文还简化了下采样模块并优化了anchor-free预测头。至于PGI的辅助损失部分,论文完全遵循YOLOv7的辅助头设置。

4.3 效果对比

如表1所示,与轻量级和中型模型YOLO MS相比,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与现有方法相比在各方面都有显着改进。

结果如图5所示,论文分别根据参数和计算量进行比较。就参数数量而言,性能最好的大型模型是 RT DETR。从图5中我们可以看到,使用传统卷积的YOLOv9在参数利用率上甚至比使用深度卷积的YOLO MS还要好。至于大型模型的参数利用率,也大大超过了使用ImageNet预训练模型的RT DETR。更棒的是,在深度模型中,YOLOv9展示了使用PGI的巨大优势。通过准确保留和提取将数据映射到目标所需的信息,我们的方法仅需要 66% 的参数,同时保持 RT DETR-X 的精度。

4.4 消融实验

4.4.1 GELAN

对于 GELAN,论文首先对计算模块进行消融研究。我们分别使用Res Block、Res Block 和 CSP Block 进行实验。表2表明,用不同的计算块替换ELAN中的卷积层后,系统可以保持良好的性能。用户确实可以自由更换计算块并在各自的推理设备上使用它们。在不同的计算块替换中,CSP Block 的性能特别好。它们不仅减少了参数量和计算量,而且将 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}}。

4.4.2 可编程梯度信息

对于多级辅助信息,论文使用FPN和PAN进行消融研究,PFH的作用相当于传统的深度监督。所有实验的结果列于表4中。从表4中我们可以看出,PFH仅在深度模型中有效,而我们提出的PGI可以在不同组合下提高精度。尤其是使用ICN时,我们得到了稳定且更好的结果。我们还尝试将YOLOv7中提出的lead-head指导分配应用于PGI的辅助监督,并取得了更好的性能。

我们进一步将PGI和深度监督的概念应用到不同规模的模型上,并比较结果,结果如表5所示。正如一开始分析的那样,深度监督的引入会导致浅层模型精度的损失。

PGI 的概念带来了两个宝贵的贡献。第一个是让辅助监督方法适用于浅层模型,第二个是让深层模型训练过程获得更可靠的梯度。这些梯度使深度模型能够使用更准确的信息来建立数据和目标之间的正确相关性。

表6中显示了从基线 YOLOv7 到 YOLOv9E 逐渐增加组件的结果。我们提出的GELAN和PGI给模型带来了全面的改进。

4.5 可视化

在图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确实可以提供更好的梯度来更新参数,并使主分支的前馈阶段能够保留更重要的特征。

五、总结

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

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

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

相关文章

RK3568驱动指南|第十三篇 输入子系统-第145 章 输入子系统上报数据格式分析

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

PostgreSQL中控制文件的解析与恢复

最近遇到有人问起PG中控制文件的一些使用问题,总结了一下。 1、PG控制文件简介 1.1、存储的位置 它的路径位于: 相关信息,可以用命令pg_controldata得到: [10:41:27-postgres@centos2:/var/lib/pgsql/14/data/global]$ pg_controldata -D $PGDATA pg_control version …

深度学习十大算法之长短时记忆网络(LSTM)

一、长短时记忆网络(LSTM)的基本概念 长短时记忆网络(LSTM)是一种特殊类型的循环神经网络(RNN),主要用于处理和预测序列数据的任务。LSTM由Hochreiter和Schmidhuber于1997年提出,其…

自动驾驶建图--道路边缘生成方案探讨

自动驾驶建图–道路边缘生成方案探讨 一、背景 对于自动驾驶来说,建图是必不可少的,目前主流厂商技术都在从HD到"无图"进行过渡筹备中,不过想要最终实现真正的"无图"还是有很长的一段路要走。 对于建图来说,…

二.寄存器

1. 2. 例如:h即为high(高位),l即为low(低位) 3.一个字是两个字节 4.在写一条汇编指令或一个寄存器的名称时不区分大小写。 5.al,ah,ax在接受汇编指令时,并不相等&…

【计算机毕业设计】基于ssm038框架的网上招聘系统的设计与实现lw7

基于ssm038框架的网上招聘系统的设计与实现lw7: 本课题是基于ssm框架(springMVC,spring,mybatis)的招聘系统,是标准的MVC模式,将系统分为表现层、controller层、service层、DAO层四层,使用spring MVC负责请求的转发和视…

在pycharm中运行程序时总是以tests方式运行

## 问题描述 前两天在使用python写机器学习的算法时,有一个程序一直以Python tests的方式运行,并且一直运行失败,截图如下: 解决方法 到设置中:File->Settings->Tools->Python integrated Tools 文件->…

DBO优化朴素贝叶斯分类预测(matlab代码)

DBO-朴素贝叶斯分类预测matlab代码 蜣螂优化算法(Dung Beetle Optimizer, DBO)是一种新型的群智能优化算法,在2022年底提出,主要是受蜣螂的的滚球、跳舞、觅食、偷窃和繁殖行为的启发。 数据为Excel分类数据集数据。 数据集划分为训练集、验证集、测试…

基于springboot+vue的教学改革项目管理系统(源码+论文)

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

vs2019新建Qt工程中双击 .ui 文件无法打开

vs2019 中创建的 Qt 工程,在使用的过程中,经常会有:双击 .ui 文件,闪退的情况,也即 .ui 文件无法打开! 针对该问题的详细解决步骤如下: 1、右击该 .ui 文件,选择“打开方式” 2、…

6、kubenetes 卷

1、什么是卷 在某些场景下,我们可能希望新的容器可以在之前容器结束的位 置继续运⾏,⽐如在物理机上重启进程。可能不需要(或者不想要) 整个⽂件系统被持久化,但又希望能保存实际数据的⽬录。 Kubernetes通过定义存储…

指尖论文能用吗 #经验分享#微信

指尖论文是一款非常好用、靠谱、方便的论文写作、查重降重工具。无论是学生还是学者,都可以通过指尖论文轻松完成论文写作任务。指尖论文提供了丰富的论文模板和参考资料,让论文写作变得更加简单和高效。 指尖论文还内置了强大的查重和降重功能&#xff…

Centos上安装Harbor并使用

harbor的安装与使用 Harbor介绍安装前的准备工作为Harbor自签发证书安装Harbor安装docker开启包转发功能和修改内核参数安装harbor扩展 Harbor 图像化界面使用说明测试使用harbor私有镜像仓库从harbor仓库下载镜像 Harbor介绍 容器应用的开发和运行离不开可靠的 镜像管理&…

2024年阿里云服务器优惠价格表_一张表清晰明了

2024年腾讯云服务器优惠价格表,一张表整理阿里云服务器最新报价,阿里云服务器网整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单,大家也可以直接移步到阿里云CLUB中心查看 aliyun.club 当前最新的云服务器优惠券…

Mac上玩《赛博朋克2077》mac电脑怎么玩这个游戏

X用户crushovitz_b最近发现,在《赛博朋克2077》游戏主菜单页面,将鼠标停在版本号选项卡上面足够长时间,就会发现游戏当前的版本号由2.12变为了2.0.77,这是对游戏标题2077的致敬彩蛋。 《赛博朋克2077》的叙事总监兼续集副总监Pawe…

C语言实现三子棋强化学习算法AI,思路详解+完整代码

写个三子棋的强化学习AI玩玩。写这玩意只需要有一点C语言基础就可以了,至于AI部分,也是很好理解的。 三子棋 在3*3的棋盘中,先手方画O,后手方画X,连成3个就赢了。事实上,只需要很简单的试验,你…

大学期末考试搜题软件?这4款足够解决问题 #知识分享#笔记#职场发展

当代大学生面临着繁重的学业压力和海量的知识点,如何高效地进行学习和搜题成了他们关注的焦点。幸运的是,随着科技的不断进步,我们有越来越多的日常搜题和学习软件可以帮助我们更好地应对这些挑战。在本文中,我将为大家介绍10款备…

最新消息!Stable Diffusion核心研究团队已集体辞职!Stable Diffusion 3后可能再无开源

最新消息,Stable Diffusion核心研究团队已集体辞职! 名单包括研究团队领导、论文一作Robin Rombach,共同一作Andreas Blattmann,以及另一位作者Dominik Lorenz合作开发了图像生成模型Stable Diffusion。这项技术帮助Stability AI…

linux下线程分离属性

linux下线程分离属性 一、线程的属性---分离属性二、线程属性设置2.1 线程创建前设置分离属性2.2 线程创建后设置分离属性 一、线程的属性—分离属性 什么是分离属性? 首先分离属性是线程的一个属性,有了分离属性的线程,不需要别的线程去接合…

oracle设置主键自增步骤

设置主键自增步骤: 每一张表都要设置序列,然后设置触发器。比mysql繁琐。 一、设置序列 选中表后,—》 文件—》新建—》其他—》序列. 设置如下四个值即可。 crtls保存。 给序列起个名字,一定要全大写字母。 二、设置触发器…