论文摘要
Swin Transformer是2021微软在ICCV2021上发表的文章,获得了ICCV2021 Best Paper,Swin Transformer提出了在视觉领域通用的新的骨架,在目标检测以及实力分割的任务上达到了第一(见下图),其创新点主要在两方面
- 提出了WMSA和SWMSA来缓解Transformer应对图像中庞大的自注意力计算量。
- 层级结构性形成不同分辨率的特征图,在不同分辨率中学习全局/细节特征。
原论文连接: https://arxiv.org/abs/2103.14030
GitHub开源代码地址:https://github.com/microsoft/Swin-Transformer
论文模型架构
上图模型中不包括输入总共有4个Stage,模型只给了Backbone部分,输入和ViT没有什么不同,在Patch Partition模块中把图像H/4,W/4形成(4*4)的patchs展平,输入到linear层将维数映射48->C。然后进入到Stage1部分进行Encoder操作,每个Transformer Block都是有两次自注意计算(WMSA,SWMSA),在进入Patche Merging层进行下采样,图像大小为原来的1/2,channel变为2倍。后续的Stage中进行重复操作,不断下采样和自注意计算。在不断的下采样过程得到层级特征图(见下图)
Patch Merging(下采样)
Swin Tranformer利用该层实现了层级特征图
Patch merging从每个(2*2)的子图的同一个位置提取像素点组合在一起(下采样)然后连接形成一个张量,进行一次LN,再通过Linear把4C映射到2C上(卷积),这样操作将原来的特征图从[H/4,W/4,48]转为[H/8,W/8,96].
W-MSA
A
t
t
e
n
t
i
o
n
(
Q
,
K
,
V
)
=
S
o
f
t
M
a
x
(
Q
K
T
d
)
V
Attention(Q,K,V) =SoftMax (\frac{QK^T}{\sqrt d} ) V
Attention(Q,K,V)=SoftMax(dQKT)V
在ViT中每个像素会和其他全部像素点成计算自注意力(相似度),在高分辨率的图像和密集计算任务中,计算量很庞大,因此提出W-MSA。
Windows Multi-head Self-Attention(W-MSA)中把原来的feature map划分成MM(22)windows,然后只在每个Windows内部进行自注意力计算。
这样下来当feature map的h、w都为112,M=7,C=128,采用W-MSA模块相比MSA模块能够节省约40124743680 FLOPs。
SW-MSA
单纯只进行W-MSA就减少了窗口之间的联系,所以引入Blocks 中第二个阶段Shifted Windows Multi-Head Self-Attention模块,利用整个窗口向下向右移动⌊ M/ 2 ⌋ 像素,来重新划分窗口
这样窗口移动过后在进行自助里计算时,可以看到每个windows的大小不同,数量也增多了,因此作者提出Efficient batch computation for shifted configuration对窗口进行重组和:把M/2向下取整的行移动行最底部,列移动到最右端,就能得到新的4个M*M的windows。
重组合后进行在计算自注意力时候,对于移动后组成不连续像素的Windows中利用Mask
把不连续像素的影响因子屏蔽掉。
Relative Position Bias
A
t
t
e
n
t
i
o
n
(
Q
,
K
,
V
)
=
S
o
f
t
M
a
x
(
Q
K
T
d
)
V
Attention(Q,K,V) =SoftMax (\frac{QK^T}{\sqrt d} ) V
Attention(Q,K,V)=SoftMax(dQKT)V
对比发现绝对位置虽然在ImageNet上不错,但是COCO上却会使精确度降低,因此作者把原来在第一次输入中加上绝对位置操作改为在自注意操作中使用相对位置。
实验
在ImageNet上的分类效果可以发现在ImageNet-IK上训练的结果Swin-Base的精确度在同一个水平中为最好,ViT脱离了在大型数据集上的预训练效果不是很好.
2.在COCO上的目标检测效果
————————————————
版权声明:本文大部分内容借鉴了CSDN博主「太阳花的小绿豆」的原创文章,
文章链接:https://blog.csdn.net/qq_37541097/article/details/121119988