该论文是Transformer模型在计算机视觉领域的应用,Swin Transformer的输入与DETR不同,同为Transformer模型在计算机视觉领域的应用,Swin Transformer是直接将image作为输入不需要CNN为主干网络进行特征提取,而且DETR是将image输入到CNN主干网络中进行特征提取,然后将feature map当作输入进行embedding。Swin Transformer提出的层级转换器,为了解决计算复杂度问题,以及多层特征融合问题,其中对patch进行编码和层级转换器共同解决Transformer模型无法将大尺度图像作为输入的问题。
网络结构
该网络将三通道的图像作为输入,通过patch partition模块将原图像按照规则划分成一个一个不重叠的patch(默认的是按照4x4像素进行划分)。为了保证patch的数量不变,在切分patch的同时,通道数也相应的增加16倍,每个patch的每个通道会被当成token进行embedding。在Stage1中通过一个线性embedding层将每个patch进行编码成一维的vector作为Swin Transformer块的输入。在Stage2中首先通过patch merging进行合并上一层的patch,合并规则是相邻的四个,进而产生多层特征,随着patch尺寸的增大,通道数也随之增加2倍。如此反复进行,并且每个stage输入的特征分辨率与ResNet的相同,所以该结构可以通用在大部分的模型中代替ResNet作为特征提取主干网络。
1.Patch Partition & Patch Merging & 分层特征图
Patch Partition
上图中白色的块为patch,如果将每个像素点进行编码,会产生数量极其巨大的embedding向量,使得Transformer结构无法训练,为了减少输入,将图像分成4x4分辨率的不重叠的patch,将每个patch进行编码,这样就减少了embedding之后的向量数量,使得Transformer可以将高分辨率图像作为输入。
Patch Merging
从底层划分的patch开始,将每层相邻的4个patch进行特征合并然后生成一个新的patch,作为新的一个特征层。
分层特征
左边的为Swin Transformer构建的分层特征图,右图为ViT模型的特征结构。通过patch merging结构合并下层特征,进而构建了分层特征。
2.Swin Transformer block
这里的Swin Transformer块不同与传统的Transformer block,首先是对MSA(multi-head-attention)做出了改进,使用了两种改进方法。在Swin Transformer block中分别使用两种改进的attention相互连接,一种是W-MSA(规则的位移窗口), 一种是SW-MSA(循环位移窗口)。然后将原本的前馈神经网络替换成了MLP。
改进与创新
1.Patch Merging
由上图可见从4x4的像素为一个patch合并到8x8像素的patch,在从8x8像素的patch再合并到16x16像素的patch,通过将不同区域的patch进行合并,进而构建分层的特征,并且使模型获得空间信息。
2.Swin Transformer block
这里的Swin Transformer block与原本的Transformer block主要的不同之处在于MSA,这里的多头注意机制的计算方法与Transformer block中的计算方法不同
Ω
(
M
S
A
)
=
4
h
w
C
2
+
2
(
h
w
)
2
C
\Omega (MSA)=4hwC^2 + 2(hw)^2C
Ω(MSA)=4hwC2+2(hw)2C
Ω
(
W
−
M
S
A
)
=
4
h
w
C
2
+
2
M
2
h
w
C
\Omega (W-MSA)=4hwC^2 + 2M^2hwC
Ω(W−MSA)=4hwC2+2M2hwC
M为固定的窗口数,通常取7,MSA是一个关于hw的二次方程,而W-MSA是一个关于hw的一次方程,所以计算复杂MSA更好,W-MSA仅仅为线性计算复杂度。
3.两种MSA计算方法
1)W-MSA
基于规则窗口的self-attention计算方法,Layer 1相当于基于规则的self-attention计算方法,窗口的数量是固定的,通过规则的位移转换,对不重叠的patch进行self-attention计算,进而学习到不同patch之间的空间关联信息。
2)SW-MSA
基于循环位移的self-attention计算方法。通过从左上角开始的空白地方(空白地方通过padding进行补充)进行循环的窗口计算,这样的计算方法可以使self-attention学习到更多的边界信息。
4.相对位置偏置
A
t
t
e
n
t
i
o
n
(
Q
,
K
,
V
)
=
S
o
f
t
M
a
x
(
Q
K
T
/
d
+
B
)
V
Attention(Q, K, V) = SoftMax(QK^T/\sqrt{d} + B)V
Attention(Q,K,V)=SoftMax(QKT/d+B)V
首先因为CNN结构的卷积运算是通过滑动窗口的运算,在运算过程中可以学习得到位置偏执这种先验知识,但是Transformer结构初始化的时候并没有这种位置偏置,只有通过大量的数据训练才可以达到CNN一样的效果,为了使模型可以在中小型数据集中就获得很好的性能,通过增加一个可学习的位置偏置bias来在训练中获得相对位置信息。
实验与结果分析
1.消融实验
上表分别针对了有无循环位移窗口和绝对位置编码以及相对位置偏置的比较。从表中的前两行可以看到,增加了循环位移窗口模型,不论是在ImageNet分类数据集上的表现还是在ADE20K语义分割数据集上的表现,又或者使COCO目标检测数据集上的表现,都比没有循环位移窗口的模型性能更好,尤其是COCO和ADE20K中提升更为明显。
上表的下面几行则是位置编码的比较。通过位置编码的比较,可以看出绝对位置编码对Swin Transformer的性能提升不明显,但是相对位置偏置(rel. pos)对模型的性能提升比较明显,尤其是语义分割中的表现提升了2.3%。所以可以说明相对位置偏置和位移窗口都对模型的性能都有不同程度的提升。
上表是针速度的比较,通过不同的self-attention的窗口计算方法在各阶段的计算时间和不同模型所处理的图片速度。循环位移窗口的各阶段速度与无位移窗口的速度相当,并且每秒处理图片的速度也差距不大,但是循环位移窗口的性能更好,在多种任务中的检测精度更高。
上表是针对self-attention计算方法来进行比较的,由表可见,位移窗口同样是性能最好的。
2.模型对比实验
首先是针对backbone网络,分别在ImageNet-1K和ImageNet-22K中预训练模型,与不同的主干网络进行对比,在同等速度的情况下,Swin Transformer模型的精确度是最高的。
不同框架下作为主干网络的比较,比ResNet50的结果更好。以及将Swin作为模型进行检测的结果同样是最好的结果。
在分割中的表现同样突出。
3.结论
通过上述实验可见,Swin Transformer既可以作为主干网络代替ResNet50,通用性强。并且没有ViT的那种需要在大数据集上训练才会有很好的效果的缺点,因为相对位置偏置的加入,使得Swin Transformer在中小型数据集就有相当于ResNet或者超过ResNet的成绩。另一方面通过消融实验检验了各模块的有效性。最后Swin Transformer模型的提出使得视觉和自然语言处理两个方面的多模态融合得到进一步的发展。