如果视觉Transformer中去掉MSA部分,性能是否能达到相同的水平?或者说仅使用MLP来实现视觉任务是否可行?由此考虑到视觉MLP。

一、EANet(External Attention)

MLP分类图像pytorch mlp 分类_池化

MLP分类图像pytorch mlp 分类_激活函数_02

MLP分类图像pytorch mlp 分类_计算机视觉_03

其中

MLP分类图像pytorch mlp 分类_池化_04


MLP分类图像pytorch mlp 分类_深度学习_05

为可学习的参数,不依赖于输入。Norm为double normalization(分别对行和列):

MLP分类图像pytorch mlp 分类_激活函数_06

二、MLP-Mixer

Mixer Layer

MLP分类图像pytorch mlp 分类_MLP分类图像pytorch_07

其中MLP为双层,层间有GELU激活函数。

网络结构

        将图像分成不重叠的patch,然后将维度投影为

MLP分类图像pytorch mlp 分类_MLP分类图像pytorch_08

,得到

MLP分类图像pytorch mlp 分类_MLP分类图像pytorch_09

输入到Mixer中。Mixer包含2个MLP,第一个作用于列(所有列共享参数),第二个作用于行(所有行共享参数)。

MLP分类图像pytorch mlp 分类_深度学习_10

Mixer公式(

MLP分类图像pytorch mlp 分类_计算机视觉_11

为patch数量)

MLP分类图像pytorch mlp 分类_池化_12

        Mixer未使用position embedding,因为token-mixing MLP对输入token的顺序敏感,有可能学习到位置信息。

三、CycleMLP

实际为上述MLP-Mixer的改进。

传统MLP主要问题:(1)空间维度的MLP不能适应不同的输入大小;(2)channel维度的MLP不能捕捉空间交互。

模型结构

MLP分类图像pytorch mlp 分类_MLP分类图像pytorch_13

Patch Embedding

        使用大小为7的窗口(步长4)将图片分为有重叠的patch。然后将patch通过线性层得到高维特征。

        不同stage之间有transition部分,减少token数量,增加channel维度。

CycleMLP块

MLP分类图像pytorch mlp 分类_计算机视觉_14

        Channel MLP为2个线性层(channel FC)+GELU。Channel FC和输入图像大小无关,但感受野只有1个像素。

        和传统MLP相比,Cycle MLP使用了Cycle FC层,使MLP类模型能够处理不同大小的输入图片。Cycle FC使用了3个并行的Cycle FC operator。

MLP分类图像pytorch mlp 分类_计算机视觉_15

Cycle FC输出(

为感受野大小):

MLP分类图像pytorch mlp 分类_深度学习_16

MLP分类图像pytorch mlp 分类_深度学习_17

伪核

        将采样点投影到空间平面得到的区域。

四、gMLP

MLP分类图像pytorch mlp 分类_深度学习_18

MLP分类图像pytorch mlp 分类_MLP分类图像pytorch_19

gMLP(g表示gating)包含

MLP分类图像pytorch mlp 分类_激活函数_20

个相同的块,每个块如下:

MLP分类图像pytorch mlp 分类_MLP分类图像pytorch_21

其中

MLP分类图像pytorch mlp 分类_MLP分类图像pytorch_22

为激活函数,

MLP分类图像pytorch mlp 分类_深度学习_23

捕捉空间交互(当

MLP分类图像pytorch mlp 分类_池化_24

时为普通的双层MLP),

MLP分类图像pytorch mlp 分类_深度学习_25

为按元素乘法。模型不需要position embedding,因其可由

MLP分类图像pytorch mlp 分类_激活函数_26

捕捉。

        捕捉空间交互最简单的选择是线性层:

MLP分类图像pytorch mlp 分类_计算机视觉_27

这里

MLP分类图像pytorch mlp 分类_深度学习_23

被称为SGU(spatial gating unit)。有点类似于SE(见5种2D Attention整理中的第三个),只是把池化变成线性层。        同样有效的方法是,将

MLP分类图像pytorch mlp 分类_池化_29

沿channel分为两部分


MLP分类图像pytorch mlp 分类_激活函数_30

此外可以在SGU中加入一个微型注意力机制,对应的模型称为aMLP。