AI简报-重参数化RepVGG
AI简报-重参数化RepVGG
本简报分享的是清华和旷视等2021年的一篇对于VGG-style CNN结构的一次优化,题目为:RepVGG: Making VGG-style ConvNets Great Again。
RepVGG指出当前的卷积CNN网络存在如下弊端:
- 复杂的多分支网络设计,导致推理显存增加且耗时增加, 如Resnet的残差连接, Inception的多分支concat等
- 另外一个轻量化的网络设计,如MobileNets的depthwise,以及ShuffleNets中channel shuffle,增加了内存使用,同时对于某些设备支持不好
就Resnet的残差连接而言,文中进行了分析:

可知,因为残差的存在,在残差操作之前,会多一个显存的使用。
如何设计一个结构简单,满足精度要求且推理性能优越的网络结构呢?
RepVGG采用了简单堆叠3x3卷积的方式设计了一个plain网络,同时在推理时进行参数合并。
RepVGG

RepVGG的思路:
- 推理:只保留3x3卷积和RELU
- 训练:多分支(1x1,identity)来增加特征学习
- 训练的模型通过重参数化将多分支合并成一个3x3卷积
所以关键是怎么重参数化?重参数化的结果就是将3x3卷积、1x1卷积和identity以及BN层合并成一个3x3的卷积。

-
3x3卷积和1x1卷积的合并
所谓卷积操作,就是卷积核中权重与feature中的指定位置进行相乘后再汇总。而1x1卷积可以转化为中间值为1x1卷积核,其他权重为0的3x3卷积核。
所以3x3卷积和1x1卷积的合并就是1x1卷积核与3x3卷积核中间位置的值相加。

-
3x3卷积和identity合并
所谓identity就是feature自身,可以理解为对角权重为1的1x1卷积核。其他同3x3卷积和1x1卷积的合并
-
3x3卷积与BN合并
3x3卷积与BN合并就是将BN转化为3x3卷积。BN层为归一化层

而BN(conv)为:

所以合并成的一个新的3x3卷积:
