深度解析YOLOV9,目标检测算法(附论文和源码)|

目录

一、YOLOV9

1、概述:

2,论文摘要:

输入数据在前馈过程中可能会有不可忽略的信息丢失。这种信息丢失会导致梯度流出现偏差,而梯度流又被用于更新模型。上述问题会导致深度网络在目标和输入之间建立不正确的关联,从而使训练后的模型产生不正确的预测结果。

4,Methodology—方法

4.1 可编程梯度信息PGI

4.2 辅助可逆分支

4.3 多级辅助信息

4.4 广义 ELAN

5,实验效果

5.1 实施细节

5.2 与最先进实时目标检测器的比较

5.3 消融实验

5.3.3 可编程梯度信息

表6展示了从基线 YOLOv7 到 YOLOv9 逐渐增加组件的结果。我们提出的 GELAN 和 PGI 为我们带来了较大优势。

6,可视化

7,结论


一、YOLOV9

1、概述:

     YOLOv9是由Chien-Yao Wang, I-Hau Yeh, and Hong-Yuan Mark Liao开发的计算机视觉模型。Hong-Yuan Mark Liao和Chien-Yao Wang还对YOLOv4、YOLOR和YOLOv7等流行的模型架构进行了研究。

YOLOv9引入了两种新的架构:YOLOv9和GELAN,这两种架构都可以从论文发布的YOLOv9 Python库中使用。

YOLOv9有四种模型,按参数个数排序是:v9-Sv9-Mv9-Cv9-E。目前v9 - S和v9 - M的权重暂不可用。其中最小的模型在MS COCO数据集的验证集上达到了46.8 %的AP,而最大的模型达到了55.6 %。

本文主要贡献:

  • 从可逆函数角度对现有的深度神经网络架构进行了理论分析,并成功地解释了许多过去难以解释的现象。在此基础上设计了PGI 和辅助可逆分支,并取得了很好的效果;

  • PGI 解决了深度监督只能用于极深神经网络架构的问题,从而使新型轻量级架构真正应用于日常生活;

  • GELAN 仅使用了传统的卷积方式,实现了更高的参数使用率,同时还展现出轻便、快速、准确的巨大优势;

  • 结合所提出的PGI 和 GELAN,YOLOv9 在 MS COCO 数据集上的物体检测性能在各方面都大大超过了现有的实时物体检测器。

2,论文摘要

      当今的深度学习方法专注于设计最合适的目标函数,以使模型的预测结果与实际情况最接近。同时,必须设计一个合适的架构,以便获取足够的信息进行预测。现有方法忽略了一个事实,即当输入数据经过逐层特征提取和空间变换时,大量信息将会丢失。

本文将深入探讨当数据通过深度网络传输时的数据丢失重要问题,即信息瓶颈和可逆函数。我们提出了可编程梯度信息(PGI)的概念,以处理深度网络所需的各种变化,以实现多个目标。PGI可以为目标任务提供完整的输入信息来计算目标函数,从而获得可靠的梯度信息以更新网络权重。此外,基于梯度路径规划设计了一种新的轻量级网络架构——广义高效层聚合网络(GELAN)。GELAN的架构证实了PGI在轻量级模型上取得了优异的结果。我们在基于MS COCO数据集的目标检测上验证了提出的GELANPGI

结果显示,GELAN仅使用常规卷积算子即可实现比基于深度卷积开发的最先进方法更好的参数利用率。PGI可用于各种模型,从轻量级到大型。它可用于获取完整信息,使得从头开始训练的模型可以获得比使用大型数据集预训练的最先进模型更好的结果,比较结果如图1所示。

3. Introduction—简介

输入数据在前馈过程中可能会有不可忽略的信息丢失。这种信息丢失会导致梯度流出现偏差,而梯度流又被用于更新模型。上述问题会导致深度网络在目标和输入之间建立不正确的关联,从而使训练后的模型产生不正确的预测结果。

在深度网络中,输入数据在前馈过程中丢失信息的现象通常被称为信息瓶颈(information bottleneck),缓解这一现象的方法主要有以下几种:

  • 可逆架构:这种方法主要使用重复输入数据,并以显式方式保持输入数据的信息;缺点:由于要求附加层结合重复输入的数据,将大大增加推理成本。此外,输入数据层到输出层不能有太深的路径,因此在训练过程中很难对高阶语义信息进行建模。

  • 使用掩码建模:这种方法主要使用重构损失,采用隐式方式最大化提取特征,保留输入信息;缺点:其重建损失有时会与目标损失相冲突。此外,大多数掩码机制还会产生错误的数据关联。

  • 引入深度监督概念:利用尚未丢失太多重要信息的浅层特征,预先建立特征与目标之间的映射关系,确保重要信息能被传递到深层。缺点:会产生错误积累,如果浅层监督在训练过程中丢失信息,后续层将无法检索到所需信息。

针对上述问题,本文提出PGI-可编程梯度信息。

  • 通过辅助可逆分支(不需要额外成本)生成可靠的梯度,使深度特征仍能保持执行目标任务的关键特征;

  • 可以自由选择适合目标任务的损失函数;

  • 可以应用于各种规模的深度神经网络。

本文还设计了基于 ELAN 的广义 ELAN(GELAN),其同时考虑了参数数量、计算复杂性、准确性和推理速度。本文将提出的 PGI 和 GELAN 结合起来,开发出新一代 YOLO 系列物体检测系统,称之为 YOLOv9

4,Methodology—方法

4.1 可编程梯度信息PGI

本文提出了一种新的辅助监督框架,称为可编程梯度信息PGI。如下图3-d所示。

图 PGI及相关网络架构和方法。(a)路径聚合网络(PAN);(b)RevCol;(c)深度监督网络;(d)可编程梯度信息(PGI)。PGI由三个组件组成:(1)主分支:用于推理的体系结构,(2)辅助可逆分支:生成可靠的梯度以供应主分支用于向后传输,(3)多级辅助信息:控制主分支学习可规划的多级语义信息

PGI主要包括三个组件,即(1)主分支,(2)辅助可逆分支,以及(3)多级辅助信息。从图中看到PGI的推理过程仅使用主分支(蓝色部分),因此不需要任何额外的推理成本。辅助可逆分支旨在处理神经网络深化所带来的问题。网络深化将导致信息瓶颈,这将使损失函数无法生成可靠的梯度。多级辅助信息,旨在处理深度监督导致的误差累积问题,特别是针对多预测分支的架构和轻量级模型。

4.2 辅助可逆分支

本文提出了辅助可逆分支来产生可靠的梯度和更新网络参数。如上图所示本文的目标是使用可逆架构来获得可靠的梯度,因此“可逆”不是推断阶段的唯一必要条件。鉴于此,我们将可逆分支视为深度监督分支的扩展,然后设计辅助可逆分支。

如上图:由于信息瓶颈而丢失重要信息的主分支深层特征,它们将能够从辅助可逆分支接收可靠的梯度信息。这些梯度信息将驱动参数学习以帮助提取正确和重要的信息,并且上述动作能够使主分支获得对目标任务更有效的特征。

本文提出的方法不强制主分支保留完整的原始信息,而是通过辅助监督机制生成有用的梯度来更新原始信息。这种设计的优点是所提出的方法也可以应用于较浅的网络。由于可以在推理阶段移除辅助可逆分支,因此可以保留原始网络的推理能力。

4.3 多级辅助信息

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

多层次辅助信息的概念是在辅助监督的特征金字塔层次和主分支之间插入一个集成网络,然后利用它来组合不同预测头返回的梯度,如图所示 (d)。然后,多层次辅助信息将汇总包含所有目标对象的梯度信息,并将其传递给主分支,然后更新参数。此时,主分支的特征金字塔层次结构的特征将不会被某些特定对象的信息所支配。

4.4 广义 ELAN

通过结合两种神经网络架构:CSPNet和 ELAN,本文设计出了兼顾轻量级、推理速度和准确性的高效层聚合网络(GELAN)。其整体架构如下图所示,本文将 ELAN,将原来只使用卷积层堆叠的架构,改为可以使用任何计算模块的新架构。

图 GELAN体系结构:(a)CSPNet,(b)ELAN和(c)GELAN。模仿CSPNet并将ELAN扩展到可以支持任何计算块的GELAN中

5,实验效果

5.1 实施细节

我们在 YOLOv7 和动态 YOLOv7的基础上分别构建了 YOLOv9 的通用版本和扩展版本。把planned RepConv 作为计算模块添加到CSPNet模块中,并且把原始的ELAN替换为GELAN(基于改进的CSPNet)。我们还简化了下采样模块,优化了无锚框预测头。至于 PGI 的辅助损失部分,我们完全沿用了 YOLOv7 的辅助头设置。

5.2 与最先进实时目标检测器的比较

表1罗列了YOLOv9与其他从头开始训练的实时目标检测器的对比。

对于lightweight models,现阶段最好的是YOLO MS-S,对于medium models,现阶段最好的是YOLO MS,对于general models,现阶段最好的是YOLOv7 AF,对于large models现阶段最好的是YOLOv8-X。

与lightweight及medium版本的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与现有方法相比,在各方面都有了显著的提升。

表1. 当下实时检测器效果对比

最新实时物体探测器比较。参与比较的方法都使用ImageNet作为预训练权重,包括RT DETR,RTMDet和PP-YOLOE等。使用从头开始训练方法的YOLOv9性能明显优于其他方法。

我们也将ImageNet预训练的模型纳入比较中,结果如图所示。分别基于参数和计算量对它们进行了比较。

就参数数量而言,性能最好的大型模型是RT DETR。使用常规卷积的YOLOv9在参数利用方面甚至优于使用深度卷积的YOLO MS。对于大型模型的参数利用率,也大大超过了使用ImageNet预训练模型的RT DETR。更好的是,在深度模型中,YOLOv9显示了使用PGI的巨大优势。通过准确地保留和提取将数据映射到目标所需的信息,YOLOv9只需要64%的参数,同时保持了RT-DETR-X的准确性

至于计算量,从最小到最大的现有最佳模型是YOLO MS,PP YOLOE,和RT DETR。可以看到YOLOv9在计算复杂性方面远远优于从头训练方法。此外,如果与基于深度卷积和基于ImageNet的预训练模型相比,YOLOv9也很有竞争力。

5.3 消融实验

5.3.1 GELAN-computational blocks对比

如表2所示,基于CSP Blocks的最好。

5.3.2 GELAN-block depth对比

如表3所示,当ELAN的深度从1增加到2时,精度得到了显著提高。但当深度大于或等于2时,无论是提高ELAN深度还是CSP深度,参数数量、计算量和精度将始终呈现线性关系。这意味着GELAN对深度不敏感。对于YOLOv9[S-M-C]模型,ELAN和CSP设置深度对为[2,3][2,1][2,1]。

5.3.3 可编程梯度信息

在 PGI 方面,我们对backbone采用辅助可逆分支,对head采用多级辅助信息进行了消融研究。我们设计的辅助可逆分支 ICN 使用 DHLC 联结,以获得多层次的可逆信息。至于多级辅助信息,我们使用 FPN 和 PAN 进行消融研究,而 PFH 的作用相当于传统的深度监督。

从表中可以看出:PFH 只在深度模型中有效,而我们提出的 PGI 在不同组合下都能提高精度。特别是在使用 ICN 时,我们得到了稳定且更好的结果。

我们在各种规模的模型上进一步实施了PGI和深度监督模块,并对结果进行了比较,这些结果如表5所示。正如开始时的分析,深度监督的引入将导致浅层模型的准确性损失。对于一般模型来说,引入深度监督会导致性能不稳定,深度监督的设计理念只能在极深的模型中带来收益。本文提出的PGI能有效处理信息瓶颈等问题,并能全面提高不同规模模型的精度。

表6展示了从基线 YOLOv7 到 YOLOv9 逐渐增加组件的结果。我们提出的 GELAN 和 PGI 为我们带来了较大优势。

6,可视化

这里探讨信息瓶颈问题并将其可视化。图中我们展示了在不同架构下使用随机初始权重作为前馈所获得的特征图的可视化结果。我们可以看到,随着层数的增加,所有架构的原始信息逐渐减少。CSPNet 和GELAN 的表现都很好,它们都能保持支持清晰识别物体的特征,直到第 200 层。其中,GELAN 的结果更稳定,边界信息更清晰。

图. 不同深度的 PlainNet、ResNet、CSPNet 和 GELAN 通过随机初始权重输出的特征图(可视化结果)。在 100 层之后,ResNet 开始产生足以模糊对象信息的前馈输出。我们提出的 GELAN 仍能保留相当完整的信息,直到第 150层 仍能保留相当完整的信息,到第200层。

7,结论

  • 可编程梯度信息(PGI)的引入解决了轻量级神经网络中的信息瓶颈问题和深度监督机制的局限性。

  • 基于梯度路径规划和利用PGI的广义高效层聚合网络(GELAN)在物体检测任务中表现出强大而稳定的性能。

  • PGI 另轻量级和深度模型显著提高精度,减少参数和计算数量,同时仍优于以前的模型。

  • 结合了PGI和GELAN的YOLOv9模型显示出强大的竞争力,与YOLOv8相比,MS COCO数据集的AP提高了0.6,同时减少了参数量和计算量。

二,相关地址:

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

代码地址:https://github.com/WongKinYiu/yolov9

三,参考文章:

yolov9代码下载地址及运行注意事项_yolov9 github-CSDN博客

GitHub - WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information

手把手教你在自己的数据集上训练YOLOv9!- 知乎 (zhihu.com)

目标检测-YOLOv9 - 知乎 (zhihu.com)

https://arxiv.org/abs/2402.13616

https://github.com/WongKinYiu/yolov9

福利:
包含:Java、云原生、GO语音、嵌入式、Linux、物联网、AI人工智能、python、C/C++/C#、软件测试、网络安全、Web前端、网页、大数据、Android大模型多线程、JVM、Spring、MySQL、Redis、Dubbo、中间件…等最全厂牌最新视频教程+源码+软件包+面试必考题和答案详解。

福利:想要的资料全都有 ,全免费,没有魔法和套路

关注公众号:资源充电吧


点击小卡片关注下,回复:学习

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

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

相关文章

算法分析与设计复习__递归方程与分治

总结自:【算法设计与分析】期末考试突击课_哔哩哔哩_bilibili 1.递归,递归方程 1.1递归条件: 1.一个问题的解可以分解为几个子问题的解; 2.这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一样; 3.存在…

【Git教程】(十八)拆分大项目 — 概述及使用要求,执行过程及其实现,替代解决方案 ~

Git教程 拆分大项目 1️⃣ 概述2️⃣ 使用要求3️⃣ 执行过程及其实现3.1 拆分模块版本库3.2 将拆分出的模块作为外部版本库集成 4️⃣ 替代解决方案 通常软件项目都是由单体小型系统开始的,在开发过程中项目规模和团队人员不断扩大, 将项目模块化会显得…

Redis-持久化操作-AOF

持久化操作-AOF AOF是什么? 以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只允许加文 件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之…

git入门操作

一、介绍 Git是一个开源的分布式版本控制系统,由Linus Torvalds创建,用于有效、高速地处理从小到大的项目版本管理。 二、注册Git代码托管平台账号 以下几个平台可供选择: Gitee: https://gitee.com/(国内) Gitee(码云&…

从丢失到找回:手机相册恢复实战教程

“之前因为手机延迟把三千多张相片都删了,花了几个小时找文档,最后也没找到。对于爱拍照的朋友来说,照片被误删或不见真的会超级难过!请问大家有什么好方法能够恢复照片吗?” 在数字时代,手机相册成为了我…

PLC的ST语言实现IIR butterworth低通滤波器

参考 Butterworth Filter Design in C – The Code Hound matlab代码,创建一个fc0.1的4阶butterworth低通滤波器。 format long[b,a] butter(4,0.1,low)input1 [1,2,3,1,2,3,1,2,3,0,0]; output filter(b,a,input1)过滤input1的结果为 output Columns 1 throu…

嵌入式基础课程配套电机FOC伺服电机开发板AT32F403磁编码IMU姿态

嵌入式基础课程配套电机FOC伺服电机开发板AT32F403磁编码IMU姿态 带你入门嵌入式有二十多年开发经验的老技骨做技术支持整个开发包硬件包括电机2205,支持12V到24V宽输入,配套12V2A电源。包装原理图和PCB嵌入式软件嵌入式基础课程 带你入门嵌入式 电机FO…

免费SSL证书怎么签发

大家都知道SSL证书好,作用大,安全性高,能加权重,等保必须的参考值。但是如何选择合适且正确的证书也是至关重要的,网站更适合单域名证书、多域名证书、泛域名证书、还是多域名通配符证书。 首先大家要清楚&#xff0c…

MATLAB车辆动力学建模 ——《控制系统现代开发技术》

引言 在上这门课之前,我已经用过CasADi 去做过最优化的相关实践,其中每一步迭代主要就是由:对象系统优化求解两部分组成的。这里我们重点介绍 “对象系统”如何去描述 ,因为它是每一步迭代中重要的一环——“优化求解”会获得控制…

Java逐层解析JSON的内存占用分析

哈喽,大家好,我是木头左! 在当今的软件开发世界中,JSON(JavaScript Object Notation)已经成为了数据传输和存储的事实标准。由于其轻量级且易于人类阅读的特点,JSON被广泛用于Web服务、移动应用…

【制作100个unity游戏之26】unity2d横版卷轴动作类游戏5(附带项目源码)

最终效果 系列导航 文章目录 最终效果系列导航前言三段攻击攻击设置只对敌人造成伤害限制可以移动攻击问题 角色连续按四下攻击,最后会多a一下问题:站在原地连续攻击野猪,只有第一下攻击野猪才掉血,后面的攻击野猪不掉血源码完结 …

一图流解释Java中线程状态的转换

目录 一.Java中的几大线程状态 二.线程之间的相互转换 ▐ NEW --> RUNNABLE ▐ RUNNABLE <--> WAITING ▐ RUNNABLE <--> Timed Waiting ▐ RUNNABLE<--> BLOCKED ▐ RUNNABLE<-->TERMINATED 一.Java中的几大线程状态 简单来说线程可以处于…

美团小程序mtgsig1.2逆向

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;wx a15018601872 本文章未…

网络安全等级保护在工业控制系统中的应用

工业控制系统(Industrial Control Systems,ICS)&#xff0c;是由各种自动化控制组件和实时数据采集、监测的过程控制组件共同构成。其组件包括数据采集与监控系统(SCADA)、分布式控制系统(DCS)、可编程逻辑控制器(PLC)、远程终端(RTU)、智能电子设备(IED)&#xff0c;以及确保各…

C语言单向链表、双向链表和循环链表有什么区别?

一、问题 链表分为单向链表、双向链表和循环链表&#xff0c;它们的不同之处是什么呢&#xff1f; 二、解答 &#xff08;1&#xff09;单向链表。 所谓单向链表&#xff0c;就是指数据结点是单向排列的。⼀个单向链表结点由两个域组成&#xff0c;存储在结构体类型中。⼀个域…

从零开始:利用美颜API打造属于你的直播美颜功能

当下&#xff0c;如何在直播中呈现最好的自己&#xff0c;成为了许多主播关心的问题。美颜功能应运而生&#xff0c;帮助主播们在镜头前展现更好的形象。本文将详细介绍如何从零开始&#xff0c;利用美颜API打造属于你的直播美颜功能。 一、认识美颜API 1、什么是美颜API 美…

用wxPython和PyMuPDF将PNG图像合并为PDF文件

在日常工作中,我们经常需要将多个图像文件合并到一个PDF文档中,以便于查看、共享或存档。虽然现有的一些工具可以实现这一功能,但开发一个自定义的GUI工具可以更好地满足特定需求,并提供更好的用户体验。 在本文中,我将介绍如何使用Python、wxPython和PyMuPDF库创建一个简单的…

【java】异常与错误

Throwable包括Error和Expected。 Error Error错误是程序无法处理的&#xff0c;由JVM产生并抛出的。 举例&#xff1a;StackOverflowError \ ThreadDeath Expected Expected异常包括两类&#xff0c;即受检异常(非运行时异常)和非受检异常(运行时异常)&#xff0c;异常往往…

两大DRAM巨头20%产能转给HBM

随着人工智能(AI)需求的激增&#xff0c;全球领先的内存芯片制造商三星(Samsung)和SK海力士(SK Hynix)预计&#xff0c;由于高性能芯片需求不断增长&#xff0c;今年DRAM和高带宽内存(HBM)的价格将保持强劲。据《韩国经济日报》报道&#xff0c;三星和SK海力士已将其超过20%的D…

BUUCTF靶场[MISC]荷兰宽带数据泄露、九连环

[MISC]荷兰宽带数据泄露 考点&#xff1a;查看路由器恢复丢失密码的文件 工具&#xff1a;RouterPassView——路由器密码查看工具 工具链接&#xff1a;https://routerpassview.en.lo4d.com/windows RouterPassView是一款老牌的路由器密码查看器&#xff0c;可以一键获取路…