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

news2024/11/15 15:57:17

目录

一、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、中间件…等最全厂牌最新视频教程+源码+软件包+面试必考题和答案详解。

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

关注公众号:资源充电吧


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

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

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

相关文章

【千帆AppBuidler】零代码构建AI人工智能应用,全网都在喊话歌手谁能应战,一键AI制作歌手信息查询应用

欢迎来到《小5讲堂》 这是《千帆平台》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 背景创建应用平台地址随机生成快速创建应用头像应用名称应用描述…

Python自动化神器:如何用PyAutoGUI模拟滚轮动一次

哈喽,大家好,我是木头左! 一、PyAutoGUI简介 PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序控制鼠标和键盘操作。它主要在三个方面发挥作用:1)对屏幕上的图像进行识别;2&#xf…

8.11 矢量图层线要素单一符号使用二

文章目录 前言箭头(Arrow)QGis设置线符号为箭头(Arrow)二次开发代码实现 总结 前言 本章介绍矢量图层线要素单一符号中箭头(Arrow)的使用说明:文章中的示例代码均来自开源项目qgis_cpp_api_apps 箭头(Arr…

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

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

数据结构复习指导之图的存储及基本操作

文章目录 图的存储及基本操作 考纲内容 复习提示 1.邻接矩阵法 2.邻接表法 3.十字链表 4.邻接多重表 5.图的基本操作 图的存储及基本操作 图的存储必须要完整、准确地反映顶点集和边集的信息。根据不同图的结构和算法,采用不同的存储方式将对程序的效率产生…

八字排盘软件有哪些?

八字排盘软件是根据中国传统命理学中的生辰八字(即一个人出生的年、月、日、时)来分析个人命运和运势的工具。以下是一些可用的八字排盘软件: 无敌八字排盘算命软件 - 精准的八字排盘,全完免费,有手机版电脑版&#xf…

CentOS 安装 SeaweedFS

1. SeaweedFS 介绍 SeaweedFS 是一个简单且高度可扩展的分布式文件系统。有两个目标: to store billions of files! (存储数十亿个文件!)to serve the files fast! (快速提供文件!) Seaweedfs的中心节点(center master&#xff09…

Stable Diffusion基础界面介绍

SD是stable diffusion的简称,AI绘画的一个开源应用,(不需要科学上网),目前使用的版本是B站UP秋葉aaaki整理的最终版。 安装教程详见 B站up主 秋葉aaaki,教程下有提供stable diffusion的下载链接。 安装必要的三个基础…

接口文档编写注意事项

接口文档编写注意事项 字段方面 ①不需要的字段、逻辑中固定值的字段(可写死的字段)不提供 ②逻辑上可以合并的字段合并 例如:当一个互斥条件下,分别返回了两个字段,这个时候就可以在这个基础上将两个字段合并成一个…

UEC++学习(十五)创建、查找、加入会话

创建会话 基于上篇配置steam在线子系统之后&#xff0c;在Character.h中声明一个会话创建完成时的委托以及回调函数。 #include "Interfaces/OnlineSessionInterface.h"public://指向在线会话界面的指针,将会话接口存储在里面TSharedPtr<class IOnlineSession, ES…

Spring AOP(概念,使用)

目录 Spring AOPAOP是什么什么是Spring AOPAOP实际开发流程1. 引入依赖2. 编写AOP程序 Spring AOP详解Spring AOP中的核心概念Spring AOP的通知类型六种类型PointCutOrder(切面优先级) Spring AOP AOP是什么 Aspect Oriented Programminig(面向切面编程)切面指的是某一类特定…

Keli5烧写程序成功后再次烧写程序却不能识别芯片。解决方法

1问题&#xff08;已排除硬件问题和Debug配置问题&#xff09; 再次烧写不能识别下如图&#xff08;提示为不能识别到芯片&#xff09; 硬件识别正常 Debug配置正常 就是不能识别到芯片 2为什么会出现这个问题 在STM32Cude设置中没有设置SYS&#xff08;默认是No Debug&…

如何判断点在多边形内部:OpenCV--cv2.pointPolygonTest()方法详解

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

HTML常用标签-超链接标签

超链接标签 点击后带有链接跳转的标签 ,也叫作a标签 href属性用于定义连接 href中可以使用绝对路径,以/开头,始终以一个固定路径作为基准路径作为出发点href中也可以使用相对路径,不以/开头,以当前文件所在路径为出发点href中也可以定义完整的URL target用于定义打开的方式 _b…

照片误删如何恢复?这些方法帮你重拾回忆!

手机照片是我们记录美好时刻的重要工具。但有时我们会因为不小心或者错误操作而导致珍贵照片的丢失。那些与家人、朋友共度的美好时刻、旅途中的风景、重要的纪念日&#xff0c;一旦删除&#xff0c;就如同从记忆中抹去&#xff0c;令人惋惜不已。幸运的是&#xff0c;随着科技…

【AI智能体】零代码构建AI应用,全网都在喊话歌手谁能应战,一键AI制作歌手信息查询应用

欢迎来到《小5讲堂》 这是《文心智能体平台》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 文心智能体大赛背景创建应用平台地址快速构建【基础配置】…

利用关系感知一致性和虚拟特征补偿解决医学分类中的长尾问题

文章目录 Combat Long-Tails in Medical Classification with Relation-Aware Consistency and Virtual Features Compensation摘要方法实验结果 Combat Long-Tails in Medical Classification with Relation-Aware Consistency and Virtual Features Compensation 摘要 由于…

Blender使用python代码绘画:一个简单例子

Blender简介 Blender 是一款开源的三维计算机图形软件&#xff0c;它提供了广泛的功能&#xff0c;包括建模、动画、渲染、视频编辑等。Blender还支持Python编程接口&#xff0c;允许用户通过编写脚本来控制和定制软件的各个方面。 Blender的功能非常强大&#xff0c;它被广泛…

MySQL和吉客云单据接口对接

MySQL和吉客云单据接口对接 源系统:吉客云 杭州吉客云网络技术有限公司是经国家认定的高新技术企业&#xff0c;是国内领先的SaaSERP软件服务商&#xff0c;致力于为企业提供安全稳定、高可用性和高扩展性的一站式数字化解决方案。 写入目标:MySQL MySQL是最流行的数据库之一&a…

【C语言】水仙花数

问题 水仙花数&#xff08;Narcissistic number&#xff09;也被称为超完全数字不变数&#xff08;pluperfect digital invariant, PPDI&#xff09;、自恋数、自幂数或阿姆斯壮数数&#xff08;Armstrong number&#xff09;。 它是指一个n位数&#xff08;n≥3&#xff09;…