|論文閱讀|Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

能跟CNN相比的Transformer

Elena
7 min readJan 16, 2024

Vision Transformer提出後,雖然促使transformer相關論文於CV領域如雨後春筍般冒出,但模型表現相較於CNN仍略遜一籌,也有些問題尚未克服,Transformer從語言轉換到視覺領域有兩個困難:

  1. 影像尺度變化大,不像NLP是標準固定尺寸
  2. 影像像素高解析度,計算複雜度是影像size的平方,造成計算量相當大

因此,Swin Transformer為了解決上述問題,提出了Hierarchical Transformer,並透過Shifted window來降低計算複雜度。

Swin Transformer主要有以下貢獻:

  1. Shifted Window: 提出了移動窗口(Shifted Window)的自注意力計算方法,在保證高效率計算的同時,也提供了窗口之間的連接,各窗口間的特徵可以互相連接交流,使模型有更豐富的特徵表示。
  2. Hierarchical Transformer:使用類似CNN層次化的方式,分層的特徵來適應視覺任務中物件尺度的變化,並只在局部窗口內計算自注意力來實現線性計算複雜度,解決了之前Transformer在視覺任務上的兩個主要問題。
  3. 在物件偵測、實例分割、影像分類都獲得很好的成績。

模型架構

Swin Transformer 會經過4個stage,分別由Patch Partition, Linear Embeding, Patch Merging, Swin Transformer Block組成。假設影像為224* 224* 3。

Swin Transformer Architecture
  1. Patch Partition: 可將影像分割為多個tokens,本論文使用4*4 size的patch,產生H/4 * W/4個patches (56*56 patches)。Paches的維度為48,即4* 4 (patch size)*3 RGB channel。
  2. Linear Embeding: 可以將維度線性轉換為C,swin-T的C為96。
  3. Linear Merging: 要多尺寸的特徵訊息,需構建一個層級式的Transformer,如CNN中的池化操作。

其下採樣的方式如下:

同樣位置的值會被merge在一起,隔點採樣後,原本的一個張量會變四個張量,維度會變H/2, W/2,尺寸會縮小一倍,將四個張量拼接起來,原本大的張量就會變小,如池化操作般。

Linear Merging

Swin Transformer Block

Vision Transformer其中一個缺點就是全局計算會造成平方倍的時間複雜度,而Swin Transformer則改善了這個情況。

  1. W-MSA (Window Multi-Head Self Attention):

W-MSA將圖像均勻劃分為多個非重疊的窗口,每個窗口包含M×M個patch。在每個窗口內進行自注意力計算,窗口之間互不相關。如下圖左圖紅框為 Swin-Transformer 單獨對每個窗口(16 個 Patch)內部進行 W-MSA;而Vision Transformer則是產生單一低解析度的特徵圖,並且全局建模計算,計算複雜度較高。

2. SW-MSA (Shifted Windows Multi-Head Self-Attention)

由於窗口之間不關聯,W-MSA的建模能力受到限制。因此文中提出了SW-MSA。原本的窗口為Layer 1,將窗口往右下移,變成如Layer 1+ 1所示,窗口移動後,每個patch 可以跟其他窗口patch連結。

一個完整的Swin Transformer Block會經過W-MSA與SW-MSA。

3. Efficient batch computation for shifted configuration

由上述可以發現,原本只要計算四個窗口即可結束,現在卻變成計算九個窗口了,計算複雜度提升,因此為了達成只計算四窗口又可以窗口間互相聯繫,本文提出cyclic shift。如下圖,將A、B、C三塊移到右方,經過循環移位後,可以看到變回四窗口了,然後又有個新問題,這些移動的patch不應該是有聯繫的,不應做自注意力計算,因此本文又提出了masked MSA,讓各窗口可以合理的計算自注意力。Mased MSA 可以看作者於github的解釋。

efficient computation

模型表現

ImageNet-1K 影像分類

在 ImageNet-1K 資料集上,Swin Transformer 達到了 87.3% 的 Top-1 accuracy。這一成績不僅超越了許多傳統的 CNN 模型,也超越了ViT。

COCO 物件偵測和實例分割

在 COCO 2017 資料集上,Swin Transformer 在物件偵測任務中box AP達到了 58.7 ,而在實例分割任務中mask AP達到了 51.1 。這些結果顯示了 Swin Transformer 結合shift window和Hierarchical Transformer在視覺偵測任務中的強大能力。

ADE20K 語義分割

在 ADE20K 資料集上,Swin Transformer 在語義分割任務中達到了 53.5 的mIoU。這一表現同樣超越了先前的最佳模型,提升部分得益於其層次化的架構,可以有效地處理不同尺度的視覺元素,這對於語義分割尤為重要。

小結

  1. 本篇提出了基於分層特徵表示的Swin Transformer。透過移動式窗口(shifted window)進行自注意力計算實現線性計算複雜度。窗口可以在連續層之間移動,建立窗口之間的聯繫。
  2. 在ImageNet分類、COCO物體檢測和ADE20K語義分割3個基準測試集上測試,結果顯著優於以往CNN和Transformer網絡。

這也證明了Transformer網絡可以作為通用視覺骨幹網路,在多種視覺任務上都有很強的表現。

--

--

Elena

AI Engineer | Data | GIS | 金魚腦女子,希望可以透過文字記錄以喚起被遺忘的記憶。