RepVGG
1.RepVGG
参考:
RepVGG网络简介
BN详解
RepVGG在训练和推理的时候采用不同的网络结构,从而加速网络的推理速度。RepVGG的主要内容是在推理阶段执行Structural re-parameterization,即图A所示,将多分支结构转换为一个3x3的卷积,具体如下:
图A解释:
- 将1x1卷积转换成3x3卷积
- 将BN转换成3x3卷积
- 将3x3卷积核与BN合并成一个3x3卷积
- 将三个3x3卷积核融合成一个
1.1 将1x1卷积转换成3x3卷积
这个过程比较简单,如下图所示,以1x1卷积层中某一个卷积核为例,只需在原来权重周围补一圈零就行了,这样就变成了3x3的卷积层,注意为了保证输入输出特征图高宽不变,此时需要将padding设置成1(原来卷积核大小为1x1时padding为0)。
1.2 将BN转换成3x3卷积
对于只有BN的分支由于没有卷积层,所以我们可以先自己构建出一个卷积层来。如下图所示,构建了一个3x3的卷积层,该卷积层只做了恒等映射,即输入输出特征图不变。
1.3 将3x3卷积与BN合并成一个3x3卷积
\(M_{:,i,:,:}\)代表batch中所有特征图的第i个channal,设\(M_{:,i,:,:}\)是由卷积核\(W_{:,i,:,:}'\)通过卷积得到的,所以可以将\(M_{:,i,:,:}\)旁边乘的\(\frac{\gamma _i}{\sigma_i}\)提取到\(W_{:,i,:,:}'\)旁边,并将\(\beta_i-\frac{\mu_i\gamma _i}{\sigma_i}\)作为卷积核的一个偏置。
【注】在推理阶段,\(\mu _i\)和\(\sigma_i\)已经是一个固定的值,所以可以进行上述操作。