天天看點

屠榜各大 CV 任務,微軟開源的 Swin Transformer 有多強?微軟 Swin Transformer 正式開源實作方法具體表現Transformer 在 CV 上的應用前景有可能替代 CNN 嗎?

作者:InfoQ

近日,微軟Swin Transformer代碼正式開源,僅僅兩天就在GitHub上收到了1.9k Star,相關話題也引起了廣泛的讨論和關注。

< h1 類"pgc-h-arrow right-right"data-track""2" > Microsoft Swin Transformer 官方開源</h1>

Swin Transformer被了解為一個常見的視覺骨幹網絡,它設計了一個分層表示,從小更新檔開始,然後逐漸将相鄰的更新檔合并到更深層次的Transformer層中。通過這種分層結構,Swin Transformer 模型可以使用高密度預測因子(如 FPN 和 UNET)進行技術更新,通過限制非重疊視窗中的計算量來降低計算強度。每個視窗中的 PATCH 數量是固定的,是以複雜性會随着圖像大小的增加而增加。與 ViT 相比,Swin Transfomer 計算複雜度顯著降低,計算複雜度與輸入圖像大小成線性關系。

Swin Transformer的核心設計是通過将自我注意層劃分為SHIFT來顯着增強模組化能力,SHIFTED Window連接配接到上部視窗并在兩者之間連接配接。此政策還有助于有效減少延遲:所有查詢更新檔視窗共享相同的 KEY 集,進而節省硬體記憶體;

基于此,Swin Transformer在回歸任務、圖像分類、目标檢測、語義分割等方面具有較強的性能,性能優于VIT/DEIT和RESNE(X)T。

屠榜各大 CV 任務,微軟開源的 Swin Transformer 有多強?微軟 Swin Transformer 正式開源實作方法具體表現Transformer 在 CV 上的應用前景有可能替代 CNN 嗎?

GitHub 位址: https://github.com/microsoft/Swin-Transformer

原作者團隊曹躍明知故問:https://www.zhihu.com/question/437495132/answer/1800881612

位址: https://arxiv.org/pdf/2103.14030.pdf

<> h1類"pgc-h-right-arrow"data-track"的實作方法。</h1>

Swin Transformer 的體系結構如下圖所示。首先,它将輸入圖像劃分為更新檔,就像VIT一樣,作者使用4 x 4的更新檔大小,然後是嵌入層,最後是作者設計的Swin Transformer BLOCK。

屠榜各大 CV 任務,微軟開源的 Swin Transformer 有多強?微軟 Swin Transformer 正式開源實作方法具體表現Transformer 在 CV 上的應用前景有可能替代 CNN 嗎?

Swin Transformer Block:此子產品與Transformer用于移位視窗的多注意力子產品一緻,該子產品包含一個MSA(多頭注意)子產品SHIFT WINDOW,後跟2層MLP,後跟層規範層,該層添加到每個MSA子產品和每個MLP層。然後是剩餘的連接配接。

基于自張力的移位視窗

屠榜各大 CV 任務,微軟開源的 Swin Transformer 有多強?微軟 Swin Transformer 正式開源實作方法具體表現Transformer 在 CV 上的應用前景有可能替代 CNN 嗎?

标準 Transformer 使用全局自我關注來建立令牌之間的關系,但這會使圖像大小增加一倍,進而導緻複雜性增加,是以不适合高強度任務。為了提高模組化效率,作者提出了"部分視窗計算自注意",假設每個視窗都包含MXM更新檔,全局MSA子產品和基于視窗的MSA子產品,并在HXW更新檔的圖像之上執行複雜性計算:

屠榜各大 CV 任務,微軟開源的 Swin Transformer 有多強?微軟 Swin Transformer 正式開源實作方法具體表現Transformer 在 CV 上的應用前景有可能替代 CNN 嗎?

(1)複雜度是貼片數量硬體的二次增長,(2)線性增長,其中m是固定的,但全局自我注意是大硬體,是以基于視窗的自我注意計算不是很高。

将移位視窗拆分為連續塊

基于 Windows 的 Self-Attention 雖然具有線性增長的複雜性,但視窗之間缺乏連接配接性,進而限制了模型的模組化功能。

為了在容器上引入連接配接以進行模型維護,作者提出了SHIFT WINDOW分割的概念。第一個子產品使用中性視窗拆分并放大以根據視窗大小生成 8 x 8 特征圖。我們将此視窗劃分為 2 x 2 形式,然後通過 Shifted Window 設定下一個子產品,并将其移動為 M/2 像素。

使用偏移結構,Swin 變壓器塊的計算如下:

屠榜各大 CV 任務,微軟開源的 Swin Transformer 有多強?微軟 Swin Transformer 正式開源實作方法具體表現Transformer 在 CV 上的應用前景有可能替代 CNN 嗎?

W-MSA和SW-MSA分别代表了使用具有轉移自我注意力的整齊分割。

Shifted Window 跨多個視窗添加與模型的連接配接,并保持模型高效運作。

移位視窗高效批量計算

屠榜各大 CV 任務,微軟開源的 Swin Transformer 有多強?微軟 Swin Transformer 正式開源實作方法具體表現Transformer 在 CV 上的應用前景有可能替代 CNN 嗎?

SHIFTED WINDOW也有自己的問題,即它會導緻視窗數量從原來的(h/m xw/m)增加到(h/m-1)x(W/m-1),其中一些視窗比MXM小。此方法使用 MXM 填充較小的視窗,并計算注意值以遮罩填充操作;

是以,作者提出了一種更有效的BATCH計算方法,即沿左上角執行循環移位。當這種位移完成時,Batch WINDOW将具有非相鄰子視窗的特征圖,這相當于使用Cyclic-Shift,Batch-Windows和整齊視窗分割來限制子視窗中的Self-Attentions數量,進而大大提高了計算效率。

位置偏移量:

作者描述了《自我注意》中頭部的相對位置。偏移量 B:

屠榜各大 CV 任務,微軟開源的 Swin Transformer 有多強?微軟 Swin Transformer 正式開源實作方法具體表現Transformer 在 CV 上的應用前景有可能替代 CNN 嗎?

其中:

屠榜各大 CV 任務,微軟開源的 Swin Transformer 有多強?微軟 Swin Transformer 正式開源實作方法具體表現Transformer 在 CV 上的應用前景有可能替代 CNN 嗎?
屠榜各大 CV 任務,微軟開源的 Swin Transformer 有多強?微軟 Swin Transformer 正式開源實作方法具體表現Transformer 在 CV 上的應用前景有可能替代 CNN 嗎?

這将顯著提高性能。

基于大小和計算複雜度,建立了一個名為SWIN-B的基本模型,并介紹了SWIN-T、SWIN-S和SWIN-L,分别是複雜度的0.25倍、0.5倍和2倍。

當我們将視窗大小 M 設定為 7 時,标頭查詢 D 為 32,每個展開層的 mlp α為 4。

屠榜各大 CV 任務,微軟開源的 Swin Transformer 有多強?微軟 Swin Transformer 正式開源實作方法具體表現Transformer 在 CV 上的應用前景有可能替代 CNN 嗎?

其中 C 是在初始階段隐藏層的通道數。

<> h1級"pgc-h-right-arrow"data-track"的具體性能。</h1>

圖像分類

表 1A,從頭開始在 EdgeNet-1K 上進行訓練:

屠榜各大 CV 任務,微軟開源的 Swin Transformer 有多強?微軟 Swin Transformer 正式開源實作方法具體表現Transformer 在 CV 上的應用前景有可能替代 CNN 嗎?

表 1B,在 ImageNet-22k 上進行的第一輪訓練,然後遷移到 ImageNet-1K:

屠榜各大 CV 任務,微軟開源的 Swin Transformer 有多強?微軟 Swin Transformer 正式開源實作方法具體表現Transformer 在 CV 上的應用前景有可能替代 CNN 嗎?

目标檢測

表 2A,在不同型号架構上用 Swin 變壓器替換 BackBone:

屠榜各大 CV 任務,微軟開源的 Swin Transformer 有多強?微軟 Swin Transformer 正式開源實作方法具體表現Transformer 在 CV 上的應用前景有可能替代 CNN 嗎?

表2C,soTA比較結果:

屠榜各大 CV 任務,微軟開源的 Swin Transformer 有多強?微軟 Swin Transformer 正式開源實作方法具體表現Transformer 在 CV 上的應用前景有可能替代 CNN 嗎?

語義分割

表 3 對于較小的型号,提供了比以前的 SOTA SETR 更高的 MIOU:

屠榜各大 CV 任務,微軟開源的 Swin Transformer 有多強?微軟 Swin Transformer 正式開源實作方法具體表現Transformer 在 CV 上的應用前景有可能替代 CNN 嗎?

燒蝕實驗

表 4, Shifted Window 在相對位置偏移方面的性能改進:

屠榜各大 CV 任務,微軟開源的 Swin Transformer 有多強?微軟 Swin Transformer 正式開源實作方法具體表現Transformer 在 CV 上的應用前景有可能替代 CNN 嗎?

表5,移位視窗和循環執行有效:

屠榜各大 CV 任務,微軟開源的 Swin Transformer 有多強?微軟 Swin Transformer 正式開源實作方法具體表現Transformer 在 CV 上的應用前景有可能替代 CNN 嗎?

表6、不同自我關注的比較:

屠榜各大 CV 任務,微軟開源的 Swin Transformer 有多強?微軟 Swin Transformer 正式開源實作方法具體表現Transformer 在 CV 上的應用前景有可能替代 CNN 嗎?

<用變壓器在CV> <h1級"pgc-h-right-arrow"資料跟蹤""102"上的應用前景取代CNN。</h1>

ViT的出現擴大了Transformer的使用範圍,這也使AI從業者成為Transformer與CNN關系的焦點。一位使用者明知故犯地問道:

基于Transformer已經有三種主要的基于圖像的應用程式:分類(ViT),檢測(DETR)和分割(SETR),所有這些都具有良好的效果。那麼,Transformer未來是否有可能取代CNN,Transformer是否會像在NLP中那樣創新CV空間?下一個研究思路是什麼?

關于這個問題,很多消息靈通的受訪者都給出了自己的答案,包括浙江大學控制科學與工程博士、複旦大學微電子學院碩士、阿裡巴巴進階算法專家等,普遍總結為未來将形成完全替代是不好的預測,但CNN的腳踏實地的攻擊已經形成。

有興趣的使用者可以閱讀每個朋友的完整答案:https://www.zhihu.com/question/437495132/answer/1800881612

相關連結 http://www.https://www.programmersought.com/article/61847904617/