Swin Transformer:Hierarchical Vision Transformer using Shifted Windows——论文分析

一、摘要

挑战:物体尺寸差异和高分辨率
Transformer可以用作一个通用的网络,而不像ViT那样只用于分类。
Swin Transformer:Hierarchical Vision Transformer using Shifted Windows——论文分析_第1张图片
如上图,ViT全局建模,始终处理的是16倍下采样之后的特征,不适合密集预测型任务。
Swin Transformer为了减少序列长度,在小窗口内做自注意力,用了locality的归纳偏置,节省资源。patch merging,相邻小patch合成大patch,类似池化。
Swin Transformer:Hierarchical Vision Transformer using Shifted Windows——论文分析_第2张图片
如上图,在 l 层加上shift操作,窗口之间能进行交互,从而有全局自注意力的效果。

二、模型

Swin Transformer:Hierarchical Vision Transformer using Shifted Windows——论文分析_第3张图片
Stage 1
输入X:224×224×3
patch:4×4×3=48
patch-num:56×56
X=56×56×48

C=96
X = 56×56×96 = 3136×96
序列长度太长,通过Swin Transformer Block在窗口内做自注意力,最后输出尺寸不变,如下图所示:
Swin Transformer:Hierarchical Vision Transformer using Shifted Windows——论文分析_第4张图片
输出56×56×96

Stage 2
输入56×56×96
patch merging:cnn下采样一个特征图的效果
在这里插入图片描述输出28×28×192

Stage 3
输入28×28×192
patch merging
输出14×14×384

Stage 4
输入14×14×384
patch merging
输出7×7×768
最后全局池化拉成1×768

2.1 基于移动窗口的自注意力

假设尺寸是56×56×96
patch大小是7×7
一共有8×8个窗口,分别算自注意力。
在这里插入图片描述
多头自注意力的计算复杂度如公式1,输入图片尺寸是hw×C(C是向量长度),输出q、k、v,复杂度是3hwC2;q和k相乘,复杂度是(hw)2C;softmax后再与v相乘,复杂度是(hw)2C;得到的结果最后乘以映射权重矩阵C×C,复杂度是hwC2

基于窗口的同理,每个窗口大小是M×M(M=7),1式中的hw=M2,总窗口数是hw/M2,故而窗口数乘以1式得2式。

图(b)所示得两个连续transformer的计算公式如下,先进行基于窗口的自注意力,然后移动窗口再计算自注意力。
Swin Transformer:Hierarchical Vision Transformer using Shifted Windows——论文分析_第5张图片

2.2 通过掩码提高移动窗口的性能

Swin Transformer:Hierarchical Vision Transformer using Shifted Windows——论文分析_第6张图片
对于移动窗口的图,可以通过padding0的方式对相同尺寸的窗口做自注意力,但效率不高;而cyclic shift通过如图所示的拼接,依然是划分成4×4个窗口,然后对包含不连续信息的窗口做masked MSA,如下所示,67是C,8是A,25是B,在对左下角的窗口做MSA时,会累加一个如右图矩阵模板,softmax后变为0。
Swin Transformer:Hierarchical Vision Transformer using Shifted Windows——论文分析_第7张图片
同时还提出使用相对位置编码。

2.3 较传统移动窗口的区别

Swin Transformer:Hierarchical Vision Transformer using Shifted Windows——论文分析_第8张图片
在传统的滑动窗口方法中。不同的查询q和q’ 将具有不同的相邻窗口,该窗口指示不同的key集。计算对内存访问不友好,因此实际速度不好。

在Swin Transformer中使用的非重叠窗口方法中,例如,在同一红色窗口中的不同查询,例如q和q’,将共享相同的key集。

官方代码库:https://github.com/microsoft/Swin-Transformer

你可能感兴趣的:(深度学习,transformer,深度学习,滑动窗口,Swin)