YOLOv9:通过可编程梯度信息学习想学习的内容.
YOLOv9是在YOLOv7的基础上进行的改进,指出现有方法存在如下的2个问题:
- 现有方法都是关注如何设计一个更好的损失函数,而一个好的网络结构可以获取更多的信息以提升预测效果;
- 现有方案忽略了当输入数据进行逐层特征提取和空间变换时,会丢失大量信息的问题。
针对以上两个问题,YOLOv9主要有以下2点改进:
- 设计了一种基于梯度路径规划的新型轻量级网络架构:广义高效层聚合网络 Generalized Efficient Layer Aggregation Netwwork(GELAN)。与基于深度卷积的现有方法相比,GELAN仅使用传统的卷积算子即可实现更好的参数利用。
- 提出可编程梯度信息 PGI(programmable Gradient Information),以解决网络随着深度的增加,损失大量信息的问题。PGI可以为目标任务提供完整的输入信息来计算目标函数,从而获得可靠的梯度信息来更新网络权重。
结合所提出的PGI和GELAN,YOLOv9在MS COCO数据集上的目标检测性能在各个方面都大大超越了现有的实时目标检测器。
1. 广义高效层聚合网络 Generalized Efficient Layer Aggregation Netwwork
GELAN将ELAN中的卷积组替换成带有RepConv的CSPNet,相当于增加网络的宽度。RepConv通过结构参数化思想,让训练网络的多路结构在推理时转换为单路结构,以节省内存并提高前向处理速度。
2. 可编程梯度信息 Programmable Gradient Information
PGI主要包括三个组成部分,即主分支、辅助可逆分支、多级辅助信息。从输入开始,PGI搭建了跟主干网络类似的网络结构,使用辅助分支自己提取的特征来预测目标,从而计算辅助损失。在训练时相当于增加了一倍的权重,因此训练时间也会随着增加。
- PGI的推理流程仅涉及主分支,避免了额外推理成本的产生。
- 辅助可逆分支:解决网络深度带来的信息丢失问题。这种信息瓶颈会干扰损失函数生成有效梯度的能力,辅助可逆分支通过保持信息流动的完整性来克服这一障碍。
- 多级辅助信息:解决深度监督带来的错误累积问题,尤其是在拥有多个预测分支的结构和轻量级模型中。通过引入多级辅助信息,模型能够更有效地学习并减少误差传播。
对于多级辅助信息,为了有效地保持目标信息的完整性,每一级的特征金字塔都应该接受到有关所有目标大小的信息。为此,在辅助监督特征金字塔层和主分支之间加入集成网络,整合来自不同预测分支的梯度信息,并将这一聚合的信息传递给主分支,以促进参数的更新。通过这种方法,主分支的特征金字塔不再仅仅被某一特定规模目标的信息所支配,而是能够综合考虑各种规模的目标信息,从而解决了深度监督可能引起的信息断裂问题。
对于辅助可逆分支,在多级辅助的深度监督分支中采用可逆卷积,以保持特征信息流动的完整性。可逆卷积通过引入可逆结构,使得梯度信息能够从辅助分支反向传播到主分支。盖房阿飞不会强制主分支保留完整原始信息,而是通过辅助监督机制生成有用的梯度进行更新。
3. 实验分析
下表列出了YOLOv9与其他从头开始训练的实时目标检测器的比较。现有方法中性能最好的方法是轻量级模型的 YOLO MS-S 、中型模型的 YOLO MS 、通用模型的 YOLOv7 AF 和大型模型的 YOLOv8-X。与现有方法相比,YOLOv9在各个方面都有了显著的改进。
作者展示了使用随机初始权重作为不同架构下的前馈得到的特征图的可视化结果。可以看到随着层数的增加,所有架构的原始信息逐渐减少。例如在PlainNet的第50层,很难看到物体的位置,到了第100层,所有可辨别的特征都会丢失。至于ResNet,尽管在第50层仍然可以看到物体的位置,但边界信息已经丢失。当深度达到第100层时,整个图像变得模糊。CSPNet和提出的GELAN表现都非常好,它们都能够维持到第200层时支持清晰识别物体的特征。在对比中, GELAN的结果更稳定,边界信息也更清晰。
下图展示了PGI技术在训练过程中如何提供更准确的梯度信息,这些信息对于更新模型参数至关重要,以确保模型能够有效地识别输入数据与目标之间的关系。通过比较使用PGI前后的YOLOv9的特征图可视化结果,可以明显观察到PGI技术使模型更加精确地定位到了含有物体的区域。相比之下,未集成PGI技术的GELAN在检测物体边界时显示出一定程度的发散现象,并且在非目标的背景区域误激活了一些响应。这一对比强有力地证明了PGI技术在提供有助于参数优化的梯度方面的有效性,进而使模型在前馈过程中能够保留更多关键特征,从而提高了检测的准确性和可靠性。