paper:MetaFormer is Actually What You Need for Vision
github:https://github.com/sail-sg/poolformer
aistudio:没有GPU?Tesla V100在线体验PoolFormer
Transformer已经证明在计算机视觉任务中有非常大的潜力,一种普遍的看法是基于attention的token mixer模块使transformer具有竞争力。但是将attention用spatial MLP替代后,模型仍然具有非常好的效果。那么是不是transformer的结构而不是attention使其有效呢?作者使用池化层代替transformer中的attention,构建了PoolFormer模型,取得了非常好的效果,ImageNet-1k准确率达到82.1%。证明了Transformer结构的有效性,而非attention。
一、引言
首先给出MetaFormer的定义,如下图所示,一个标准的transformer结构,Token Mixer可以是Attention/Spatial MLP等结构。
为了验证MetaFormer结构的有效性,作者提出了PoolFormer,使用非常简单的池化层来作为Token Mixer,并验证其有效性。
二、网络结构
PoolFormer的网络结构非常简单,只需要把Transformer的Attention模块换成Pooling就可以。(惊呆了的操作,不需要参数、计算简单,竟然可以如此有效)
Pooling代码如下(注意这里有个pool(x)-x):
class Pooling(nn.Module):
"""
Implementation of pooling for PoolFormer
--pool_size: pooling size
"""
def __init__(self, pool_size=3):
super().__init__()
self.pool = nn.AvgPool2d(
pool_size, stride=1, padding=pool_size//2, count_include_pad=False)
def forward(self, x):
return self.pool(x) - x
PoolFormer具体配置如下表:
三、实验结果
PoolFormer在ImageNet-1k上的实验结果如下:
四、总结
PoolFormer证明了Transformer结构的有效性,难以置信池化如此简单的设计竟然如此有效,跪了跪了。