【2021 ICCV-Backbone 结构解析】Swin Transformer
1、网络整体框架
1.1 Swin Transformer和Vision Transformer的对比
swin transformer架构和CNN架构类似,都是逐层下采样倍数增加。
1.2 Satge1部分的图像预处理
Swin Transformer分为四个模块,每个模块下采样两倍,通道维度增加两倍。实际上,satge1中的patch partition和linear embeding合并起来和后面的Path Merging类似
。
stage1 的patch partition和linear embeding做法如上图所示,先使用44的窗口将图像分块,然后再将小窗口内的图像拉长,变成163 = 48维度,此时得到的新特征图高宽缩小四倍。最后使用Layer Norm将新特征图的通道维度延申到指定维度(例如:96、128、196)
2、Patch Merging
patch merging的结构如图所示:
将窗口(44)中每个相同位置的特征提取出来,形成一个新特征(4 , 22 ),然后再将形成的新特征在通道维度上拼接(224),再通过LayerNorm结构,最后通过全连接层,将每个特征在通道维度上进行映射(222)------特征图尺寸缩小两倍,而通道维度扩充两倍。
3、W-MSA详解
目的:减少计算量; 缺点: 窗口间无法进行信息交互
swin transformer 的block结构如图所示,是成对出现的,所以swin transformer block的块数都是偶数倍。
首先对特征图分成多个window,然后对每个window的内部计算multi-head self-attention。这么做的目的是为了减少计算量,但缺点是窗口之间无法进行信息交,感受野变小,无法看到全局的视野。
具体节省的计算量计算公式如下:
4、SW-MSA详解
目的是实现不同window之间的信息交互
1、 首先通过将window位置平移获取新分割特征的方式,得到包含先前不同window信息的新块特征,以此来实现不同window之间的特征交互。(如上图左上角所示)。
2、但是如果直接计算重新分割后特征图的msa(multi-head self attention),需要计算9次(为了实现并行计算,需要将所有新window扩充到4*4大小),增加了计算量。
3、因此作者按照上图右下角的做法,将块的位置平移,得到新的”4个44“大小的window。对于A B C三种不同形式的window(2个42, 2个24 和 4个22)使用masked MAS操作进行计算。这样的计算量和先前分割方式的计算量一致。
4、具体的masked MAS计算如下:
即将不属于本window的信息减去100,再通过softmask后,不同区域的权重就是0.
4、Relative Position Bias详解
上图中计算attention时的B就是相对位置偏置,表的结果表明了,不使用相对位置偏置得到的结果准确率较低。
作者在这里,不是二元 坐标而是一元坐标:
然后再在此基础上加上相对位置偏置