【ARXIV2205】Inception Transformer
论文:https://arxiv.org/abs/2205.12956
代码:https://github.com/sail-sg/iFormer
1、研究动机
这个论文的核心思想仍然是:把 attention 和 CNN 相结合(谷歌的Inception),但是出发点不太一样。作者给出了VIT的 傅立叶谱,发现能量基本上集中于低频部分,对于图像中的边缘、角点等高频信息提取不足。(其实很好理解,attention本质类似于全局的加权求和,对于局部信息就有所损失了)
2、 Inception mixer
论文的主要贡献是改进了 attention ,提出了新的模块: Inception mixer。作者的想法非常直接,如下图所示,在现有的VIT结构中加入高频分支!
(1)高频分支。 可以看出,高频分支来自于经典的 Inception(如下图所示),其中的 linear 层本质就是 1x1 卷积。
对于输入的特征为
C
C
C个通道,将其分为
C
h
C_h
Ch? 和
C
l
C_l
Cl? 个通道,分别用于提取高频和低频特征。对于高频特征,均匀分为两部分
X
h
1
X_{h1}
Xh1? 和
X
h
2
X_{h2}
Xh2?(均为
C
h
/
2
C_h/2
Ch?/2个通道),进行下面操作:
Y
h
1
=
FC
(
MaxPool
(
X
h
1
)
)
Y_{h1}=\text{FC}(\text{MaxPool}(X_{h1}))
Yh1?=FC(MaxPool(Xh1?))
Y
h
2
=
DwConv
(
FC
(
X
h
2
)
)
Y_{h2}=\text{DwConv}(\text{FC}(X_{h2}))
Yh2?=DwConv(FC(Xh2?))
(2)低频分支。 低频分支为传统的 MHSA,因为另外的分支带来了额外的计算量,因此这个分支首先进行 average pooling 操作,然后进 MHSA 计算以后再进行 upsample 操作。
最后,高频和低频的结果直接拼接在一起:
Y
c
=
Concat
(
Y
l
,
Y
h
1
,
Y
h
2
)
Y_c=\text{Concat}(Y_l, Y_{h1}, Y_{h2})
Yc?=Concat(Yl?,Yh1?,Yh2?)。
最后,因为低频上采样操作中直接插值,导致相邻 token 之间过度平滑和相似,为了解决这一问题,作者加一个DwConv,具体为:
Y
=
FC
(
Y
c
+
DwConv
(
Y
c
)
)
Y=\text{FC}(Y_c+\text{DwConv}(Y_c))
Y=FC(Yc?+DwConv(Yc?))
3、总体架构
作者采用了当前主流的4阶段 transformer 架构,构建了 small, base, large 三个模型,具体细节如下表所示。从表中可以看出,在网络浅层阶段,高频(conv)占比重较大,低频(MHSA)占比重较小。在网络深层阶段,就反过来了。这和当前主流卷积和Transformer结合方法的结论基本一致。同时,在结论中,作者也承认,高频和低频之间的比例需要根据经验来确定,是这个方法的 limitation。
该方法在图像分类任务上取得了非常好的性能。作者还做了目标检测、语义分割的实验,详细可以参照作者论文。
|