请你继续卷: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后可逆分支,它能更好的聚焦于目标检测。

相关推荐
文火冰糖的硅基工坊2 分钟前
[嵌入式系统-150]:智能机器人(具身智能)内部的嵌入式系统以及各自的功能、硬件架构、操作系统、软件架构
android·linux·算法·ubuntu·机器人·硬件架构
郝学胜-神的一滴11 分钟前
主成分分析(PCA)在计算机图形学中的深入解析与应用
开发语言·人工智能·算法·机器学习·1024程序员节
武子康24 分钟前
DeepSeek-OCR 原理剖析|上下文光学压缩、Gundam 动态分辨率与并发预期 附代码
深度学习·aigc·deepseek
鸽鸽程序猿39 分钟前
【算法】【动态规划】斐波那契数模型
算法·动态规划·1024程序员节
StarPrayers.1 小时前
神经网络中的 HWC→CHW 格式转换
人工智能·深度学习·神经网络
Samuel-Gyx1 小时前
数据结构--顺序表与链表
数据结构·算法·链表·1024程序员节
小年糕是糕手1 小时前
【数据结构】队列“0”基础知识讲解 + 实战演练
c语言·开发语言·数据结构·c++·学习·算法
无限进步_1 小时前
【C语言】函数指针数组:从条件分支到转移表的优雅进化
c语言·开发语言·数据结构·后端·算法·visual studio
数据科学作家1 小时前
如何入门python机器学习?金融从业人员如何快速学习Python、机器学习?机器学习、数据科学如何进阶成为大神?
大数据·开发语言·人工智能·python·机器学习·数据分析·统计分析
Q741_1472 小时前
C++ 分治 快速选择算法 堆排序 TopK问题 力扣 215. 数组中的第K个最大元素 题解 每日一题
c++·算法·leetcode·分治·1024程序员节·topk问题·快速选择算法