Transformer的终章还是新起点?颜水成团队新作:MetaFormer才是你真正需要的!
共 3500字,需浏览 7分钟
·
2021-11-29 11:58
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,输入图像首先经由Input Embedding进行处理,
其中,表示词嵌入,序列长度为N,维度为C。
然后,词嵌入经由多个MetaFormer模块进行处理,每个模块包含两个残差子模块。具体来说,第一个子模块主要包含token mixer进行token通信,可描述为:
一般来说,Transformer中的TokenMixer采用不同的自注意力,而在MLP架构中则采用不同的Spatial MLP。
第二个子模块是一个两层MLP,描述如下:
PoolFormer
已有的Transformer架构大多聚焦于自注意力的改进,而对其广义架构的重要性较少关注。
我们认为:MetaFormer这种广义架构对于Transformer与MLP架构的成功起关键性作用 。为进行验证,我们采用了简单的pooling进行token mixer。该操作没有可学习参数,仅通过平均聚合近邻token。
由于该工作聚焦于CV任务,我们假设输入为通道优先,即,此时pooling操作可描述如下:
由于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技术可能是一个提升模型性能的有价值的研究方向。
参考实现
长按扫描下方二维码添加小助手。
可以一起讨论遇到的问题
声明:转载请说明出处
扫描下方二维码关注【集智书童】公众号,获取更多实践项目源码和论文解读,非常期待你我的相遇,让我们以梦为马,砥砺前行!