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

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

关注公众号:资源充电吧


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

  • 10
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

充电君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值