ACNet:Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks
ACNet 利用 "结构重参数化" 的概念,训练时该块使用三个不对称卷积块卷积分支,推理时将三个分支的融合成 1
个分支,使得训练时性能得到提升的同时,不降低推理的速度
什么是结构重参数化?
- 我们知道模型要变好,就必须构建得更加复杂,但是这来这带来一个坏处,就是模型部署的耗时会增长,这两者是相互矛盾的,结构从参数化就是两者都可以做到,在训练的时候,通过复杂的神经网络去训练,提升模型的性能,但是在推理的时候,我通过对模型结构的重参数化生成了一个更加精简的结构,使推理的时候速度更快
- RepVGG 的结构重参数化过程:上图是左边是训练时的卷积网络,右边通过对结构进行重参数化,得到一个只有 1 个分支的结构,因此可以做到训练时提升性能,推理时提升速度
- 结构从参数化的基本原理:卷积的可加性,对于同一个输入,只要其扫描频率一致(相同的通道数、kernel size、stride、padding),其卷积可过程可以融合。如下公式 1 是一个实数乘特征图和乘卷积是等效的,公式 2 卷积核 F1 与 F2 可以被融合为 1 个卷积,卷积核为 (F1+F2)
什么是 ACNet ?
- ACNet 利用 "结构重参数化" 的概念,训练时该块使用三个不对称卷积块卷积分支,推理时将三个分支的融合成 1 个分支,使得训练时性能得到提升的同时,不降低推理的速度
ACNet 的网络结构?
- 上图左边展示 3 个分支的卷积融合为一个等效卷积的过程;右边是卷积融合的过程,主要包括融合 BN (BN fusion) 和融合分支 (branch fusion) 两个步骤
- 融合 BN (BN fusion) :所有 BN 对输入操作一样,不改变输入分辨率,所以利用卷积的线性可加性,将 BN 的过程融合进卷积
- 融合分支 (branch fusion):同样利用卷积的线性可加性,将多分支的卷积融合为 1 个卷积
ACNet 为什么能提升网络性能?
- 因为 ACNet 提升模型对图像翻转和旋转的鲁棒性,上图左边是 1 x 3 卷积及其翻转后的结果,可知翻转后特征不变;右边是传统卷积,翻转后,特征的位置变化了 (相同位置使用不同卷积核计算了)
- 本质原因可参考 Inception block 设计多分支的原因,可以提取、融合不同尺度的特征,所以效果更好了
参考: