ACNet:Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks

ACNet 利用 "结构重参数化" 的概念,训练时该块使用三个不对称卷积块卷积分支,推理时将三个分支的融合成 1
个分支,使得训练时性能得到提升的同时,不降低推理的速度

什么是结构重参数化?

  • ACNet-20230408142047
  • 我们知道模型要变好,就必须构建得更加复杂,但是这来这带来一个坏处,就是模型部署的耗时会增长,这两者是相互矛盾的,结构从参数化就是两者都可以做到,在训练的时候,通过复杂的神经网络去训练,提升模型的性能,但是在推理的时候,我通过对模型结构的重参数化生成了一个更加精简的结构,使推理的时候速度更快
  • RepVGG 的结构重参数化过程:上图是左边是训练时的卷积网络,右边通过对结构进行重参数化,得到一个只有 1 个分支的结构,因此可以做到训练时提升性能,推理时提升速度
  • 结构从参数化的基本原理卷积的可加性,对于同一个输入,只要其扫描频率一致(相同的通道数、kernel size、stride、padding),其卷积可过程可以融合。如下公式 1 是一个实数乘特征图和乘卷积是等效的,公式 2 卷积核 F1 与 F2 可以被融合为 1 个卷积,卷积核为 (F1+F2)

I(pF)=p(IF)(1)IF(1)+IF(2)=I(F(1)+F(1))(2)\begin{matrix}I\otimes(pF)=p(I\otimes F) \quad&(1)\\I\otimes F^{(1)}+I\otimes F^{(2)}=I\otimes(F^{(1)}+F^{(1)})\quad&(2)\end{matrix}

什么是 ACNet ?

  • ACNet-20230408142048
  • ACNet 利用 "结构重参数化" 的概念,训练时该块使用三个不对称卷积块卷积分支,推理时将三个分支的融合成 1 个分支,使得训练时性能得到提升的同时,不降低推理的速度

ACNet 的网络结构?

  • ACNet-20230408142048-1
  • 上图左边展示 3 个分支的卷积融合为一个等效卷积的过程;右边是卷积融合的过程,主要包括融合 BN (BN fusion) 和融合分支 (branch fusion) 两个步骤
  • 融合 BN (BN fusion) :所有 BN 对输入操作一样,不改变输入分辨率,所以利用卷积的线性可加性,将 BN 的过程融合进卷积
  • 融合分支 (branch fusion):同样利用卷积的线性可加性,将多分支的卷积融合为 1 个卷积

ACNet 为什么能提升网络性能?

  • ACNet-20230408142049
  • 因为 ACNet 提升模型对图像翻转和旋转的鲁棒性,上图左边是 1 x 3 卷积及其翻转后的结果,可知翻转后特征不变;右边是传统卷积,翻转后,特征的位置变化了 (相同位置使用不同卷积核计算了)
  • 本质原因可参考 Inception block 设计多分支的原因,可以提取、融合不同尺度的特征,所以效果更好了

参考:

  1. 【CNN 结构设计】无痛的涨点技巧:ACNet - 知乎