目标检测-YOLOv9之PGI可编程梯度信息

论文链接: YOLOv9: Learning What You Want to Learn Using Programmable Gradient

代码链接:GitHub - WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information

 YOLOv4-YOLOv7-YOLOv9的作者是同一人,因此YOLOv9是继承的YOLOv7,而不是YOLOv8.

PGI(Programmable Gradient Information)

YOLOv9中的PGI(Programmable Gradient Information,可编程梯度信息)模块是为了解决深度学习目标检测网络在训练过程中遇到的信息丢失问题而设计的。在深度神经网络的训练中,梯度信息对于指导网络参数的更新至关重要,但是随着网络深度的增加,输入数据在前向传播过程中不可避免地会出现信息损失,导致深层特征难以保留浅层特征中的一些重要信息,这被称为信息瓶颈问题。此外,梯度消失问题也会导致深层网络难以得到有效训练。

PGI模块的核心思想是通过引入辅助监督信号,为主干网络提供额外的梯度信息,从而纠正和增强原有的梯度。PGI包含以下几个关键组件:

  1. 主干网络:即原始的目标检测网络,如YOLOv9中的GELAN结构,负责提取特征并生成检测结果。

  2. 辅助可逆分支:一个附加的网络分支,与主干网络并行。可逆分支的目的是在不增加推理成本的情况下,为主干网络提供额外的梯度信息。可逆分支通过可逆操作(如加法、乘法等)将浅层特征融合到深层特征中,从而缓解信息瓶颈问题。

  3. 多级辅助监督:在可逆分支的不同层级上引入辅助监督信号,如FPN loss和PAN loss。这些辅助损失函数提供了额外的梯度信息,帮助模型更好地学习多尺度特征。

PGI的工作流程如下

  • 数据通过主干网络和可逆分支进行前向传播,生成检测结果和辅助监督信号。
  • 计算主损失函数(如box loss、class loss和DFL loss)以及辅助损失函数(如FPN loss和PAN loss),得到总的损失函数。
  • 通过反向传播计算梯度,其中主干网络的梯度来自主损失函数,而可逆分支的梯度来自辅助损失函数。
  • 将可逆分支的梯度通过可逆操作“传递”给主干网络,实现梯度的融合和增强。
  • 使用优化器(如SGD)更新主干网络和可逆分支的参数,完成一次迭代。

PGI的创新点

  • 通过可逆操作实现了梯度的无损传递,避免了深层网络中的梯度消失问题。
  • 引入了多级辅助监督,提供了丰富的梯度信息,有助于模型学习更加鲁棒和通用的特征表示。
  • 通过调整辅助监督的权重,实现了对梯度的“编程”,使得模型能够根据任务的需求自适应地调整优化方向。
  • 与主干网络解耦,不增加推理成本,非常适合实时检测任务。

PGI模块的引入显著提升了YOLOv9在目标检测任务中的性能,同时由于可逆分支在推理阶段可以移除,PGI不会带来额外的计算开销,非常适合实时检测的应用场景。

  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值