目标检测——YOLOv9算法解读

news2024/11/29 6:35:31

论文:YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information (2024.2.21)
作者:Chien-Yao Wang, I-Hau Yeh, Hong-Yuan Mark Liao
链接:https://arxiv.org/abs/2402.13616
代码:https://github.com/WongKinYiu/yolov9


YOLO系列算法解读:
YOLOv1通俗易懂版解读、SSD算法解读、YOLOv2算法解读、YOLOv3算法解读、YOLOv4算法解读、YOLOv5算法解读、YOLOR算法解读、YOLOX算法解读、YOLOv6算法解读、YOLOv7算法解读、YOLOv8算法解读、YOLOv9算法解读

PP-YOLO系列算法解读:
PP-YOLO算法解读、PP-YOLOv2算法解读、PP-PicoDet算法解读、PP-YOLOE算法解读、PP-YOLOE-R算法解读


文章目录

  • 1、算法概述
  • 2、YOLOv9细节
    • 2.1 Programmable Gradient Information
    • 2.2 Generalized ELAN
  • 3、实验


1、算法概述

YOLOv9和YOLOv7的一作是同一个人,所以均采用同一个检测框架;文章出发点可归因于论文的这句话:
在这里插入图片描述
作者先表明现如今检测算法主要集中在设计目标函数及有效的框架,但却忽略了输入数据逐层进行特征提取和空间变换时,会丢失大量的信息,这些丢失的信息会造成梯度偏差影响模型参数的更新。如下图所示是各个网络的特征图细节展示;
在这里插入图片描述
目前,可以缓解这一现象的主要方法如下:
1.使用可逆架构:这种方法主要使用重复的输入数据,并以显式的方式维护输入数据的信息;缺点是需要额外的层来组合重复馈送的输入数据,增加推理成本,且受限不能有太深的路径,网络很难捕获高阶语义信息进行建模;

2.Mask建模:主要利用重建损失,采用隐式方法最大化提取的特征,保留输入信息;缺点是重建损失有时与目标损失相冲突或者与输入数据产生不正确的关联;

3.引入深度监督概念:它使用没有丢失太多重要信息的浅层特征来预先建立从特征到目标的映射,以确保重要信息可以转移到更深的层;缺点是若在浅层丢失信息,后续层无法检索到所需信息,容易造成错误积累。

本文将深入研究数据在深度网络中传输时的重要数据丢失问题,即信息瓶颈和可逆函数。为此,作者提出了可编程梯度信息(programmable gradient information, PGI)应对深度神经网络中多目标的各种变化,PGI可针对目标任务提供完整的输入信息,因此网络可以根据完整的梯度信息更新网络权重。此外,作者还基于梯度路径规划在ELAN结构的基础上设计了一个轻量高效的网络结构GELAN(Generalized Efficient Layer Aggregation Network),而YOLOv9正是利用GELAN结构来设计的。它们在COCO数据集上的表现如下图:
在这里插入图片描述


2、YOLOv9细节

YOLOv9网络结构如下
在这里插入图片描述

2.1 Programmable Gradient Information

为了解决数据在深度网络中传输时信息丢失的问题,作者提出了一种新的辅助监督框架,称为可编程梯度信息(PGI),如图下图(d)所示。
在这里插入图片描述
PGI主要包括三个部分,即(1)主分支、(2)辅助可逆分支、(3)多级辅助信息。从上图(d)中,我们可以看到PGI的推理过程只使用主分支,因此不需要任何额外的推理成本。至于其他两个组成部分,它们用于解决或减缓深度学习方法中的几个重要问题。其中,设计了辅助可逆分支来处理神经网络深化所带来的问题。网络深化会造成信息瓶颈,使损失函数无法生成可靠的梯度。对于多级辅助信息,它是为了处理深度监督引起的误差积累问题而设计的,特别是对于多预测分支的架构和轻量级模型。

辅助可逆分支(Auxiliary Reversible Branch)
在PGI结构中,作者提出了辅助可逆分支来生成可靠的梯度。但是作者通过实验得到在网络主分支中增加可逆结构(如上图(b)黄色虚线框部分)会带来推理时间的急剧上升,增加上图(b)黄色框部分,推理时间能增加一倍。
作者意识到,我们要的目标是使用可逆结构来获得可靠的梯度,因此“可逆”并不是推理阶段的唯一必要条件。作者将可逆分支视为深度监督分支的扩展部分,设计了辅助可逆分支,如上图(d)蓝色虚线框部分。这样一来,深层主分支中可能因信息瓶颈而丢失的重要信息,可以通过辅助可逆分支获得补充的梯度信息,这些信息有助于网络学习到更准确、更关键的特征,以更有效地完成目标任务。作者进一步指出,由于复杂的任务需要在深层网络中进行转换,因此可逆结构在浅层网络中的表现比一般网络差。因此提出的方法不追求在主分支上保留完整原始信息,而是通过辅助监督机制提供有用的梯度更新。

多级辅助信息(Multi-level Auxiliary Information)
包含深度监督信息的多级预测分支结构如上图©所示。对于目标检测任务而言,可以使用不同的特征金字塔来检测不同大小的目标。因此,在连接到深度监督分支后,将引导浅层特征学习小物体检测所需的特征,此时模型将其他大小目标的位置作为背景。然而,上述行为会导致深层特征金字塔丢失大量预测目标物体所需的信息。在这里,作者认为每个特征金字塔都需要接收到所有目标物体的信息,以便后续的主干分支能够保留完整的信息来学习对各种目标的预测。因此,作者引入了一种多级辅助信息架构,通过在辅助监督特征金字塔层和主分支之间加入集成网络,如上图(d)粉色虚线框部分所示。这个集成网络的角色是整合来自不同预测分支的梯度信息,并将这一聚合的信息传递给主分支,以促进参数的更新。

2.2 Generalized ELAN

通过结合CSPNet和ELAN这两种采用梯度路径规划设计的神经网络架构,作者设计了一种考虑轻量级、推理速度和准确性的通用高效层聚合网络(GELAN)。它的整体架构如下图所示,ELAN是卷积层的堆叠结构,而GELAN适用范围更广,是任何block的堆叠。
在这里插入图片描述


3、实验

实验设置:实验都用COCO2017训练集训练,用其验证集选择最佳模型,用COCO2017测试集评估模型性能。作者在YOLOv7的基础上把v7中的ELAN替换成了GELAN,其中GELAN的block用的是CSPNet blocks和planned RepConv。并简化了下采样模块以及优化了Anchor-Free预测头。对于PGI的辅助损失部分,作者完全采用了YOLOv7的辅助头设置。
与现如今其他检测算法对比
在这里插入图片描述
模型参数量和计算量flops方面的比较
在这里插入图片描述
消融实验:略

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

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

相关文章

项目总结(5月13号)

从做聊天室项目到现在,陆陆续续完成了部分项目的功能点。 下面是我的项目构思 这里介绍一下项目的关键功能点,私聊和群聊。 因为我用的是非阻塞io,所以聊天窗口不能多开,当只开一个窗口进行聊天时,可以实现聊天信息的…

✬✬✬宁波iso14001认证:环境保护的“绿色光环”加持✬✬✬

🍒宁波iso14001认证:💗环境保护的“绿色光环”加持🌵 🍓说到环境保护,😂我可是满满的热情啊!⌚最近,我们公司成功🚈获得了ISO14001认证,&#x1f…

研究幽灵漏洞及其变种(包括但不限于V1-V5)的攻击原理和基于Github的尝试

一、研究幽灵漏洞及其变种(包括但不限于V1-V5)的攻击原理 1.1 基本漏洞原理(V1) 幽灵漏洞的基本原理是由于glibc库中的gethostbyname()函数在处理域名解析时,调用了__nss_hostname_digits_dots()函数存在缓冲区溢出漏洞。 具体来说,__nss_hostname_digits_dots()使用一个固定…

铁路/党员干部网评该如何去投稿呢?

为了推动网宣工作的正常运行网宣文章还能够有所突破,那么写作出高质量的文章就成为了我们的坚韧利剑了,我们在写作的时候需要用到软文写作技巧的手法来进行写作。俗话说得好冰冻三尺非一日之寒,在网上能够写作出吸引人的文章作者都是有较长的…

前端动态旋转地球背景

效果图 贴下源码 <template><div class"map-bg"><div class"canvas" id"canvs"></div><canvas class"canvasxk" id"canv"></canvas></div> </template><script setup …

「网络流 24 题」星际转移【最大流、残余网络上加边、分层(分时)图】

「网络流 24 题」星际转移 1 ≤ n ≤ 13 , 1 ≤ m ≤ 20 , 1 ≤ k ≤ 50 1 \leq n \leq 13, 1\leq m \leq 20, 1 \leq k \leq 50 1≤n≤13,1≤m≤20,1≤k≤50 思路 我们用 s h i p [ i ] [ j ] ship[i][j] ship[i][j] 表示飞船 i i i 在时刻 T T T mod r i j r_i j ri​…

MATLAB R2017b安装的关键一步

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 MATLAB R2017b的安装文件比较庞大&#xff0c;由两个iso文件组成&#xff1a;R2017b_win64_dvd1.iso和R2017b_win64_dvd2.iso。安装时需要注意的是&#xff0c;首先使用DAEMON Tools Lite打开R2017b_win64_dvd1.iso&am…

力扣HOT100 - 118. 杨辉三角

解题思路&#xff1a; 每个数字等于上一行的左右两个数字之和。 class Solution {public List<List<Integer>> generate(int numRows) {List<List<Integer>> res new ArrayList<>();for (int i 0; i < numRows; i) {List<Integer> …

Vue3实战笔记(13)—pinia安装笔记

文章目录 前言安装和配置pinia总结 前言 Pinia 是 Vue 的专属状态管理库&#xff0c;它允许你跨组件或页面共享状态。 Pinia是一个轻量级的状态管理库&#xff0c;它专注于提供一个简单的API来管理应用程序的状态。相比之下&#xff0c;Vuex是一个更完整的状态管理库&#xf…

【优先级队列】Leetcode 最后一块石头的重量

题目讲解 1046. 最后一块石头的重量 算法讲解 根据题目的意思&#xff0c;为了寻找到本次数组中的最大的两个值&#xff0c;我们需要使用一个数据结构&#xff1a;堆&#xff0c;使用大堆&#xff0c;每一次出两个数据&#xff0c;这两个数据就是当前数组中的两个最大值&…

tauri2.0bate版本支持移动端开发了,ios和android开发有福了

Tauri 是一个开源框架&#xff0c;用于构建轻量级、高性能的桌面应用程序。它是使用 Web 技术&#xff08;如 HTML、CSS 和 JavaScript&#xff09;来创建用户界面&#xff0c;同时利用 Rust 语言提供的api功能。Tauri 的目标是提供一种更高效、更安全的方式来开发跨平台的桌面…

linux裸机编程学习过程中个人错误集合-IMX6ULL开发版】

把main写成mian,编译出错.h文件复制完后忘记更改头文件#ifndef后面的内容&#xff0c;导致头文件一直找不到vscode错误更正完毕后还是找不到库函数参数&#xff0c;把库函数删掉&#xff0c;然后重新写一遍就正常了写led切换函数&#xff0c;led灯点不亮&#xff0c;是切换函数…

亚马逊测评实操干货,跨境电商做测评,卖家店铺测评攻略!

亚马逊在全球有超过 2 亿付费 Prime 会员和数以亿计的活跃买家账户&#xff0c;卖家们可以通过亚马逊一流的国际物流扩展业务。这是一个知名度极高的老牌跨境电商平台&#xff0c;而且平台流量非常大&#xff0c;成功打造爆款Listing这是每位亚马逊卖家渴望的诉求&#xff0c;做…

1694jsp宿舍管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 宿舍管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统采用web模式&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库…

一套3D PACS系统源码:可实现医学影像获取、存档、观片、处理、打印多项应用、基于C#+VC + MSSQL开发的全套PACS源码

一套3D PACS系统源码&#xff1a;可实现医学影像获取、存档、观片、处理、打印多项应用 PACS的功能价值在于通过连接不同的影像设备&#xff0c;存储与管理图像&#xff0c;图像的调用与后处理&#xff0c;实现资源共享&#xff0c;降低成本&#xff0c;达到提高工作效率、提升…

基础ArkTS组件:导航栏组件(HarmonyOS学习第三课【3.8】)

Navigation 官方文献 Navigation 组件一般作为页面布局的根容器&#xff0c;它提供了一系列属性方法来设置页面的标题栏、工具栏以及菜单栏的各种展示样式。 Navigation 除了提供了默认的展示样式属性外&#xff0c;它还提供了 CustomBuilder 模式来自定义展示样式 说明 该…

【Python贪吃蛇】:编码技巧与游戏设计的完美结合

文章目录 &#x1f525;一、运行效果&#x1f4a5;二、游戏教程✈1. 导入模块❤️2. 初始化游戏元素☔3. 改变蛇移动的方向&#x1f44a;4. 绘制方块&#x1f680;5. 检查蛇头是否在游戏区域内&#x1f308;6. 定义蛇的移动函数&#x1f3ac;7. 绑定键盘事件 ⭐三、完整代码 &a…

让墨水屏成为生产力工具,文石做对了什么

文 | 螳螂观察 作者 | 青玥 众所周知&#xff0c;如今&#xff0c;我们的生活中大部分时间都被“屏幕”占据&#xff0c;这一承载着交互与显示功能的介质&#xff0c;出现在我们的手机、平板、汽车等产品上&#xff0c;吞没着我们的工作与生活。 而屏幕的长时间使用势必会对…

Hive Sampling 抽样函数

Hive Sampling 抽样函数 1.random随机抽样 2.数据块抽样 3.分桶表抽样

追剧必不可少,益百分艾护轻松解决眼疲劳!

追剧必不可少&#xff0c;益百分艾护轻松解决眼疲劳! 追剧大军已经成为了当下社会一个不可忽视的群体&#xff0c;上到七八十岁的老年人&#xff0c;下到三四岁的孩童&#xff0c;每天大部分的时间都在追剧。而中间这一部分年轻人更是如此&#xff0c;因此我国近视眼的数量也是…