A Battle of Network Structures: An Empirical Study of CNN, Transformer, and MLP
【GiantPandaCV导语】ViT的兴起挑战了CNN的地位,随之而来的是MLP系列方法。三种架构各有特点,为了公平地比较几种架构,本文提出了统一化的框架SPACH来对比,得到了具有一定insight的结论。
近期Transformer MLP系列模型的出现,增加了CV领域的多样性,MLP-Mixer的出现表明卷积或者注意力都不是模型性能优异的必要条件。不同架构的模型进行比较的过程中,会使用不同的正则化方法、训练技巧等,为了比较的公平性,本文提出了SPACH的统一框架,期望对几种架构进行对比,同时探究他们各自的特点。
这个框架总体来说有两种模式:多阶段和单阶段。每个阶段内部采用的是Mixing Block,而该Mixing Block可以是卷积层、Transformer层以及MLP层。
经过实验发现了以下几个结论:
多阶段框架效果优于单节段框架(通过降采样划分阶段)
局部性建模具有高效性和重要性。
通过使用轻量级深度卷积(depth wise conv),基于卷积的模型就可以取得与Transformer模型类似的性能。
在MLP和Transformer的架构的支路中使用一些局部的建模可以在有效提升性能同时,只增加一点点参数量。
MLP在小型模型中具有非常强的性能表现,但是模型容量扩大的时候会出现过拟合问题,过拟合是MLP成功路上的拦路虎。
卷积操作和Transformer操作是互补的,卷积的泛化性能更强,Transformer结构模型容量更大。通过灵活组合两者可以掌控从小到大的所有模型。
本文提出一统MLP、Transformer、Convolution的框架:SPACH
下表展示的是各个模块中可选的参数,并提出了三种变体空间。
其中各个模块设计如下:
(a)展示的是卷积部分操作,使用的是3x3深度可分离卷积。
(b)展示的是Transformer模块,使用了positional embedding(由于目前一些研究使用absolute positional embedding会导致模块模型的平移不变性,因此采用Convolutional Position Encoding(CPE)。
(c)展示的是MLP模块,参考了MLP-Mixer的设计,虽然MLP-Mixer中并没有使用Positional Embedding,但是作者发现通过增加轻量级的CPE能够有效提升模型性能。
注:感觉这三种模块的设计注入了很多经验型设计,比如卷积并没有用普通卷积,用深度可分离卷积其实类似MLP中的操作,此外为MLP引入CPE的操作也非常具有技巧性。
三种模块具有不同的属性:
所谓dynamic weight是Transformer中可以根据图片输入的不同动态控制权重,这样的模型的容量相较CNN更高。CNN中也有这样的趋势,dynamic network的出现也是为了实现动态权重。(感谢zzk老师的讲解)Transformer侧重是关系的学习和建模,不完全依赖于数据,CNN侧重模板的匹配和建模,比较依赖于数据。
Transformer
CNN
Dynamic Attention
Multi-scale Features by multi-stage
Global Context Fusion
Shift,scale and distortion invariance
Better Generalization(学习关系,不完全依赖数据)
Local Spatial Modeling
实验设置:
数据集选择ImageNet-1K
输入分辨率224x224
训练设置参看DeiT
AdamW优化器训练300个epoch
weight decay: 0.05 (T用的weight decay更小)
learning rate:0.005 对应 512 batch size(T用的lr更小)
结论1:multi-stage 要比 single-stage性能更好
具体性能如下表所记录,Multi-Stage能够显著超过Single Stage的模型。
可以发现,有一个例外,在xxs尺度下,Transformer进度损失了2.6个百分点,因为多阶段模型恰好只有单阶段模型一半的参数量和Flops。
随着参数量的增加,模型最高精度先后由MLP、Conv、Transformer所主导。
结论2:局部建模非常重要
上表展示了具有局部建模以及去除局部建模的效果,可以发现使用卷积旁路的时候吞吐量略微降低,但是精度有显著提高。
结论3:MLP的细节分析
MLP性能不足主要源自于过拟合问题,可以使用两种机制来缓解这个问题。
Multi-Stage的网络机制,可以从以上实验发现,multi-stage能够有效降低过拟合,提高模型性能。

权重共享机制,MLP在模型参数量比较大的情况下容易过拟合,但是如果使用权重共享可以有效缓解过拟合问题。具体共享的方法是对于某个stage的所有Mixing Block均使用相同的MLP进行处理。
结论4:卷积与Transformer具有互补性
作者认为卷积具有的泛化能力更强,而Transformer具有更大的模型容量,如下图所示,在Loss比较大的情况下,整体的准确率是超过了Transformer空间的。
结论5: 混合架构的模型
在multi-stage的卷积网络基础上将某些Mixing Block替换为Transformer的Block, 并且处于对他们建模能力的考量,选择在浅层网络使用CNN,深层网络使用Transformer,得到两种模型空间:
SOTA模型比较结果:
整体结论是:
Transformer能力要比MLP强,因此不考虑使用MLP作为混合架构
混合Transformer+CNN的架构性能上能够超越单独的CNN架构或者Transformer架构
FLOPS与ACC的权衡做的比较出色,能够超越Swin Transformer以及NAS搜索得到的RegNet系列。
最后作者还向读者进行提问:
MLP性能欠佳是由于过拟合带来的,能够设计高性能MLP模型防止过拟合呢?
目前的分析证明卷积或者Transformer并不是一家独大,如何用更好的方式融合两种架构?
是否存在MLP,CNN,Transformer之外的更有效地架构呢?
对照下图逐步给出各个Mixing Block:
(a)卷积模块 ,kernel为3的深度可分离卷积
(b)Transformer
(c)MLP模块,分为channel mlp和spatial mlp,与MLP-Mixer保持一致
SPACH骨干网络的构建: MixingBlock
SPACH构建:
https://github.com/microsoft/SPACH
https://zhuanlan.zhihu.com/p/411145994
https://arxiv.org/pdf/2108.13002v2.pdf
代码改变世界