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验证了猜想的正确性。
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架构研究的起始基线。
我们首先给出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
已有的Transformer架构大多聚焦于自注意力的改进,而对其广义架构的重要性较少关注。
我们认为:MetaFormer这种广义架构对于Transformer与MLP架构的成功起关键性作用 。为进行验证,我们采用了简单的pooling进行token mixer。该操作没有可学习参数,仅通过平均聚合近邻token。
由于该工作聚焦于CV任务,我们假设输入为通道优先,即T \in R^{C\times H\times W} ,此时pooling操作可描述如下:
由于MetaFormer模块已经存在了残差连接,所以上式中引入了减操作。Pytorch实现code如下:
众所周知,自注意力与SpatialMLP的计算复杂度与token数量成二次关系。更严重的是,当处理长序列时,SpatialMLP会带来大量的参数。这就导致了自注意力与SpatialMLP仅能处理”百“这个量级的token;相反,pooling的计算复杂度与token数量成线性关系且无可学习参数。因此,我们类似CNN采用分层架构充分利用Pooling的优势。
上图给出了PoolFormer的整体架构示意图,下表给出了不同PoolFormer架构的参数配置信息。
上表给出了ImageNet分类任务上的性能对比,从中可以看到:
上图给出了不同模型的MAC、参数量与精度的关系图,很明显:PoolFormer以更少的MACs和参数量超越了其他模型 。进一步说明,广义架构MetaFormer是我们设计CV模型时所真正需要的 。
上表给出了COCO检测任务的性能对比,可以看到:
上表给出了COCO分割任务上的性能对比,可以看到:
上表给出了ADE20K分割任务上的性能对比,可以看到:PoolFormer取得了比ResNet、ResNeXt以及PVT更优秀的性能 。比如,PoolFormer-S12取得了37.2mIoU,以4.3优于ResNet-18,以1.5优于PVT-Tiny。
相比Transformer,PoolFormer的主要改变在于:采用Pooling替换自注意力进行token mixer。我们首先对此进行了消融分析,见下表。
从上表可以看到: