当前位置:   article > 正文

CV 经典主干网络 (Backbone) 系列: CSPNet

cspnet

引言

对于传统深度学习,总是想达到一个增加速度同时精度提高的效果。而CSPNet的出现,告诉人们:这是可能的!
CSPNet解决了其他大型卷积神经网络框架Backbone中网络优化的梯度信息重复问题,将梯度的变化从头到尾地集成到特征图中,因此减少了模型的参数量和FLOPS数值,既保证了推理速度和准确率,又减小了模型尺寸。

1.模型介绍

在YOLOv4中,使用CSPDarknet53作为Backbone。CSPDarknet53对YOLOv3中使用的Darknet53做了一点改进,借鉴了CSPNet,CSPNet全称是Cross Stage Partial Networks,也就是跨阶段局部网络。CSPNet的网络结构如下图:
在这里插入图片描述
如果看过之前的DenseNet的相关介绍,就会发现CSPNet的结构与其实类似的。区别在于在输入部分将数据分成了两个部分: x 0 ′ x_{0'} x0 x 0 ′ ′ x_{0''} x0′′ 。然后 x 0 ′ ′ x_{0''} x0′′ 的部分传入网络进行相关的DenseNet操作。

2. CSPNet的优点

CSPNet的优点主要包括两个方面:

  • 减少了模型的参数量和FLOPS数值
  • 解决了梯度信息重复问题
  • 减少内存流量

2.1 减少了模型的参数量和FLOPS数值

在CSPNet中,由于参与DenseNet 操作的基础层通道仅占原始数据的一半,可以有效解决近一半的计算瓶颈,从而减少了模型的参数量和FLOPS数值。

2.2 解决了梯度信息的重复问题

在DenseNet 网络中,前向传播和对应的反向传播是这样的:
在这里插入图片描述
我们可以发现,大量的梯度信息被重用来更新不同Dense层的权值。「这将导致无差异的稠密层反复学习同样的梯度信息。」
而在CSPNet中,前向传播和对应的反向传播是这样的:
在这里插入图片描述
从上面的权值更新方程可以看出,来自密集层的梯度是单独积分的。而且,没有经过密集层的特征图 x 0 ′ x_{0'} x0 也被单独积分。对于更新权值的梯度信息,两边不包含属于其他边的重复梯度信息。
总的来说,所提出的CSPDenseNet保留了DenseNet特性重用特性的优点,但同时通过截断梯度流防止了过多的重复梯度信息。该思想通过设计一种分层的特征融合策略来实现,并应用于局部过渡层。

2.3 减少内存流量

假设DenseNet中一个dense block的base feature map大小为 w × h × c w × h × c w×h×c,增长率为 d d d ,总共有m个dense layers。那么,该dense block的CIO为 ( c × m ) + ( ( m 2 + m ) × d ) / 2 (c×m)+((m^2+m)×d)/2 (c×m)+((m2+m)×d)/2。与此同时,CSPDenseNet中partial dense block的CIO为 ( ( c × m ) + ( m 2 + m ) × d ) / 2 ((c×m)+(m2+m)×d)/2 ((c×m)+(m2+m)×d)/2虽然m和d通常远小于c,但partial dense block最多能够节省网络一半的memory traffic。

3. 融合策略

在CSPDenseNet中,存在多种特征融合策略。具体网络结构如下图所示。
在这里插入图片描述
其中,图(a)单路径DenseNet,图(b) 提出的CSPDenseNet:transition—>concatenation—>transition,图(c) concatenation—>transition,以及图(d) transition—>concatenation。
其中Transition layer的含义同DenseNet,是一组1x1的卷积层。上图中,不同类型的transition layer决定了梯度的结构方式,并且各有其优势:(c)图Fusion First的先将两个部分进行concatenate,然后再进行输入到Transion layer中,采用这种做法会是的大量特梯度信息被重用,有利于网络学习;(d)图中Fusion Last先将部分特征输入Transition layer,然后再进行concatenate,这样做损失了部分的梯度重用,但是由于Transition的输入维度比(c)图少,大大减少计算复杂度。论文中CSPNet采用的是图(b)中的结构,其结合了(c)(d)的结合,进一步提升了学习能力,但是也进一步提高了一些计算复杂度。

总结

CSPDenseNet网络在降低传统网络结构模型尺寸的基础上,提高了模型的精度。在实际数据集上的验证证明了其是一个效果优异的网络框架结构,可以适合在各种各样的网络结构上使用。
关于CSPDenseNet网络结构的具体代码在下一节进行讲述。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/149574
推荐阅读
  

闽ICP备14008679号