天天看點

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

微軟 Swin Transformer 正式開源

Swin Transformer 可以了解為一個通用的視覺骨幹網絡,Swin Transformer 設計出了一種分層表示形式,首先由小的 PATCHES 開始,而後逐漸将相鄰的各 Patches 融合至一個更深的 Transformer 層當中。通過這種分層結構,Swin Transformer 模型能夠使用 FPN 及 UNET 等高密度預測器實作技術更新,通過限制非重疊視窗中的部分計算量降低計算強度。各視窗中的 PATCHES 數量是固定的,是以随着圖像尺寸的增加,複雜性也将不斷增長。相比于 ViT,Swin Transfomer 計算複雜度大幅度降低,随着輸入圖像大小線性計算複雜度。

Swin Transformer 的核心設計是将 Self-Attention 層劃分為 SHIFT,SHIFTED Window 接入上一層視窗,二者之間保持連接配接,由此顯著增強模組化能力。這種政策還有助于有效降低延遲:所有 Query Patches 視窗共享同一 KEY 集,由此節約硬體記憶體;以往的 Transformer 方法由于使用不同的 Query 像素,是以在實際硬體中往往具有較高延遲;論文實驗證明,SHIFTED Window 方法帶來的延遲較傳統滑動方法更低,且二者的模組化能力基本相同。

基于此,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

實作方法

Swin Transformer 的架構如下圖所示。首先,它與 VIT 一樣将輸入的圖檔劃分為多個 Patches,作者使用 4 x 4 的 patch 大小;之後是嵌入層,最後則是作者設計的 Swin Transformer BLOCK。

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

Swin Transformer Block:此子產品是 Transformer 中使用 Shifted Window 的多 ATTENTION 子產品,具有一緻性;Swin Transformer 子產品中包含一個 MSA(多頭 Attention)子產品 SHIFTED WINDOW,之後是 2 層 MLP,接着将 Layernorm 層添加至各 MSA 子產品與各 MLP 層内,而後是剩餘連接配接。

基于 Self-Attension 的 SHIFTED Window

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

标準 Transformer 使用全局 self-attention 以建立各令牌之間的關系,但這會令圖像大小增加 2 倍、導緻複雜性随之提升,是以不适用于處理高強度任務。為了提升模組化效率,作者提出由“部分視窗計算 Self-Attention”,即假設各個視窗均包含 MXM Patches、全局 MSA 子產品與基于視窗的 MSA 子產品,并在 HXW Patches 的圖像之上進行複雜度計算:

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

(1)的複雜度為 PATCH 數量 HW 的次生增長;(2)則為線性增長,其中 m 為固定值,但全局 self-attention 為大 HW,是以基于視窗的 Self-Attention 計算量不會很高。

将 SHIFTED Window 拆分為連續塊

基于 Windows 的 Self-Attention 雖然擁有線性增長的複雜度,但其缺少在各視窗之間的連接配接,是以限制了模型的模組化能力。

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

使用 SHIFTED 結構,Swin Transformer Blocks 的計算如下所示:

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

W-MSA 與 SW-MSA 分别表示使用整齊分割與 SHIFTED SELF-ATTENTION。

Shifted Window 可以跨越多個視窗向模型添加連接配接,并保持模型的良好運作效率。

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,并計算 attention 值以掩蔽填充操作;當視窗數量較少、但大于 2 x 2 時,由此帶來的額外計算量将相當可觀(由 2 x 2 到 3 x 3,計算量增加達 2.25 倍)。

是以,作者提出了一種更為高效的 BATCH 計算方法,即沿左上角執行 Cyclic Shift。在完成這項位移之後,Batch WINDOW 将擁有一張由非相鄰子視窗組成的特征圖,這相當于是使用 Cyclic-Shift、Batch-Windows 與整齊視窗分割限制子視窗内的 Self-Attention 數量,進而極大提高了計算效率。

相對位置偏移:

作者介紹了 Self-Attention 中各頭的相對位置。偏移 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 為初始階段隐藏層的通道數量。

具體表現

圖像分類

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

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

表 1B,在 ImageNet-22k 上進行首輪訓練,之後遷移至 ImageNet-1K:

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

目标檢測

表 2A,在不同模型幀上使用 Swin Transformer 替代 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,SHIFTED WINDOW 與 CYCLIC 高效執行:

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

表 6,不同 Self-Attentions 的比較:

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

Transformer 在 CV 上的應用前景有可能替代 CNN 嗎?

ViT 的出現擴大了 Transformer 的使用範圍,這也讓 AI 領域的從業者開始關注 Transformer 與 CNN 的關系。在知乎上,一位使用者提問稱:

目前已經有基于 Transformer 在三大圖像問題上的應用:分類(ViT),檢測(DETR)和分割(SETR),并且都取得了不錯的效果。那麼未來,Transformer 有可能替換 CNN 嗎,Transformer 會不會如同在 NLP 領域的應用一樣革新 CV 領域?後面的研究思路可能會有哪些呢?

關于這個問題,很多知乎答主已經給出了自己的答案,包括浙江大學控制科學與工程博士、複旦大學微電子學院碩士、阿裡巴巴進階算法專家等,大體總結為未來是否會形成完全替代尚不好預測, 但對 CNN 的降維打擊已經形成。

感興趣的使用者可以到知乎閱讀各位答友的完整回答:

參考連結:

https://www.programmersought.com/article/61847904617/

繼續閱讀