YOLOv9来了,可编程梯度信息与广义高效层聚合网络 助力全新检测SOTA前沿

本文首发:AIWalker
欢迎关注AIWalker,近距离接触底层视觉与基础AI技术

摘要

当今的深度学习方法侧重于如何设计最合适的目标函数,以便模型的预测结果最接近真实情况;与此同时,必须设计一个适当的架构,以便于获取足够的信息进行预测。现有的方法忽略了一个事实:当输入数据进行逐层特征提取和空间变换时,会丢失大量信息。本文将深入探讨数据通过深度网络传输时数据丢失的重要问题,即信息瓶颈和可逆功能。

  • 提出了可编程梯度信息(PGI)的概念,以应对深度网络实现多重目标所需的各种变化。PGI可以为目标任务提供完整的输入信息来计算目标函数,从而获得可靠的梯度信息来更新网络权重。
  • 设计了一种基于梯度路径规划的新型轻量级网络架构——广义高效层聚合网络(GELAN)。GELAN的架构证实了PGI在轻量化模型上取得了优异的成绩。我们在基于MS COCO数据集的目标检测上验证了所提出的GELAN和PGI。

结果表明,与基于深度卷积的现有方法相比,GELAN仅使用传统的卷积算子即可实现更好的参数利用。PGI可用于从轻量级到大型的各种型号。它可以用来获得完整的信息,使从头开始训练的模型比使用大数据集预训练的最先进的模型获得更好的结果,比较结果如图1所示。 源代码位于:https://github.com/WongKinYiu/yolov9。

本文贡献

本文的贡献总结如下:

  • 我们从可逆函数的角度对现有的深度神经网络架构进行了理论分析,通过这个过程,我们成功地解释了许多过去难以解释的现象。我们还基于该分析设计了PGI和辅助可逆分支,并取得了优异的效果。
  • 我们设计的PGI解决了深度监督只能用于极深神经网络架构的问题,从而让新的轻量级架构真正应用到日常生活中。
  • 我们设计的GELAN仅使用常规卷积,比基于最先进技术的深度卷积设计实现更高的参数使用,同时显示出轻巧、快速、准确的巨大优势
  • 结合所提出的PGI和GELAN,YOLOv9在MS COCO数据集上的目标检测性能在各个方面都大大超越了现有的实时目标检测器

本文方案

为了解决上述问题,我们提出了一种新的辅助监督框架,称为可编程梯度信息(PGI),如上图(d)所示。PGI主要包括三个组成部分,(1)主分支,(2)辅助可逆分支,(3)多级辅助信息。
从中我们可以看到,PGI 的推理过程仅使用 main 分支,因此不需要任何额外的推理成本。至于其他两个组件,它们用于解决或减缓深度学习方法中的几个重要问题。

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

Auxiliary Reversible Branch

在PGI中,我们提出了辅助可逆分支来生成可靠的梯度并更新网络参数。通过提供从数据映射到目标的信息,损失函数可以提供指导,并避免从与目标不太相关的不完整前馈特征中发现错误相关性的可能性。

我们提出通过引入可逆架构来维护完整的信息,但是在可逆架构中添加主分支会消耗大量的推理成本。我们分析了图 3 (b) 的架构,发现当添加从深层到浅层的额外连接时,推理时间将增加 20% 。当我们将输入数据反复添加到网络的高分辨率计算层(黄框)时,推理时间甚至超过两倍的时间。由于我们的目标是使用可逆架构来获得可靠的梯度,因此“可逆”并不是推理阶段的唯一必要条件。有鉴于此,我们将可逆分支视为深度监督分支的扩展,然后设计辅助可逆分支,如图3(d)所示。

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

Multi-level Auxiliary Information

在本节中,我们将讨论多级辅助信息的工作原理。包括多个预测分支的深度监督架构如图 3 (c) 所示。对于目标检测,可以使用不同的特征金字塔来执行不同的任务,例如,它们可以一起检测不同大小的对象 。因此,在连接到深度监督分支后,将引导浅层特征学习小目标检测所需的特征,此时系统将以其他尺寸物体的位置为背景。然而,上述行为将导致深特征金字塔丢失预测目标对象所需的大量信息。

关于这个问题,我们认为每个特征金字塔都需要接收到所有目标对象的信息,以便后续的主分支能够保留完整的信息来学习对各种目标的预测 。多级辅助信息的概念是在辅助监督的特征金字塔层次层和主分支之间插入一个集成网络,然后用它来组合来自不同预测头返回的梯度,如图3(d)所示。然后,多级辅助信息是聚合包含所有目标对象的梯度信息,并将其传递给主分支,然后更新参数。此时,主分支的特征金字塔层次结构的特征将不再受某些特定对象信息的支配。因此,该方法可以缓解深度监督中的信息破损问题。此外,任何集成网络都可以用于多级辅助信息。 因此,我们可以规划所需的语义级别来指导不同规模的网络架构的学习。

Generalized ELAN

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

本文实验

表 1 列出了我们提出的 YOLOv9 与其他从头开始训练的实时目标检测器的比较。总体而言,现有方法中性能最好的方法是轻量级模型的 YOLO MS-S [ 7] 、中型模型的 YOLO MS [ 7] 、通用模型的 YOLOv7 AF [ 63] 和大型模型的 YOLOv8-X [ 15]

  • 与轻量级和中型型号YOLO MS[7]相比,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在各个方面都有了显著的改进

另一方面,我们还在比较中加入了 ImageNet 预训练模型,结果如图 5 所示。我们分别根据参数和计算量对它们进行比较。

  • 就参数数量而言,性能最好的大型模型是RT DETR。从图 5 中可以看出,在参数利用方面,使用传统卷积的 YOLOv9 甚至比使用深度卷积的 YOLOv9 更好。至于大模型的参数利用率,也大大超过了使用ImageNet预训练模型的RT DETR。更好的是,在深度模型中,YOLOv9 展示了使用 PGI 的巨大优势。通过准确保留和提取将数据映射到目标所需的信息,我们的方法只需要 64% 的参数,同时保持 RT DETR-X 的精度

  • 至于计算量,现有最好的模型从小到大是 YOLO MS、 PP-YOLOE和 RT-DETR。从图 5 中可以看出,YOLOv9 在计算复杂度方面远远优于从头开始训练的方法。此外,如果与基于深度卷积和基于 ImageNet 的预训练模型相比,YOLOv9 也非常有竞争力。

推荐阅读

  • U版YOLO-World来了,YOLOv8再度升级,三行代码上手YOLO-World!
  • YOLO-World | 赋能YOLOv8开集检测能力,构建新一代YOLO新标杆
  • YOLOv8重磅升级,新增旋转目标检测,又该学习了~
  • YOLO-NAS | YOLO新高度,引入NAS,出于YOLOv8而优于YOLOv8
  • YOLOv6 v3.0 | 重磅升级!性能超越V8!
  • DAMO-YOLO | 超越所有YOLO,魔搭社区开源至强YOLO,5行代码即可体验!
  • 南开大学提出YOLO-MS | 超越YOLOv8与RTMDet,即插即用打破性能瓶颈

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

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

相关文章

[electron]官方示例解析

官方例子 github链接 main.js const { app, BrowserWindow } require(electron)说句实话这里的语法是有部分看不懂的。导入模块虽然electron有很多模块。但是这里只是用到了app 和 BrowserWindow function createWindow () {// Create the browser window.const mainWindo…

go语言的理解,看这一篇就够了

1.来源 Go语言是谷歌2009年发布的第二款开源编程语言 2.谷歌为什么要创建Go语言 计算机硬件技术更新频繁, 性能提高很快,默目前主流的编程语言发展明显落后于硬件,不能合理利用多核多CPU的优势提升软件系统性能软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个简洁而高效…

SSM项目集成Spring Security 4.X版本 之 加入DWZ,J-UI框架实现登录和主页菜单显示

目录 前言 一、加入DWZ J-UI框架 二、实现登录页面 三、实现主页面菜单显示 前言 大家好!写文章之前先列出几篇相关文章。本文内容也在其项目中接续实现。 一. SSM项目集成Spring Security 4.X版本(使用spring-security.xml 配置文件方式&#xff…

eclipse中open Type 、 open type in Hierachy、open Resource的区别

目录 场景: open Type open Resource open type in Hierachy 场景: 在项目中想要研究底层代码,经常要用eclipse看依赖jar包的类,比如spring的源码中AbstractApplicationContext类CTLSHIFTT用的少,经常用的CTLSHIR…

YOLO系列论文阅读(v1--v3)

搞目标检测,绕不开的一个框架就是yolo,而且更糟糕的是,随着yolo的发展迭代,yolo网络可以做的事越来越多,语义分割,关键点检测,3D目标检测。。。这几天决定把YOLO系列彻底梳理一下,在…

leet hot 100-4 移动零

移动零 原题链接思路代码 原题链接 leet hot 100-4 283. 移动零 思路 遍历数组 将非0数字 移动到数组前端 数字0就会被移动到数组末端 时间复杂度O(n) 空间复杂度(n) 代码 class Solution { public:void moveZeroes(vector<int>& nums) {int start 0;int ind…

Spring篇----第五篇

系列文章目录 文章目录 系列文章目录前言一、Spring IoC 的实现机制。二、什么是 spring bean?三、spring 提供了哪些配置方式?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享…

XSS原理和攻防

Cross Site Scripting:跨站脚本攻击 用户提交的数据中可以构造恶意代码&#xff0c;并且执行&#xff0c;从而实现窃取用户信息等攻击 攻击&#xff1a; 防御&#xff1a; 1.对输入进行过滤&#xff0c;对输出进行编码 2.cookie设置http-only

Android 如何添加自定义字体

Android 如何添加自定义字体 比如我要添加 jetbrains 相关字体 在 res 文件夹中添加 font 文件夹。里面放入你的字体文件 .ttf .otf&#xff0c;字体文件名需要是小写&#xff0c;只能是字母和下划线。 在 xml 布局文件中直接通过 android:fontFamily"font/jetbrainsmo…

Spring事务失效场景

【事务的回滚仅仅对于unchecked的异常有效。对于checked异常无效。也就是说事务回滚仅仅发生在&#xff0c;出现RuntimeException或Error的时候。通俗一点就是&#xff1a;代码中出现的空指针等异常&#xff0c;会被回滚。而文件读写、网络超时问题等&#xff0c;spring就没法回…

[面试] 什么是死锁? 如何解决死锁?

什么是死锁 死锁&#xff0c;简单来说就是两个或者多个的线程在执行的过程中&#xff0c;争夺同一个共享资源造成的相互等待的现象。如果没有外部干预线程会一直阻塞下去. 导致死锁的原因 互斥条件&#xff0c;共享资源 X 和 Y 只能被一个线程占用; 请求和保持条件&#xf…

U版YOLO-World来了,YOLOv8再度升级,三行代码上手YOLO-World!

本文首发&#xff1a;AIWalker 欢迎关注AIWalker&#xff0c;近距离接触底层视觉与基础AI https://arxiv.org/abs/2401.17270 https://github.com/AILab-CVC/YOLO-World https://github.com/ultralytics/ultralytics https://www.yoloworld.cc/ YOLO-World亮点 YOLO-World是下…

MiKTeX安装后,Latex编译后PDF无法预览,是灰色的

解决方式删掉编译器就可以&#xff0c; 即删掉MiKTeX MiKTeX安装后会将编译器默认修改为MiKTeX&#xff0c;这个时候会显示报错&#xff0c;简单粗暴的方式是删掉MiKTeX软件

AI:135-基于卷积神经网络的艺术品瑕疵检测与修复

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带关键代码,详细讲解供大家学习,希望…

Github 2024-02-21 开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2024-02-21统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目8非开发语言项目1TypeScript项目1 gpt4free 语言模型集合改进计划 创建周期&#xff1a;300 天开…

并发编程(4)共享模型之无锁

6 共享模型之无锁 本章内容 CAS 与 volatile原子整数原子引用原子累加器Unsafe 6.1 问题提出 有如下需求&#xff0c;保证 account.withdraw 取款方法的线程安全 import java.util.ArrayList; import java.util.List;interface Account {// 获取余额Integer getBalance();…

复旦大学MBA:AIGC时代,科技与商业迸发更绚烂的火花

ChatGPT问世以来&#xff0c;AI技术及应用进入一个全速推进的通道&#xff0c;快速迈入通用大模型时代。从AGI(人工通用智能&#xff09;到AIGC(AI多模态内容生成&#xff09;&#xff0c;AI正在飞速重塑各个行业、人类生活乃至人类的未来。在商业领域更是给营销场景和营销工具…

Mac OS 搭建C++开发环境【已解决】

Mac OS 搭建C开发环境 文章目录 Mac OS 搭建C开发环境一、安装命令行工具&#xff1a;二、安装vscode三、安装gcc3.1 安装Homebrew3.2 安装gcc3.3 修改配置 四、更改VSCode默认编译器五、安装gdb六、安装Cmake && git七、编译运行 本地环境&#xff1a; Mac OS Sonoma …

3.openEuler物理存储及逻辑卷管理(一):磁盘存储挂载与使用

openEuler OECA认证辅导,标红的文字为学习重点和考点。 如果需要做实验,建议下载麒麟信安、银河麒麟、统信等具有图形化的操作系统,其安装与openeuler基本一致。 磁盘大类: HDD, (Hard Disk Drive的缩写) : 由一个或者多个铝制或者玻璃制成的磁性碟 片,磁头,…

React18源码: Fiber树中的全局状态与双缓冲

Fiber树构造 在React运行时中&#xff0c;fiber树构造位于 react-reconciler 包在正式解读 fiber 树构造之前&#xff0c;再次回顾一下renconciler的4个阶段 1.输入阶段&#xff1a;衔接react-dom包&#xff0c;承接fiber更新请求2.注册调度任务&#xff1a;与调度中心(schedu…