前言
本文总结CVPR2022的oral文章《MetaFormer Is Actually What You Need for Vision》。该文章研究了ViT结构和类MLP结构的模型,将两者中相同的部分提取出来,组成了MetaFormer结构,并指出两者的性能都得益于MetaFormer结构,接着在此基础上提出了PoolFormer结构。
MetaFormer结构
上图左侧为MetaFormer结构,MetaFormer中的Token Mixer模块用于混合多个token之间的信息。该模块在类ViT结构的模型中对应为Attention模块(例如DeiT),而在类MLP结构的模型中对应SpatialMLP模块(例如GMLP、ResMLP)。
作者指出MetaFormer结构为类ViT和类MLP模型性能的主要来源,为了验证这一点,作者将MetaFormer结构中的Token Moixer模块替换为恒等映射(其实就是一个大卷积模型,一个单通道的大卷积处理一个特征图(token)),模型在ImageNet上的top-1准确率仍可达 74.3%。
此外,作者通过实验发现去除Norm、Channel MLP、Shortcut中的任意一个模块,模型均难以收敛,由此验证了MetaFormer中的结构缺一不可。
PoolFormer结构
作者在MetaFormer的基础上引入了PoolFormer结构,PoolFormer通过平均池化融合多个Token之间的信息,相比于Attention和SpatialMLP,池化操作不会引入额外的参数,并且计算量更小。PoolFormer的结构如下图所示:
其中Pooling操作的Pytorch代码如下
注意到池化操作后有一个减法操作,作者的解释(见上图注释)我并不是很认可,这个操作更像是个trick,但是我没有在文章中找到去除这个减法操作后模型的性能变化情况。
PoolFormer在ImageNet上的准确率如下图所示,所有模型都没有使用pretrain的权重
个人思考详见上一篇博文,文章中还有目标检测等任务的实验结果,现在做backbone是越来越卷。