天天看點

Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 論文筆記Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

論文連結: https://arxiv.org/abs/2103.14030

一、 Problem Statement

目前在vision task上使用transformer有兩個挑戰:

  1. scale difference。 在目前的transformer-based的方法中,tokens通常都是固定大小,對于vision task不适用,因為視覺的元素可以在尺度上變化很大。
  2. 圖像資料是一個像素分辨率更高的資料。在目前的transformer對于這些像素是很難處理的,導緻了計算複雜度高,時間消耗大。

二、 Direction

  1. 提出了以transformer為backbone的方法,Swin Transformer,能夠建構不同層級的feature maps
  2. 把計算複雜度與圖像大小變為線性關系。

三、 Method

1.網絡架構

先來看一下整體結構:

Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 論文筆記Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

可以看到主要是5個階段,分别為:

  1. Patch Partition
  2. Stage1 - Stage 4

(1) Patch Partition

首先像ViT那樣,使用patch splitting module把RGB圖像輸入分割成沒有重疊區域的patches。每一個patch會被認為是一個"token",其特征是原始RGB像素的拼接。 在論文中,作者設定patch size 為 4x4,是以每一個patch的特征次元就是4x4x3=48。

(2) Stage1 - stage4

  • Stage1 主要是由兩個子產品組成: Linear embedding 和 Swin Transformer Block。
  • stage2-4 主要是由兩個子產品組成:Patch Merging 和 Swin Transformer Block。

下面來分别說說各個子產品:

  1. linear embedding 是把分割完之後的特征轉換為次元為C的一個"token"。
  2. Patch Merging 是把tokens的數量減少,生成一個對應大小的hierarchical representation。可以看到從stage2-stage4,每一層都有patch merging。
    Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 論文筆記Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
  3. Swin Transformer Blocks 是為了feature transformation,由standard multi-head self attention module(MSA)組成,這個子產品是基于 shifted windows的。下圖可以清晰表示這個子產品的結構。
    Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 論文筆記Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

W-MSA and SW-MSA are multi-head self attention modules with regular and shifted windowing configurations, respectively.

2.Shifted Window based Self-Attention

上面的Swin Transformer Blocks 含有兩種 multi-head self attention類型。第一種是regular,第二種是 shifted windows。先來看看regular,也就是self-attention in non-overlapped window。

(1) Self-attention in non-overlapped windows

為了模型的效率,作者提出了在local windows内計算self-attention。windows配置設定到每一個被平均分割的圖像上。假設每個window包含 M × M M \times M M×M個patches,全局MSA的計算複雜度和window based的複雜度分别為:

Ω ( M S A ) = 4 h w C 2 + 2 ( h w ) 2 C , Ω ( W − M S A ) = 4 h w C 2 + 2 M 2 h w C \Omega(MSA) = 4hwC^2+2(hw)^2 C, \\ \Omega(W-MSA) = 4hwC^2 + 2M^2hwC Ω(MSA)=4hwC2+2(hw)2C,Ω(W−MSA)=4hwC2+2M2hwC

可以看到,如果圖像的hw很大,全局的MSA計算複雜度是龐大的。是以window based MSA,能夠有效的提升效率。

(2) Shifted Winodw partitioning in successive blocks

上面的那種方法缺少了windows之間的連接配接,缺乏資訊交流。為了引入cross-window connections。但為了不增加更多的windows,也實作windows之間有資訊交流,作者提出了一個shifited window partitioning方法。

Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 論文筆記Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

一開始使用的是regular window partitioning 方法,就把8x8的feature map 平均分割為 2x2 個windows,大小為4x4(M=4)。緊接着下一個子產品就是用了shifted windows,,移動的值是視窗值除2。但為了盡可能少的增加windows的數量,作者提出了 cyclic-shift 方法。

Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 論文筆記Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

原來的圖被劃分了9個視窗,中間的空白區域就是資訊交流的證明。我們先把左上部分(ABC)移動到右下,然後再用切分四塊的方法去切這個圖檔,這時候空白區域就被隔出來了,達到了我們想要的效果。

3. Relative position bias

在計算self-attention的時候,作者也嘗試添加一個relative position bias B ∈ R M 2 × M 2 B \in \R^{M^2 \times M^2} B∈RM2×M2。

Attention(Q,K,V) = SoftMax ( Q K T / d + B ) V \text{Attention(Q,K,V)} = \text{SoftMax}(QK^T / \sqrt{d} + B)V Attention(Q,K,V)=SoftMax(QKT/d

​+B)V

Q , K , V Q,K,V Q,K,V是query, key,和value 矩陣。 d d d是 q u e r y / k e y query/key query/key次元。 M 2 M^2 M2是在一個視窗下patches的數量。因為relative position在每一個軸上都是在 [ − M + 1 , M − 1 ] [-M+1, M-1] [−M+1,M−1]的範圍内,我們設定一個小的bias matrix B ^ ∈ R ( 2 M − 1 ) × ( 2 M − 1 ) \hat{B} \in \R ^{(2M-1) \times (2M-1)} B^∈R(2M−1)×(2M−1),然後 B B B的取值來自于 B ^ \hat{B} B^。

4. Architecture Variants

Swin Transformer的base model 是 Swin-B。同樣,有Swin-T, Swin-S, 和 Swin-L,分别比base model 複雜度大 0.25x, 0.5x, 和 2x。預設狀态下,window size 是7, query dimension 是 32, expansion layer 是 4。其他不一樣的模型:

Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 論文筆記Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

C 是 第一階段hidden layers的通道數。

四、 Conclusion

性能超過目前的CNNs檢測模型。作為一個新的backbone,transformer有自身的優勢。本文把多尺度的特征圖和transformer相結合,增大感受野,提升性能。具體有一些細節還是需要看源碼了解。

五、 Reference

  1. https://www.jianshu.com/p/0635969f478b

繼續閱讀