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 卷积:
版权声明: 本文为 InfoQ 作者【AIWeker】的原创文章。
原文链接:【http://xie.infoq.cn/article/9c66ef3a5a674595d154dd130】。文章转载请联系作者。
评论