引言
yolov7-depth,yolov7-3d挂了两年还没出,真是服了,现在又搞个yolov9。吐槽归吐槽,但新菜来了,又怎能忍住不品尝呢?大家通过我的吐槽隐约可以得到一个结论:yolov7和yolov9是同一拨作者。在这里我们一起看看最新的yolov9有哪些变化呢?
前言
现在的深度学习方法集中在如何设计最合适的目标函数,使模型的检测结果更接近真值。同时,一个合适的架构可以充分获取足够的信息以进行预测,但这需要精妙的设计。现在存在的方法忽略了这样的一个事实:当输入数据经历逐层特征时空间转换,大量的信息会丢失。在yolov9这篇文章中主要是在讨论:当数据通过深度网络传输时数据丢失的情况,即信息瓶颈和可逆函数。
核心贡献:
- YOLOv9从可逆函数角度理论上分析了现有的CNN架构,基于这种分析,YOLOv9作者还设计了PGI和辅助可逆分支,并取得了优秀的结果;
- YOLOv9用到的PGI解决了深度监督只能用于极深的神经网络架构的问题,因此使得新的轻量级架构才更适合落地;
- YOLOv9中设计的GELAN仅使用传统卷积,就能实现比基于最先进技术的深度可分卷积设计更高的参数使用率,同时展现出轻量级、快速和精确的巨大优势;
- 基于所提出的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及相关的网络架构和方法如下图所示。其主要组成部分为:
- 主干分支;
- 辅助可逆分支;
- 多级辅助信息;
根据图中的信息传递可得到PGI在推理的过程中仅使用主分支,所以不需要额外的推理成本。这一设计精巧地应对了深度学习中的关键挑战,通过两个关键组件提升模型性能:
1.辅助可逆分支:引入此组件是为了解决随着网络深度增加而引发的信息瓶颈问题。这种信息瓶颈会干扰损失函数生成有效梯度的能力,辅助可逆分支通过保持信息流动的完整性来克服这一障碍。
2.多级辅助信息:此部分旨在解决深度监督可能导致的误差累积问题,尤其是在拥有多个预测分支的结构和轻量级模型中。通过引入多级辅助信息,模型能够更有效地学习并减少误差传播
【最先进的实时对象检测器的比较:】从下表中的比对信息可以看出在2D领域的目标检测yolov9性能的确top,后续应该会有各种魔改v9的操作吧。
GELAN的pan特征图(可视化结果)和yolov9(gelen+pgi)采用热启动。gelan在初始阶段有一些不同,但是在加入了PGI后可逆分支,它能更好的聚焦于目标检测。