本文来自公众号“AI大道理”
当前的深度学习方法关注的是如何设计最合适的目标函数,使模型的预测结果最接近地面的真实情况。同时,必须设计一个适当的体系结构,以方便获取足够的预测信息。
现有方法忽略了一个事实,即输入数据在逐层进行特征提取和空间变换时,会丢失大量的信息。
YOLOv9给出了解决方案。
YOLOv9前身是YOLOv7,这是同一个团队。
1、YOLOv9的改进
在反向传播中深层特征层由于更加靠近标签,所以参数更容易更新,而浅层(离输入图片近的对方)由于山高皇帝远比较难以更新。
怎么办?YOLOv9左右开弓,建立辅助头。
右边是熟悉的类似yolov8一样的结构,是标准的neck+head结构。
左边则新建一个backbone,乱七八糟一堆neck,加上head作为辅助头。
有什么用?
backbone一般来说需要从右边的检测头经过neck再慢慢回传,现在YOLOv9有了左边的分支,左边的backbone离检测头要近很多,从这里回传又快损失又少。这个backbone和主路的backbone一模一样,共享参数。
当然这么做只是在训练的时候更好的训练,一旦到了推理和测试阶段,辅助头果断抛弃,只留下标准的右边的结构即可。
这个思想之前在检测头部分已经有了,只不过那时候是为了更好的训练检测头,现在是为了更好的训练浅层部分。
(这个思想怎么这么熟悉,和resnet有异曲同工之妙)
核心改进两点:
-
PGI(可编程梯度信息)
-
GLEAN(广义高效层聚合网络)
2、PGI(可编程梯度信息)
在深度网络的训练过程中,由于层与层之间的复杂映射,有用的信息可能会逐渐丢失,这会导致梯度信号变弱,最终影响网络的学习效率和预测准确性。
PGI是一种旨在解决深度网络中的信息瓶颈问题的策略,它可以为目标任务提供完整的输入信息来计算目标函数,从而获得可靠的梯度信息来更新网络权值。
YOLOv9的PGI技术包括辅助可逆分支和多级辅助信息,这些设计有助于在网络的深层中保留更多的信息,生成更可靠的梯度,从而在训练过程中确保了更准确的目标与输入之间的关联。
(可编程梯度信息的解释:一个高大上的名字,无非就是想说你可以随意回传到哪一层,你可以自己决定,即可编程,主要还是在于这个思想)
PAN (Path Aggregation Network): 这种结构通过聚合不同路径的信息来缓解信息瓶颈问题,但仍然存在信息丢失的问题。
RevCol (Reversible Columns): 这种结构旨在保持信息流的完整性,通过可逆列来避免信息的损失,但代价是计算成本较高。
深度监督 (Deep Supervision): 这个方法通过在网络的不同深度层添加预测头来实现辅助监督,这可以帮助网络学习到多层次的辅助信息,但可能导致信息损坏。
可编程梯度信息 (PGI): 这是论文提出的新方法,它通过辅助可逆分支产生可靠的梯度,以供主分支使用,从而控制主分支在多个语义层次上的学习,这有助于更好地保留语义信息并优化梯度流。
图中的蓝色块代表神经网络中的层,灰色块代表预测头或辅助分支,虚线框高亮了每种方法的关键特征。
3、GLEAN(广义高效层聚合网络)
广义高效层聚合网络(GELAN)是一种新颖的架构,它结合了 CSPNet 和 ELAN 原理来进行梯度路径规划。它优先考虑轻量级设计、快速推理和准确性。GELAN 通过允许任何计算块来扩展 ELAN 的层聚合,从而确保灵活性。
该架构旨在实现高效的特征聚合,同时在速度和准确性方面保持有竞争力的性能。GELAN的整体设计融合了CSPNet的跨级部分连接和ELAN的高效层聚合,以实现有效的梯度传播和特征聚合。
GELAN是将CSPNet和ELAN的特点结合在一起,并扩展以支持任何计算块的新型网络架构。
CSPNet: 这种架构包括一个分裂-合并的过程,它通过在网络的不同层之间分裂和合并特征来提高性能和效率。
ELAN: 这是一种更进一步的架构,它在CSPNet的基础上增加了多个卷积层(conv)的堆叠,每个卷积层都会进行特征转换,之后再进行合并。
GELAN: 提出的GELAN架构不仅模仿了CSPNet的分裂-合并机制,还扩展了ELAN的设计,使其可以使用任何类型的计算块,而不仅限于卷积层。
这种设计增加了网络的灵活性,使其能够根据不同的应用需求选择最合适的计算块。
4、其他
backbone:主要就是多了一条backhone,backbone中使用了RepNCSPELAN4 模块。
neck/head:主要是增加了辅助头。
loss function:loss为DFL Loss + CIoU Loss
正负样本匹配策略:为TaskAlign样本匹配
5、总结
YOLOv9结合了PGI(可编程梯度信息)和GELAN(广义高效层聚合网络)技术来克服信息瓶颈和深度监督在轻量级网络中的不适用性问题。
YOLOv9的PGI技术包括辅助可逆分支和多级辅助信息,这些设计有助于在网络的深层中保留更多的信息,生成更可靠的梯度,从而在训练过程中确保了更准确的目标与输入之间的关联。
(左边的辅助头可以千变万化,又是一个魔改的方向,目测要yolov1000000......)
——————
浅谈则止,细致入微AI大道理
扫描下方“AI大道理”,选择“关注”公众号
—————————————————————
—————————————————————
投稿吧 | 留言吧