CNN经典模型VGG自2014年诞生以来,由于相比于各种多分支架构(如ResNet) 性能不佳,已渐“没落”……
但来自清华大学和旷视科技等机构的研究人员,他们居然只用3×3卷积和ReLU激活函数的超级简单架构,通过结构重参数化 (structural re-parameterization),就让这个7年前的老架构再次“容光焕发”!Great Again!
简单到什么程度?研究人员表示:
下午5点看完文章,晚饭前就能写完代码开始训练,第二天就能看到结果。如果没时间看完这篇文章,只要点开GitHub上的代码,看完前100行就可以完全搞明白。
新架构RepVGG结合了多分支架构和单路架构的优点,在速度和性能上直达SOTA,在ImageNet上精度超过80%!
相关论文已被CVPR 2021接收,开源预训练模型和代码在GitHub上也已收获1700+ 标星!
兼顾多分支和单路架构的优点
一个已经快要“没落”的老模型,为什么还要重新捡起利用?
研究人员介绍道,因为简单的VGG式模型(单路架构、仅使用3×3卷积和ReLU激活函数)有五大现实优势:
1、3×3卷积非常快。在GPU上,3×3卷积的计算密度(理论运算量除以所用时间)可达1×1和5×5卷积的四倍。
2、单路架构因为并行度高也非常快。同样的计算量,“大而整”的运算效率远超“小而碎”的运算。
3、单路架构省内存。例如,ResNet的shortcut虽然不占计算量,却增加了一倍的显存占用。
4、单路架构灵活性更好,容易改变各层的宽度(如剪枝)。5、RepVGG主体部分只有一种算子:3×3卷积接ReLU。在设计专用芯片时,给定芯片尺寸或造价,我们可以集成海量的3×3卷积-ReLU计算单元来达到很高的效率。别忘了,单路架构省内存的特性也可以帮我们少做存储单元。
由于多分支架构性能更好,为了让新架构RepVGG兼顾两者优点,他们提出一个新的做法:先训练一个多分支模型,然后将多分支模型等价转换为单路模型,最后部署这个单路模型。
具体来说,首先借鉴ResNet的做法,在训练时为每一个3×3卷积层添加平行的1×1卷积分支和恒等映射分支,构成一个RepVGG Block。
然后需将RepVGG Block转换为一个卷积,也就是将训练好的模型等价转换为只有3×3卷积的单路模型。
怎么转换?结构重参数化!
如上图,利用卷积的相加性,需经过两次变换。
示例中,输入输出通道数都是2,那3×3卷积核所对应的参数矩阵为2x2x3x3,也就是4个3×3矩阵,1×1卷积核对应的参数矩阵为2x2x1x1,也就是4个1×1矩阵,为了画图方便换成1个2×2矩阵。
把1×1卷积等价转换为3×3卷积,只要用0填充一下就行了。
而恒等映射是一个特殊(以单位矩阵为卷积核)的1×1卷积,因此也是一个特殊的3×3卷积。
以上三个分支都有BN(batch normalization)层,推理时的卷积层和其后的BN层可转换为一个带bias的卷积层。
最后,将三分支得到的卷积核和bias分别相加,完成等价转换为只有3×3卷积的单路模型。
从这一转换过程中,我们看到了“结构重参数化”的实质:训练时的结构对应一组参数,推理时我们想要的结构对应另一组参数;只要能把前者的参数等价转换为后者,就可以将前者的结构等价转换为后者。
不少人都称赞这篇论文的思路非常有意思,简单易懂,让人眼前一亮!
效果确实也非常不错——
速度和精度达SOTA
RepVGG这样只用3×3卷积和ReLU激活函数的简单架构,特别适用于GPU和特殊推理芯片(inference chips)。
研究人员在1080Ti上对RepVGG进行了测试。在公平的训练设定下,同精度的RepVGG速度是ResNet-50的183%,ResNet-101的201%,EfficientNet的259%,RegNet的131%。
在Cityscapes上的语义分割实验表明,在速度更快的情况下,RepVGG模型比ResNet系列高约1%到1.7%的mIoU,或在mIoU高0.37%的情况下速度快62%。
通过结构重参数化,RepVGG在ImageNet上达到了80.57%的top1精度,与最先进的复杂模型相比,速度-精度都非常出色。
关于作者
论文一作:丁霄汉,清华大学计算机视觉博士生,研究方向是计算机视觉和机器学习。在CVPR、ICML、ICCV、NeurIPS作为第一作者发表论文5篇。曾获得第七届百度奖学金荣誉——“十位顶尖 AI 学子”之一。
论文二作:张详雨,旷视科技旷视研究院base model组负责人,西安交大博士生。曾在微软亚洲研究院实习,是ResNet的主要作者之一。
论文三作:马宁宁,香港科技大学与旷视联合培养博士,主要研究方向为计算机视觉和高性能卷积神经网络。
论文地址:https://arxiv.org/abs/2101.03697
GitHub地址:https://github.com/DingXiaoH/RepVGG
参考链接:
[1]https://www.reddit.com/r/MachineLearning/comments/nqflsp/rrepvgg_making_vggstyle_convnets_great_again/
[2]https://zhuanlan.zhihu.com/p/344324470
“