YOLOv9来啦!YOLO目标检测全新工作!性能表现SOTA!在各个方面都大大超过了RT-DETR、YOLOv8等

摘要

今天的深度学习方法侧重于如何设计最合适的目标函数,使模型的预测结果最接近实际情况。同时,必须设计一种适当的架构,该架构可以促进获取足够的信息用于预测。现有的方法忽略了一个事实,即当输入数据经过逐层特征提取和空间变换时,会丢失大量信息。本文将深入研究数据通过深度网络传输时数据丢失的重要问题,即信息瓶颈和可逆函数。我们提出了可编程梯度信息(PGI)的概念,以应对深度网络实现多个目标所需的各种变化。PGI可以为目标任务提供完整的输入信息来计算目标函数,从而获得可靠的梯度信息来更新网络权重。此外,还设计了一种新的基于梯度路径规划的轻量级网络架构——广义高效层聚合网络(GELAN)。GELAN的架构证实了PGI在轻量级模型上取得了卓越的成果。我们在基于MS COCO数据集的目标检测上验证了所提出的GELAN和PGI。结果表明,与基于深度卷积开发的最先进方法相比,GELAN仅使用传统的卷积算子来实现更好的参数利用率。PGI可以用于从轻量级到大型的各种模型。它可以用于获得完整的信息,因此从头开始训练的模型可以获得比使用大型数据集预先训练的现有模型更好的结果,比较结果如图1所示 

YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information 

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

1 Introduction

在计算机视觉、语言处理和语音识别等各个领域,基于深度学习的模型已经显示出比过去的人工智能系统更好的性能。近年来,深度学习领域的研究人员主要关注如何开发更强大的系统架构和学习方法,如CNN,Transformer,Perceivers和Mambas。此外,一些研究人员试图开发更通用的目标函数,如损失函数、标签分配和辅助监督。上述研究都试图准确地找到输入任务和目标任务之间的映射。然而,大多数过去的方法都忽略了输入数据在前馈过程中可能具有不可忽略的信息损失量。这种信息丢失可能导致有偏差的梯度流,随后用于更新模型。上述问题可能导致深度网络在目标和输入之间建立不正确的关联,导致训练的模型产生不正确的预测。 

在深度网络中,输入数据在前馈过程中丢失信息的现象通常被称为信息瓶颈,其原理图如图2所示。目前,可以缓解这一现象的主要方法如下:

(1)使用可逆架构:这种方法主要使用重复的输入数据,并以显式的方式维护输入数据的信息;

(2) 掩蔽建模的使用:主要利用重建损失,采用隐式方法最大化提取的特征,保留输入信息;

(3)引入深度监督概念:它使用没有丢失太多重要信息的浅层特征来预先建立从特征到目标的映射,以确保重要信息可以转移到更深的层。

然而,上述方法在训练过程和推理过程中都有不同的缺点。例如,可逆架构需要额外的层来组合重复馈送的输入数据,这将显著增加推理成本。此外,由于输入数据层到输出层不能有太深的路径,这种限制将使训练过程中难以对高阶语义信息进行建模。对于掩模建模,其重建损失有时与目标损失相冲突。此外,大多数掩码机制也会产生与数据的不正确关联。对于深度监督机制来说,它会产生错误积累,如果浅层监督在训练过程中丢失信息,后续层将无法检索到所需的信息。上述现象在困难任务和小型模型中更为显著。

为了解决上述问题,我们提出了一个新的概念,即可编程梯度信息(PGI)。其概念是通过辅助可逆分支生成可靠的梯度,使深层特征仍能保持执行目标任务的关键特征。辅助可逆分支的设计可以避免传统的集成多路径特征的深度监督过程可能导致的语义损失。换句话说,我们正在对不同语义级别的梯度信息传播进行编程,从而获得最佳的训练结果。PGI的可逆架构建立在辅助分支上,因此不需要额外的成本。由于PGI可以自由选择适合目标任务的损失函数,它也克服了掩模建模所遇到的问题。所提出的PGI机制可以应用于各种规模的深度神经网络,并且比仅适用于非常深度神经网络的深度监督机制更通用。

在本文中,我们还在ELAN的基础上设计了generalized ELAN(GELAN),GELAN的设计同时考虑了参数的数量、计算复杂度、准确性和推理速度。这种设计允许用户为不同的推理设备任意选择合适的计算块。我们将所提出的PGI和GELAN相结合,然后设计了新一代YOLO系列目标检测系统,我们称之为YOLOv9。我们使用MS COCO数据集进行了实验,实验结果验证了我们提出的YOLOv9在所有比较中都取得了最佳性能。

将本文的贡献总结如下:

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

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

  • 设计的GELAN仅使用传统卷积,比基于最先进技术的深度卷积设计实现了更高的参数使用率,同时显示出轻、快、准确的巨大优势。

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

2 Methodology

2.1. Programmable Gradient Information

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

2.1.1 Auxiliary Reversible Branch

在PGI中,我们提出了辅助可逆分支来生成可靠的梯度并更新网络参数。通过提供从数据映射到目标的信息,损失函数可以提供指导,并避免从与目标不太相关的不完整前馈特征中发现虚假相关性的可能性。我们提出通过引入可逆结构来维护完整信息,但在可逆结构中添加主分支将消耗大量的推理成本。我们分析了图3(b)的架构,发现当添加从深层到浅层的额外连接时,推理时间将增加20%。当我们反复将输入数据添加到网络的高分辨率计算层(黄色框)时,推理时间甚至超过了时间的两倍。

由于我们的目标是使用可逆结构来获得可靠的梯度,因此“可逆”并不是推理阶段的唯一必要条件。有鉴于此,我们将可逆分支视为深度监管分支的扩展,然后设计辅助可逆分支,如图3(d)所示。至于由于信息瓶颈而丢失重要信息的主要分支深层特征,它们将能够从辅助可逆分支接收可靠的梯度信息。这些梯度信息将驱动参数学习,以帮助提取正确和重要的信息,并且上述动作可以使主分支获得对目标任务更有效的特征。此外,可逆架构在浅层网络上的性能比在一般网络上差,因为复杂的任务需要在更深的网络中进行转换。我们提出的方法并不强迫主分支保留完整的原始信息,而是通过辅助监督机制生成有用的梯度来更新它。这种设计的优点是,所提出的方法也可以应用于较浅的网络。

最后,由于在推理阶段可以去除辅助可逆分支,因此可以保留原始网络的推理能力。我们也可以选择PGI中的任何可逆结构来发挥辅助可逆分支的作用。

2.1.2 Multi-level Auxiliary Information

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

多级辅助信息的概念是在辅助监督的特征金字塔层次层和主分支之间插入一个集成网络,然后使用它来组合来自不同预测头的返回梯度,如图3(d)所示。多级辅助信息是对包含所有目标对象的梯度信息进行聚合,并将其传递给主分支,然后更新参数。此时,主分支的特征金字塔层次结构的特征将不会被某些特定对象的信息所支配。因此,我们的方法可以缓解深度监管中的信息泄露问题。此外,任何集成网络都可以用于多级辅助信息。因此,我们可以规划所需的语义级别,以指导不同规模的网络架构的学习。

2.2. Generalized ELAN

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

3 Experiments

3.1 Comparison with state-of-the-arts

表1列出了我们提出的YOLOv9与其他从头开始的实时物体探测器的比较。总体而言,现有方法中性能最好的方法是用于轻型模型的YOLO MS-S,用于中型模型的YOLO-MS、用于通用模型的YOLONV7-AF和用于大型模型的YOlonv8-X。与轻型和中型型号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甚至比使用深度卷积的YOLO MS更好。在大模型的参数利用方面,它也大大超过了使用ImageNet预训练模型的RT-DETR。更好的是,在深度模型中,YOLOv9展示了使用PGI的巨大优势。通过准确地保留和提取将数据映射到目标所需的信息,我们的方法只需要64%的参数,同时保持RT-DETR-X的准确性。

 

 

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

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

相关文章

【Linux】再谈进程地址空间

目录 一、引入 二、物理内存和外设空间的交互 三、解决页表过大问题 一、引入 我们在往期的博客中有讲解过进程地址空间:【Linux】进程地址空间 但是在上述博客中我们只是对进程地址空间的左边部分详细进行了讲解,下面我们就来谈谈右边的部分&#…

第3.6章:StarRocks数据导入——DataX StarRocksWriter

一、Datax 1.1 DataX 3.0概述 DataX3.0是一个异构数据源离线同步工具,可以方便的对各种异构数据源进行高效的数据同步。 其github地址为: https://github.com/alibaba/DataX/blob/master/introduction.mdhttps://github.com/alibaba/DataX/blob/mast…

盘点那些世界名校计算机专业采用的教材

清华、北大、MIT、CMU、斯坦福的学霸们在新学期里要学什么?今天我们来盘点一下那些世界名校计算机专业采用的教材。 书单目录 1.《深入理解计算机系统》(原书第3版)2. 《算法导论》(原书第3版)3. 《计算机程序的构造和…

el-table增加/编辑打开el-dialog内嵌套el-form,解决编辑重置表单不成功等问题

需求:在做表格的增删改查,其中新增和编辑弹窗都是同一个弹窗,之后有个重置按钮,需要用户输入的时候可以重置清空等。本文章解决如下问题 1.就是在编辑数据回填后点击重置表单没有清空也没有报错 2.解决清空表单和表格数据相互影响…

C-MAPSS涡扇发动机仿真数据(PHM2008)

数据集介绍 在开始介绍数据集之前,先帮大家理清一下涡扇发动机的数据(NASA提供,本文中称为数据集A)和PHM2008竞赛数据(本文称为数据集B)的关系。之所以将数据集A和数据集B放在一篇文章中,是因为…

【论文解读】transformer小目标检测综述

目录 一、简要介绍 二、研究背景 三、用于小目标检测的transformer 3.1 Object Representation 3.2 Fast Attention for High-Resolution or Multi-Scale Feature Maps 3.3 Fully Transformer-Based Detectors 3.4 Architecture and Block Modifications 3.6 Improved …

MT8788|MTK8788安卓核心板参数_4G联发科MTK模块

MT8788核心板是一款功能强大的4G全网通安卓智能模块。该模块采用了联发科AIOT芯片平台,具有长达8年的生命周期。MT8788模块内置了12nm制程的八核处理器,包括4个Cortex A73和4个Coretex A53,主频最高可达2.0GHZ。标配内存为4GB64GB&#xff0c…

01 Linux简介

Linux背景 发展史 linux从哪来的?怎么发展的?得从UNIX说起 1968年,一些来自通用电气公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊操作系统。Multics在多任务文件管理和用户连接中综合了许多新概念1969-1970年&am…

智能运维服务指的是哪些?智能运维阶段有哪些

智能运维服务通常包含哪些关键组成部分?它们在IT管理中的作用和重要性?智能运维的发展可以分为哪些主要阶段?每个阶段的核心技术或实践有哪些,它们是如何推动运维工作向更高水平的自动化和智能化发展的? 智能运维服务…

Linux离线安装插件

当公司Linux环境无外网情况下,需要先下载好离线安装包,然后上传到服务器,进行安装。 这里介绍一个下载插件安装包的网站,可以搜索到lrzsz、lsof、telnet、unzip、zip等安装包 搜索到想要的插件安装包后,下载并上传到服…

Ubuntu20.04安装Carla0.9.15

文章目录 环境要求下载Carla解压Carla运行Carla测试官方用例创建python环境安装依赖包案例:生成车辆案例:测试自动驾驶 参考链接 环境要求 系统配置要求: 至少3G显存的GPU,推荐3060及以上的显卡进行Carla拟真。预留足够的硬盘空…

Tomcat线程池原理(上篇:初始化原理)

文章目录 前言正文一、从启动脚本开始分析二、ProtocolHandler 的启动原理三、AbstractEndPoint 的启动原理四、创建默认线程池五、参数配置原理5.1 常规的参数配置5.2 自定义线程池5.3 测试自定义线程 前言 在Java Web的开发过程中,Tomcat常用的web容器。SpringBo…

C#知识点-13(进程、多线程、使用Socket实现服务器与客户端通信)

进程 定义:每一个正在运行的应用程序,都是一个进程 进程不等于正在运行的应用程序。而是为应用程序的运行构建一个运行环境 Process[] pros Process.GetProcesses();//获取电脑中所有正在运行的进程//通过进程,直接打开文件//告诉进程&…

cmd命令开启windows桌面远程控制并设置防火墙允许远程

cmd命令开启桌面远程控制 1、开启之前: 2、使用管理员身份运行cmd 3、执行cmd命令 reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlset\Control\Terminal server" /v fDenyTSConnections /t REG_DWORD /d 0 /f4、如果这台电脑的防火墙打开&#xff…

Android14 InputManager-InputManagerService环境的构造

IMS分为Java层与Native层两个部分,其启动过程是从Java部分的初始化开始,进而完成Native部分的初始化。 □创建新的IMS对象。 □调用IMS对象的start()函数完成启动 同其他系统服务一样,IMS在SystemServer中的ServerT…

股票K线认知从形态到逻辑,仓位管理与交易体系实战

一、教程描述 本套教程内容分为三个部分,1、基础篇:讲的都是干货基础,有些是书本上没有的,通过对基础知识的掌握,对技术形态会有更深的理解,比如集合竞价、K线指标、盘中看盘技巧等等。2、交易篇&#xff…

CentOS升级python

1、下载python39 https://mirrors.huaweicloud.com/python/3.9.0/Python-3.9.0.tgz2、拷贝到Linux环境(当然也可以直接在Linux环境使用wget直接下载) 先安装一下依赖,不然编译会有问题 sudo yum -y install zlib-devel bzip2-devel openssl…

【day02】每天三道 java后端面试题:Java、C++和Go的区别 | Redis的特点和应用场景 | 计算机网络七层模型

文章目录 1. Java、C和 Go 语言的区别,各自的优缺点?2. 什么是Redis?Redis 有哪些特点? Redis有哪些常见的应用场景?3. 简述计算机网络七层模型和各自的作用? 1. Java、C和 Go 语言的区别,各自的…

C#算法(12)—对图像像素做X/Y方向的偏移

我们在上位机开发领域有时候需要对获取的图像的像素做整体的偏移,比如所有像素在X方向上偏移几个像素,或者所有像素在Y方向上偏移几个像素,本文就是开发了像素整体偏移算法来解决这个问题。 比如有一个图像大小为3*3,像素值如下图1,如果我想实现将这个幅图像的像素整体往右…

Neon简介

欢迎关注“安全有理”微信公众号。 概述 本文介绍了 Arm Neon 技术,一种⾼级 SIMD(Single Instruction Multiple Data,一条指令操作多个数据)架构扩展,Armv8‑A 和 Armv8-R 架构支持了 Neon 技术扩展。 Neon 技术是指…