ICCV2021 | Swin Transformer: 使用移位視窗的分層視覺Transformer

CV技術指南(公眾號) 發表於 2021-11-28

 前言 

本文解讀的論文是ICCV2021中的最佳論文,在短短几個月內,google scholar上有388引用次數,github上有6.1k star。

 

本文來自公眾號CV技術指南的論文分享系列

關注公眾號CV技術指南 ,專注於計算機視覺的技術總結、最新技術跟蹤、經典論文解讀。

圖片

ICCV2021 | Swin Transformer: 使用移位視窗的分層視覺Transformer

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

程式碼:https://github. com/microsoft/Swin-Transformer

 

Motivation


論文試圖擴充套件Transformer的適用性,使其可以作為計算機視覺的通用主幹,就像它在NLP中所做的那樣,也可以像CNNs在視覺中所做的那樣。

論文提到,將其在語言領域的高效能轉換到視覺領域的重大挑戰可以用這兩種模式之間的差異來解釋。這些不同之處之一涉及到規模。

與作為語言transformer中處理的基本元素的單詞tokens不同,視覺元素在尺度上可以有很大的變化,這是一個在諸如目標檢測之類的任務中受到關注的問題。在現有的基於transformer的模型中,tokens都是固定比例的,這一特性不適合這些視覺應用

另一個不同之處在於,與文字段落中的文字相比,影像中畫素的解析度要高得多。存在許多視覺任務,如語義分割,需要在畫素級別進行密集預測,這對於高解析度影像上的Transformer來說是很困難的,因為它的self-attention的計算複雜度是影像大小的二次方

 

創新思路


為了克服這些問題,論文提出了一種通用的Transformer骨幹網,稱為Swin Transformer,它構造了分層的特徵對映,並且計算複雜度與影像大小成線性關係。

圖片

ICCV2021 | Swin Transformer: 使用移位視窗的分層視覺Transformer

如圖1(A)所示,Swin Transformer通過從小塊(灰色輪廓)開始,逐漸合併更深的Transformer層中的相鄰塊來構建分層表示

有了這些分層的特徵圖,Swin Transformer模型可以方便地利用先進的技術進行密集預測,如特徵金字塔網路(FPN)或U-Net。線性計算複雜度是通過在分割影像(紅色輪廓)的非重疊視窗內區域性計算self-attention來實現的。每個視窗中的patches數量是固定的,因此複雜度與影像大小成線性關係

這些優點使得Swin Transformer適合作為各種視覺任務的通用主幹,而不是以前基於Transformer的架構,後者生成單一解析度的特徵地圖,並且具有二次方複雜性。

圖片

ICCV2021 | Swin Transformer: 使用移位視窗的分層視覺Transformer

Swin Transformer的一個關鍵設計元素是視窗分割槽在連續的self-attention層之間的移動,如圖2所示。移動的視窗橋接了前一層的視窗,提供了它們之間的連線,顯著增強了建模能力

這種策略在實際延遲方面也是有效的:一個視窗內的所有query patch都共享相同的key集,這便於硬體中的記憶體訪問。相反,較早的基於滑動視窗的self-attention方法由於不同query畫素的不同key集而在一般硬體上受到低延遲的影響。

實驗表明,所提出的移位視窗方法比滑動視窗方法具有更低的延遲,但在建模能力上是相似的。事實證明,移位視窗方法對於全MLP體系結構也是有益的。


Methods


Overall Architecture

Swin Transformer架構的概述如圖3所示,它展示了tiny版本(Swin-T)。

圖片

ICCV2021 | Swin Transformer: 使用移位視窗的分層視覺Transformer

圖3.(a)Swin Transformer(Swin-T)的架構;(b)兩個連續的Swin Transformer塊(用公式表示(3))。W-MSA和SW-MSA分別是具有規則和移位視窗配置的多頭自注意模組。

它首先通過patch分割模組(如ViT)將輸入的RGB影像分割成不重疊的patch。每個patch都被視為一個“token”,其特徵被設定為原始畫素RGB值的串聯。在實現中,論文使用了4×4的塊大小,因此每個塊的特徵維度是4×4×3=48。將線性嵌入層應用於該原始值特徵以將其投影到任意維度(表示為C)。

在這些patch tokens上應用了幾個帶有修改的self-attention計算的transformer block (Swin Transformer block)。transformer塊保持tokens數(H/4×W/4),與線性嵌入一起稱為“Stage1”。

為了產生分層表示,隨著網路的深入,通過patch合併層來減少tokens的數量。第一個patch合併層將每組2×2相鄰patch的特徵進行拼接,並在4C維拼接的特徵上應用線性層。這將tokens的數量減少了2×2=4的倍數(2倍下采樣),並且輸出維度被設定為2C。然後應用Swin Transformer塊進行特徵變換,解析度保持為H/8×W/8。這第一個塊的拼接和特徵變換稱為“Stage2”。重複“Stage3”和“Stage4”兩次,輸出解析度分別為H/16×W/16和H/32×W/32。

這些Stage共同產生具有與典型卷積網路(如VGG和ResNet)相同的特徵對映解析度的分層表示。因此,該體系結構可以方便地取代現有方法中的骨幹網路,用於各種視覺任務。

 


Swin Transformer Block: Swin Transformer通過將transformer塊中的標準多頭self-attention(MSA)模組替換為基於移位視窗的模組,在保持其他層不變的情況下構建Swin Transformer。

 

圖片

ICCV2021 | Swin Transformer: 使用移位視窗的分層視覺Transformer

如圖3(b)所示,Swin Transformer模組由一個基於移位視窗的MSA模組和一箇中間帶有GELU非線性的兩層MLP組成。在每個MSA模組和每個MLP之前應用LayerNorm(LN)層,並且在每個模組之後應用殘差連線。

 

基於移位視窗的self-attention


非重疊視窗中的self-attention:  為有效建模,論文提出在區域性視窗中計算self-attention。視窗被佈置成以不重疊的方式均勻地分割影像。假設每個視窗包含M×M個patch,全域性MSA模組和基於h×w patch影像的視窗的計算複雜度分別為

圖片

ICCV2021 | Swin Transformer: 使用移位視窗的分層視覺Transformer

其中,前者與patch數HW為平方關係,後者在M固定時是線性的(預設情況下設定為7)。全域性self-attention計算對於大型硬體來說通常是負擔不起的,而基於視窗的self-attention是可伸縮的。

 


在連續塊中移動視窗分割槽:  基於視窗的self-attention模組缺少跨視窗的連線,這限制了其建模能力。為了在保持非重疊視窗計算效率的同時引入跨視窗連線,論文提出了一種移位視窗劃分方法,該方法在連續Swin Transformer塊中的兩種劃分配置之間交替。

圖片

ICCV2021 | Swin Transformer: 使用移位視窗的分層視覺Transformer

在Swin Transformer架構中計算self-attentioin的移位視窗方法的圖示。在Layer1(左)中,採用規則的視窗劃分方案,並在每個視窗內計算自我關注。在下一層l+1(右)中,視窗分割槽被移位,從而產生新視窗。新視窗中的self-attention計算跨越了層l中先前視窗的邊界,提供了它們之間的連線。

如圖所示,第一個模組使用從左上角畫素開始的規則視窗劃分策略,將8×8特徵圖均勻劃分為大小為4×4(M=4)的2×2個視窗。然後,下一模組通過將視窗從規則劃分的視窗移位(M/2,M/2)(向下取整)畫素來採用從前一層的視窗移位的視窗配置。使用移位視窗分割槽方法,連續的Swin Transformer塊計算為

圖片

ICCV2021 | Swin Transformer: 使用移位視窗的分層視覺Transformer

其中,ˆzl和zl分別表示塊1的(S)WMSA模組和MLP模組的輸出特徵;W-MSA和SW-MSA分別表示使用規則和移位視窗分割槽配置的基於視窗的多頭self-attention。

移位視窗劃分方法引入了前一層相鄰非重疊視窗之間的連線,在影像分類、目標檢測和語義分割中被發現是有效的。

 


移位的高效批處理計算:移位視窗分割槽的一個問題是,它將在移位中產生更多視窗,從h/M x w/M(向上取整)到(h/M + 1) x (w/M+1)(向上取整),並且一些視窗將比MxM更小。一個原始的解決方案是將較小的視窗填充到M×M的大小,並在計算注意力時遮蔽填充的值。當規則分割槽中的視窗數量較小時,例如2×2,使用這種樸素的解決方案增加的計算量是相當可觀的(2×2→3×3,是2.25倍)。

圖片

ICCV2021 | Swin Transformer: 使用移位視窗的分層視覺Transformer

在這裡,論文提出了更有效的批處理計算方法,即向左上角方向迴圈移動,如圖所示。在這種轉移之後,批處理視窗可能由特徵圖中不相鄰的幾個子視窗組成,因此採用mask機制將self-attention計算限制在每個子視窗內。在迴圈移位的情況下,批處理視窗的數量與常規視窗劃分的數量相同,因此也是有效的。

 


相對位置偏差:在計算self-attention時,在計算相似度時將每個頭部的相對位置偏差B(大小為M^2×M^2)包括在內:

圖片

ICCV2021 | Swin Transformer: 使用移位視窗的分層視覺Transformer

其中Q,K,V大小為M^2 x d;d的大小為query/key,M^2是一個視窗中的patches數量。由於沿每個軸的相對位置在[−M+1,M−1]範圍內,將較小尺寸的偏置矩陣ˆB(大小為(2M−1)×(2M−1))引數化,並且B中的值取自ˆB。

圖片

ICCV2021 | Swin Transformer: 使用移位視窗的分層視覺Transformer

如表所示,論文提到,與沒有這種bias項或使用絕對位置嵌入的同行相比,有顯著的改進。進一步向輸入新增絕對位置嵌入會略微降低效能,因此在論文的實現中不採用它。在預訓練中學習到的相對位置偏差還可以用於通過雙三次插值來初始化具有不同視窗大小的微調模型。

 

Architecture Variants


論文構建了名為Swin-B的基本模型,其模型大小和計算複雜度與ViTB/Deit-B相似。還提出了Swin-T、Swin-S和Swin-L,它們的模型規模和計算複雜度分別約為0.25×、0.5×和2倍。請注意,Swin-T和Swin-S的複雜度分別與ResNet-50(Deit-S)和ResNet-101相似。預設情況下,視窗大小設定為M=7。對於所有實驗,每個頭的query維度為D=32,每個MLP的擴充套件層為α=4。這些模型變體的體系結構超引數包括:

圖片

ICCV2021 | Swin Transformer: 使用移位視窗的分層視覺Transformer

 

Conclusion


論文提出的Swin Transformer在影像分類、目標檢測和語義分割等識別任務中取得了較好的效能。它在三個任務上的延遲與Vit/Deit和ResNe(X)t模型相比要高得多。

1. 不同骨幹網在ImageNet-1K分類上的比較。

圖片

ICCV2021 | Swin Transformer: 使用移位視窗的分層視覺Transformer

2. 其在COCO測試開發集上的58.7box AP和51.1mask AP超過了之前SOTA結果+2.7box AP(無外部資料的複製-貼上)和+2.6mask AP(DetectoRS)。

圖片

ICCV2021 | Swin Transformer: 使用移位視窗的分層視覺Transformer

3.在ADE20K語義分割上,它在Val集合上獲得了53.5mIoU,比之前的SOTA(SETR])提高了+3.2mIoU。在ImageNet-1K影像分類上達到了87.3%的TOP-1正確率。

圖片

ICCV2021 | Swin Transformer: 使用移位視窗的分層視覺Transformer

4. 不同的self-attention計算方法和實現在V100 GPU上的真實速度。

圖片

ICCV2021 | Swin Transformer: 使用移位視窗的分層視覺Transformer

歡迎關注公眾號 CV技術指南 ,專注於計算機視覺的技術總結、最新技術跟蹤、經典論文解讀。

在公眾號中回覆關鍵字 “入門指南“可獲取計算機視覺入門所有必備資料。

ICCV2021 | Swin Transformer: 使用移位視窗的分層視覺Transformer

ICCV2021 | Swin Transformer: 使用移位視窗的分層視覺Transformer

其它文章

ICCV2021 | SOTR:使用transformer分割物體

ML2021 | PatrickStar:通過基於塊的記憶體管理實現預訓練模型的並行訓練

ICCV2021 | PnP-DETR:用Transformer進行高效的視覺分析

ICCV2021 | 醫學影像等小資料集的非自然影像領域能否用transformer?

ICCV2021 | Vision Transformer中相對位置編碼的反思與改進

ICCV2021 | MicroNet:以極低的 FLOPs 改進影像識別

ICCV2021 | 重新思考視覺transformers的空間維度

CVPR2021 | TransCenter: transformer用於多目標跟蹤演算法

CVPR2021 | 開放世界的目標檢測

CVPR2021 | TimeSformer-視訊理解的時空注意模型

CVPR2021 | 一個高效的金字塔切分注意力模組PSA

CVPR2021 | SETR: 使用 Transformer 從序列到序列的角度重新思考語義分割

經典論文系列 | 重新思考在ImageNet上的預訓練

經典論文系列 | Group Normalization & BN的缺陷

經典論文系列 | 目標檢測--CornerNet  & anchor boxes的缺陷

經典論文系列 | 縮小Anchor-based和Anchor-free檢測之間差距的方法:自適應訓練樣本選擇

2021-視訊監控中的多目標跟蹤綜述

統一視角理解目標檢測演算法:最新進展分析與總結

全面理解目標檢測中的anchor    |    例項分割綜述總結綜合整理版
單階段例項分割綜述    |    小目標檢測的一些問題,思路和方案

目標檢測中迴歸損失函式總結    |    小目標檢測常用方法總結

視覺Transformer綜述    |    2021年小目標檢測最新研究綜述

Siamese network綜述    |    姿態估計綜述    |    語義分割綜述

視訊理解綜述:動作識別、時序動作定位、視訊Embedding

相關文章