Swin Transformer

1、motivation

CNN的優(yōu)勢是平移不變、尺度不變、層次感受野;

transformer應用到CV的優(yōu)勢全局的感受野(計算量很大),可實現(xiàn)平移不變,但無法做到尺度不變,猜測這也是DETR對小目標檢測效果不太好的原因。

鑒于以上分析,Swin transformer (Shifted window transformer, 暫且簡稱SWTR)構造了層次結構網(wǎng)絡、window multi-head self-attention,構造新的CV backbone。

SWTR與ViT的對比:

1、ViT是固定的感受野;SWTR構建層次結構,感受野逐層增大。

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

2、網(wǎng)絡結構


輸入圖像:[H, W, 3]

2.1 patch partition

將原始圖像切分為4*4的patch,feature dimension變?yōu)?*4*3=48,得到feature size [H/4, W/4, 48]

實際代碼中采用conv2d(kernal_size=4, stride=4)實現(xiàn)

將每個patch看作token,長度為H/4*W/4的patch序列即可作為經(jīng)典transformer的標準輸入

2.2 linear embedding

乘以嵌入矩陣后patch/token序列size變?yōu)?b>[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基本一致,區(qū)別是增加了相對位置編碼B

3.3 shifted window

在均分2*2 window的基礎上增加3*3 shift window,打破固定的感受野,每個block內(nèi)實現(xiàn)感受野的交叉,提升信息交流融合。

但是3*3 shift window的size不一樣大,無法batch并行處理,因此對3*3 shift window進行特征圖位移cyclic shift,位移后3*3變?yōu)?*2大小,然后按照window attetion的計算方式,再執(zhí)行特征圖反向位移reverse cyclic shift,得到shift window attention結果。

cyclic shift通過torch.roll來實現(xiàn)

cyclic shift示意圖

3.4?SW-MSA計算細節(jié)

在3.3中,3*3的shift window特征圖位移后變?yōu)?*2 window,但是實際計算還是希望3*3個窗口內(nèi)執(zhí)行的,即還是9個attention計算結果,計算中借助mask實現(xiàn),過程如下:

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區(qū)別在于點積部分:

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 優(yōu)勢

1、將transformer從CV下游任務如分類(ViT)、檢測(DETR)上升到了backbone。

2、多stage的shift window將CNN的層次結構、局部感受野引入transformer

3、局部attention解決transformer計算量太大的問題。

5.2 劣勢

1、CNN的還有一個特性是參數(shù)共享,Swin transformer的各個窗口的參數(shù)還不是共享的。?

2、CNN支持通過調(diào)整卷積核大小改變感受野大小,SWTR的window partition怎么分窗目前看起來還沒有達到相同的靈活性。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容