Swin Transformer

1、motivation

CNN的优势是平移不变、尺度不变、层次感受野;

transformer应用到CV的优势全局的感受野(计算量很大),可实现平移不变,但无法做到尺度不变,猜测这也是DETR对小目标检测效果不太好的原因。

鉴于以上分析,Swin transformer (Shifted window transformer, 暂且简称SWTR)构造了层次结构网络、window multi-head self-attention,构造新的CV backbone。

SWTR与ViT的对比:

1、ViT是固定的感受野;SWTR构建层次结构,感受野逐层增大。

2、ViT是全局multi-head self-attention (MSA);SWTR是Windows内部的MSA。

2、网络结构


输入图像:[H, W, 3]

2.1 patch partition

将原始图像切分为4*4的patch,feature dimension变为4*4*3=48,得到feature size [H/4, W/4, 48]

实际代码中采用conv2d(kernal_size=4, stride=4)实现

将每个patch看作token,长度为H/4*W/4的patch序列即可作为经典transformer的标准输入

2.2 linear embedding

乘以嵌入矩阵后patch/token序列size变为[H/4*W/4, C]

2.3 Swin Transformer Block

Swin Transformer Block = Window MSA (W-MSA) + Shift Window MSA (SW-MSA) + LN + MLP + short-cut

整体结构基本和transformer encoder一致,MSA替换为W-MSA和SW-MSA

2.4 Deeper Stage = patch merging + Swin Transformer Block

patch merging

作用和CNN的conv2d(stride=2)或pooling(stride=2)一致,完成feature的下采样,效果如图。 

3、attention

3.1 Window Partition/Reverse

假设原始的feature size为[H1, W1, C1]

reshape分窗口后size为[H1*W1/(window_size*window_size), window_size, window_size, C1]

reverse即上述过程反向操作。

3.2 window attention

与标准transformer的self attention基本一致,区别是增加了相对位置编码B

3.3 shifted window

在均分2*2 window的基础上增加3*3 shift window,打破固定的感受野,每个block内实现感受野的交叉,提升信息交流融合。

但是3*3 shift window的size不一样大,无法batch并行处理,因此对3*3 shift window进行特征图位移cyclic shift,位移后3*3变为2*2大小,然后按照window attetion的计算方式,再执行特征图反向位移reverse cyclic shift,得到shift window attention结果。

cyclic shift通过torch.roll来实现

cyclic shift示意图

3.4 SW-MSA计算细节

在3.3中,3*3的shift window特征图位移后变为2*2 window,但是实际计算还是希望3*3个窗口内执行的,即还是9个attention计算结果,计算中借助mask实现,过程如下:

4、计算复杂度

4.1 矩阵乘法的复杂度计算

矩阵A大小为[M, N],矩阵B大小为[N, K],则AB的计算复杂度为MNK

4.2 SWTR的复杂度计算

MSA计算包括:

KQV计算:3hwC^2

QK^T点积:(hw)^2*C

乘V点积:(hw)^2*C

多头合并变换:hwC^2

合并得4hwC^2 + 2(hw)^2C

W-MSA和MSA区别在于点积部分:

window size为M,则包含h/M*w/M个window,每个window的QK^T复杂度为(M^2)^2*C,总复杂度为M^2hwC,乘V点积一样是(M^2)hwC,合并KQV计算总复杂度为4hwC^2 + 2(M^2)hwC

5、总结

5.1 优势

1、将transformer从CV下游任务如分类(ViT)、检测(DETR)上升到了backbone。

2、多stage的shift window将CNN的层次结构、局部感受野引入transformer

3、局部attention解决transformer计算量太大的问题。

5.2 劣势

1、CNN的还有一个特性是参数共享,Swin transformer的各个窗口的参数还不是共享的。 

2、CNN支持通过调整卷积核大小改变感受野大小,SWTR的window partition怎么分窗目前看起来还没有达到相同的灵活性。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,681评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,710评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,623评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,202评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,232评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,368评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,795评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,461评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,647评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,476评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,525评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,226评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,785评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,857评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,090评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,647评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,215评论 2 341

推荐阅读更多精彩内容