请你继续卷:YOLOV9

yolov9

关键词:yolov7、 yolov9 、 机器学习、深度学习 、 目标检测

引言

  yolov7-depth,yolov7-3d挂了两年还没出,真是服了,现在又搞个yolov9。吐槽归吐槽,但新菜来了,又怎能忍住不品尝呢?大家通过我的吐槽隐约可以得到一个结论:yolov7和yolov9是同一拨作者。在这里我们一起看看最新的yolov9有哪些变化呢?

前言

  现在的深度学习方法集中在如何设计最合适的目标函数,使模型的检测结果更接近真值。同时,一个合适的架构可以充分获取足够的信息以进行预测,但这需要精妙的设计。现在存在的方法忽略了这样的一个事实:当输入数据经历逐层特征时空间转换,大量的信息会丢失。在yolov9这篇文章中主要是在讨论:当数据通过深度网络传输时数据丢失的情况,即信息瓶颈和可逆函数。

核心贡献:

  1. YOLOv9从可逆函数角度理论上分析了现有的CNN架构,基于这种分析,YOLOv9作者还设计了PGI和辅助可逆分支,并取得了优秀的结果;
  2. YOLOv9用到的PGI解决了深度监督只能用于极深的神经网络架构的问题,因此使得新的轻量级架构才更适合落地;
  3. YOLOv9中设计的GELAN仅使用传统卷积,就能实现比基于最先进技术的深度可分卷积设计更高的参数使用率,同时展现出轻量级、快速和精确的巨大优势;
  4. 基于所提出的PGI和GELAN,YOLOv9在MS COCO数据集上的性能在所有方面都大大超过了现有的实时目标检测器。

综合比对

GELAN

  通过下图我们可以得到在更小parameter的可以获取更高的精度。这是受益于广义有效聚合网络(GELAN),设计了基于梯度路径规划设计GELAN。

  在深度学习中向前传播过程中数据会存在丢失,这种丢失现象通常被描述为信息瓶颈问题。如下图所示,在不同网络结构的随机初始权重输出特征映射的可视化结果,从左至右分别是:原始图像、PlainNet、ResNet、CSPNet、GELAN 在图中我们可以看到在不同体系结构中GELAN可以保持最为完整的信息,这为计算目标函数提供了最可靠的梯度信息。

  GELAN通过结合两种神经网络架构,即结合用梯度路径规划(CSPNet)和(ELAN)设计了一种广义的高效层聚合网络(GELAN);GELAN综合考虑了轻量级、推理速度和准确度。GELAN整体架构如下图所示: YOLOv9将ELAN的能力进行了泛化,原始ELAN仅使用卷积层的堆叠,而GELAN可以使用任何计算块作为基础Module。

PGI

  PGI及相关的网络架构和方法如下图所示。其主要组成部分为:

  1. 主干分支;
  2. 辅助可逆分支;
  3. 多级辅助信息;   根据图中的信息传递可得到PGI在推理的过程中仅使用主分支,所以不需要额外的推理成本。这一设计精巧地应对了深度学习中的关键挑战,通过两个关键组件提升模型性能:

1.辅助可逆分支:引入此组件是为了解决随着网络深度增加而引发的信息瓶颈问题。这种信息瓶颈会干扰损失函数生成有效梯度的能力,辅助可逆分支通过保持信息流动的完整性来克服这一障碍。

2.多级辅助信息:此部分旨在解决深度监督可能导致的误差累积问题,尤其是在拥有多个预测分支的结构和轻量级模型中。通过引入多级辅助信息,模型能够更有效地学习并减少误差传播

  【最先进的实时对象检测器的比较:】从下表中的比对信息可以看出在2D领域的目标检测yolov9性能的确top,后续应该会有各种魔改v9的操作吧。

  GELAN的pan特征图(可视化结果)和yolov9(gelen+pgi)采用热启动。gelan在初始阶段有一些不同,但是在加入了PGI后可逆分支,它能更好的聚焦于目标检测。

相关推荐
汤姆宝库9 分钟前
安全深拆:越狱物理、注入攻击与纵深防御
人工智能·安全·机器学习·ai
moshuying1 小时前
块扩散 + GDN 改造:Clover 把「并行生成」塞进了 Agent 的长上下文里
前端·算法
没落之王1 小时前
历史系统建模:宋初太祖太宗「再立天庭」秩序重构推演
人工智能·算法·重构
INGNIGHT2 小时前
91 · 最小调整代价(序列dp)
数据结构·算法·leetcode
moshuying2 小时前
扩散模型开始写代码、开网页了:350 亿参数,速度比 Jev 快一倍
前端·算法
小超人诞生日记2 小时前
C++ 异常机制详解:从抛出捕获到异常安全
c++·算法
成都旺小宝科技3 小时前
AI工牌案例:华润静安府话术执行率提到62%
人工智能·机器学习·房地产
xsd202411183 小时前
智慧园区算法平台搭建详解:从模型仓到统一推理,多模型怎么管起来
人工智能·深度学习
labuladong3 小时前
机器学习&神经网络 系列教程上线
神经网络·算法·机器学习
xiangyun613 小时前
C++ 手撕 shared_ptr:引用计数与控制块到底长什么样?
开发语言·c++·算法·面试·stl