Transformer的终章还是新起点?颜水成团队新作:MetaFormer才是你真正需要的!

2021-12-02 13:36:24 浏览数 (1)

CV干货,第一时间送达

Transformer在CV领域的成功到底是什么呢?最近一年来各种Transformer与MLP架构设计意义真的有那么大呢?CV老将“水哥”颜水成团队最新提出的MetaFormer可能提供了一个非常有价值的参考。这会不会意味着Transformer的终章呢?

要知道,水哥团队曾终结PASCAL VOC,同时也是ImageNet的“终结者”。也许,MetaFormer的出现也将意味着Transformer的落幕;当然,也许会是Transformer的新起点...

[arXiv:2111.11418], [code]

本文是颜水成团队在Transformer架构方面的思考,提出了一种更广义的MetaFormer。基于近来层出不穷Transformer与MLP等架构的分析,认为:Transformer的成功源自其广义架构,而非自注意力或者SpatialMLP并通过PoolFormer验证了猜想的正确性。

Abstract

Transformer在CV任务中表现出了极大的潜力。在初期,一般会认为自注意力机制对于其性能起关键性作用。然而,近期的一些研究表明:Transformer中的自注意力模块替换为SpatialMLP表现仍然非常好。

基于该发现,我们假设:Transformer的广义架构(而非特定的token混合模块)对其性能起关键作用 。为进行验证,我们采用简单的空域池化替代自注意力模块以执行token混合。令人惊讶的是,我们发现所得模型PoolFormer在多个CV任务上均取得了极具竞争力的结果。比如,PoolFormer在ImageNet上取得了82.1%的top1精度,超过了精心设计的DeiT-B、ResMLP-B24,同时具有更少的参数量(分别少35%、52%)和MACs(分别少48%、60%)。

PoolFormer的有效性验证了我们的假设,促使我们提出了MetaFormer:一种由Transformer抽象出来未制定token混合操作的架构。充分的实验表明,MetaFormer是Transformer与MLP等架构取得超高性能的关键

我们呼吁更多的研究对MetaFormer进行改进而非聚焦于token 混合模块。此外,所提PoolFormer可作为未来MetaFormer架构研究的起始基线。

Method

我们首先给出MetaFormer的核心概念,见上图。MetaFormer是一种广义架构,它的token mixer并未具体制定同时保持其他成分与Transformer一致。类似ViT,输入图像I 首先经由Input Embedding进行处理,X = InputEmb(I)

表示词嵌入,序列长度为N,维度为C。然后,词嵌入经由多个MetaFormer模块进行处理,每个模块包含两个残差子模块。具体来说,第一个子模块主要包含token mixer进行token通信,可描述为:Y = TokenMixer(Norm(X)) X

一般来说,Transformer中的TokenMixer采用不同的自注意力,而在MLP架构中则采用不同的Spatial MLP。

第二个子模块是一个两层MLP,描述如下:Z = sigma(Norm(Y)W_1)W_2 X

PoolFormer

已有的Transformer架构大多聚焦于自注意力的改进,而对其广义架构的重要性较少关注。

我们认为:MetaFormer这种广义架构对于Transformer与MLP架构的成功起关键性作用 。为进行验证,我们采用了简单的pooling进行token mixer。该操作没有可学习参数,仅通过平均聚合近邻token。

由于该工作聚焦于CV任务,我们假设输入为通道优先,即T in R^{Ctimes Htimes W} ,此时pooling操作可描述如下:

T^{'}_{:,i,j} = frac{1}{Ktimes K} sum_{p,q=1}^{K} T_{:,i p-frac{K 1}{2},j q-frac{K 1}{2}} - T_{:,i,j}

由于MetaFormer模块已经存在了残差连接,所以上式中引入了减操作。Pytorch实现code如下:

众所周知,自注意力与SpatialMLP的计算复杂度与token数量成二次关系。更严重的是,当处理长序列时,SpatialMLP会带来大量的参数。这就导致了自注意力与SpatialMLP仅能处理”百“这个量级的token;相反,pooling的计算复杂度与token数量成线性关系且无可学习参数。因此,我们类似CNN采用分层架构充分利用Pooling的优势。

上图给出了PoolFormer的整体架构示意图,下表给出了不同PoolFormer架构的参数配置信息。

Experiments

ImageNet Classification

上表给出了ImageNet分类任务上的性能对比,从中可以看到:

  • 相比CNN、Transformer以及MLP等架构,PoolFormer取得了极具竞争力的结果;
  • PoolFormer-S24仅需21M参数 3.6GMACs即可取得超80%的top1精度;而ResMLP-S24需要30M参数量 6.0GMACs也只能达到79.4%精度。
  • PVT-M需要44M参数量 6.7GMAC取得81.2%,而PoolFormer-S35仅需31M 5.2GMACs即可取得81.5%精度;
  • 相比RegNet,在相同参数量下,RegNetY-4GF以4.0GMACs取得了80.0%精度,而PoolFormer仅需3.6GMACs取得了80.3%精度。

上图给出了不同模型的MAC、参数量与精度的关系图,很明显:PoolFormer以更少的MACs和参数量超越了其他模型 。进一步说明,广义架构MetaFormer是我们设计CV模型时所真正需要的

Object Detection and instance Segmentation

上表给出了COCO检测任务的性能对比,可以看到:

  • 基于RetinaNet框架,PoolFormer取得了比ResNet更佳的性能;
  • PoolFormer-S12取得比了ResNet-18更高的性能:36.2vs31.8,性能提升高达4.4。

上表给出了COCO分割任务上的性能对比,可以看到:

  • 基于Mask R-CNN框架,PoolFormer取得了比ResNet更佳的性能;
  • PoolFormer-S12取得了大幅超越ResNet-18的性能,box与mask指标分别提升2.7与3.4.
  • 总而言之,PoolFormer在COCO检测与分割任务上取得了一致性能提升,超越了基线ResNet。

Semantic Segmentation

上表给出了ADE20K分割任务上的性能对比,可以看到:PoolFormer取得了比ResNet、ResNeXt以及PVT更优秀的性能 。比如,PoolFormer-S12取得了37.2mIoU,以4.3优于ResNet-18,以1.5优于PVT-Tiny。

Ablation Studies

相比Transformer,PoolFormer的主要改变在于:采用Pooling替换自注意力进行token mixer。我们首先对此进行了消融分析,见下表。

从上表可以看到:

  • 将Pooling替换为Identity后,所提模型仍可取得74.3%top1精度,进一步支持本文的声明:MetaFormer是我们实际所需的确保合理性能的架构;
  • 不同的池化尺寸(3、5、7)对于性能的影响非常小,当尺寸提升到9后看到了性能下降,故我们采用池化尺寸3;
  • 相比BN与LN,GN更适合PoolFormer,性能提升分别为0.8%和0.7%,因此,我们默认选择GN;
  • 在激活函数方面,GELU与SiLU性能相当,而ReLU会造成性能下降;
  • 在混合配置方面,Pool Pool Attention Attention的组合具有最佳性能81%;其他配置同样非常好的性能。这说明,对于MetaFormer来说,组合Pooling与其他token mixer技术可能是一个提升模型性能的有价值的研究方向。

参考实现

0 人点赞