MetaFormer才是计算机视觉真正需要的
作者:互联网
原标题:MetaFormer is Actually What You Need for Vision
论文地址:
https://arxiv.org/abs/2111.11418
代码地址:
https://github.com/sail-sg/poolformer
01 Abstract
本文提出Transformer的成功并不是源于其自注意力结构,而是其广义架构,通常大家普遍认为基于自注意力的token mixer模块对于Transformer的贡献最大,但是最近的工作表明Transformer模型可以被纯MLP 结构替代,并且仍然能够表现得很好,基于这些工作,作者提出了一种假设即Transformer中的自注意力模块并不是最重要的。
为了证明这个假设,通过一个简单的池化操作来替代attention模块来完成最基本的token mixing, 采用池化操作的原因是,池化不需要参数,并且也能够实现token mixing, 得到的模型称之为PoolFormer。
试验结果表明这个模型能够在多个视觉任务中达到很好的表现,比如在ImageNet1K数据集中,能够达到82.1%的准确率,超过DeiT-B(Transformer架构)和ResMLP-B24(MLP架构)的同时还能够大幅减小参数量。
02 Method
2.1 MetaFormer
如上图所示,MetaFormer是一种从Transformer中抽象出来的架构,没有指定Token Mixer,而其他结构和常规的Transformer保持一致,如果使用Attention或者MLP作为Token Mixer, 那么就变成了Transformer(比如DeiT)或者MLP-like Model(ResMLP), 为了证明MetaFormer的有效性,提出PoolFormer采用无参数的Pooling操作来实现Token Mixer。
输入图片,首先经过Input embedding操作,比如ViT中的patch embedding:
其中
表示embedding token的数量为N,每个token的维度是C。
之后,embedding token被送入堆叠的MetaFormer模块中,每个都包含两个残差子模块。
第一个子模块主要包含一个token mixer融合tokens之间的信息,这个子模块可以表示为:
其中Norm()表示Layer Normalization或者Batch Normalization,TokenMixer()表示用于融合token的信息的模块,可以通过不同的注意力机制实现融合,也可以通过MLP模块实现,token mixer模块的主要功能是融合token信息,一些token mixer也会融合通道信息。
第二个子模块主要包含两个MLP层和非线性激活函数,可以表示为:
2.2 PoolFormer
大多数工作都集中在设计不同的注意力计算方式来得到token mixer,这些工作都没有对Transformer的广义结构进行研究,为了证明Transformer的成功是因为其广义结构,而不是其自注意力模块,设计了PoolFormer,替代了Transformer中的自注意力模块,使用没有参数的池化操作,作为token mixer。
其中K是池化核的大小。
自注意力和spatial MLPs的计算复杂度都是和token的数量成平方比,因此自注意力和spatial MLPs通常只能处理几百个token,而池化操作的复杂度和token的数量是呈线性比的,并且不需要任何可学习的参数,因此使用池化操作作为token mixer得到PoolFormer模块,网络结构如下图,使用了和大多数CNN网络一样的多阶段结构:
PoolFormer总共有四个阶段,token的数量分别是
H和W分别代表输入图片的高度和宽度,Pooling操作代替了Transformer中的self-attention,得到PoolFormer模块,如果总共有L个PoolFormer模块,那么每个阶段的PoolFormer数量分别是L/6,L/6,L/2,L/6个。
下图是PoolFormer的模型结构,有两组embedding维度,小的(Small)通道维度分别是[64,128,320,512],中等大小的是[96,196,384,768],”S24”表示Small模型,总共有24个PoolFormer模块。
03 Experiments
3.1 Image classification
下图是PoolFormers在ImageNet-1K 验证集上的准确率和MACs,Model Size进行比较。
尽管使用最简单的池化操作作为token mixer,PoolFormer也能够达到很好的效果,比如和下图中的模型相比较,PoolFormer-S24达到超过80%的top-1准确率,只使用了21M的参数量和3.6GMACs,并且和DeiT-S相比,准确率稍低了点,但是减少了28%的MACs(4.6G)。
和PoolFormer达到相同的准确率,MLP-like的模型ResMLP-S24需要多使用43%的参数量(30M),同时多使用67%的计算量(6.0G),只有79.4%的准确率。
下图是不同的模型在ImageNet-1K上的表现,这些模型都只在ImageNet-1K上进行训练和测试,RSB-ResNet表示结果来自”ResNet Strikes Back”。
3.2 Object detection
在COCOval2017数据集上评估PoolFormer的模型表现能力,COCOval2017数据集一共包含118K个训练图片,”PoolFormer-S24”中”S”表示使用小的通道数,24表示有24个PoolFormer模块。
3.3 Semantic segmentation
如下图所示,是不同模型在ADE20K上进行语义分割测试的表现。
3.4 Ablation studies
消融实验是在ImageNet-1K中进行的, 消融实验主要是以下几个方面。
Pooling. 和Transformer相比,PoolFormer的主要改变时使用简单的池化作为token mixer。消融实验首先将Pooling替换成identity mapping,使用PoolFormer-S12作为Baseline。
Normalization. 包括Group Normalization(group number 设置为1),Layer Normalization, Batch Normalization,使用Group Normalization的准确率要比Layer Normalization或者Batch Normalization的准确率高。
Activation. 将GELU激活函数替换成ReLU或者SiLU,当使用ReLU作为激活函数时,模型会下降0.8%的准确率,SiLU和GELU的表现接近。
Hybrid stages. 在早期阶段使用池化操作作为token mixer,后期阶段使用注意力或者spatial MLP操作能得到更好的效果,达到了81%的准确率,同时只有16.6M参数量和2.7G MACs,作为对比,ResMLP-B24需要7.0×参数量(116M)和8.5×MACs(23.0G)才能达到相同的准确率。
这些结果表明结合池化操作和其他操作可以进一步提高模型表现。
04 Conclusion
这篇文章将Transformer中的attention抽象为一个token mixer,MetaFormer是一个通用架构,可以通过指定其中的token mixer得到不同的模型,如果token mixer是attention的话,那么得到的模型就是Transformer(比如DeiT),如果token mixer是MLP模块,那么得到的模型就是MLP-like(比如ResMLP)的模型。
通过池化操作,每个token可以融合其周围token的信息,池化是一种无参数的token mixing操作。这篇文章可以吸引一些工作到MetaFormer架构中,而不是只在self-attention结构或者MLP结构中研究。
私信我领取目标检测与R-CNN/数据分析的应用/电商数据分析/数据分析在医疗领域的应用/NLP学员项目展示/中文NLP的介绍与实际应用/NLP系列直播课/NLP前沿模型训练营等干货学习资源。
标签:Transformer,计算机,mixer,PoolFormer,token,池化,模块,视觉,MetaFormer 来源: https://blog.csdn.net/cvanlijingxuan/article/details/122715049