Swin Transformer迎來30億引數的v2.0,我們應該擁抱視覺大模型嗎?

語言: CN / TW / HK

(本文閱讀時間:15分鐘)

編者按:2021年,獲得 ICCV 最佳論文獎的 Swin Transformer,通過在廣泛的視覺問題上證明 Transformer 架構的有效性,加速了計算機視覺領域基本模型架構的變革。2021年末,微軟亞洲研究院的研究員們又進一步提出了 Swin Transformer v2.0 版本,新版本訓練了迄今為止最大的稠密視覺模型,並在多個主流視覺任務上大大重新整理了記錄,相關論文也已被 CVPR 2022 接收。研究員們希望藉助 Swin Transformer v2.0 展現視覺大模型的“強悍”能力,呼籲整個領域加大對視覺大模型的投入,併為之提供相應的訓練“配方”,從而為視覺領域的科研人員做進一步探索提供便利。那麼,Swin Transformer v2.0 有哪些不同?今天就讓我們來一探究竟吧!

人腦是大模型的一個典範。人的大腦擁有著千億量級的神經元數目,和百萬億量級的連線數(引數)。而這樣超大規模的模型為人腦成為目前唯一的通用智慧“機器”提供了堅實的基礎。在大容量下,人腦不僅在通常的智慧任務中表現卓越,還具備極強的零樣本和少樣本遷移能力,從而可以快速適應新的環境和技能。

最近幾年,自然語言處理(NLP)領域令人難以置信的成功就主要得益於對模型容量的大幅度擴充套件。短短几年時間,其模型容量擴大了幾千倍,從3.4億引數的 BERT 模型,進化到了擁有5300億引數的 Megatron-Turing 模型,這些大型語言模型在語言理解和語言生成任務上都取得了長足的進步。同時,語言大模型還被證明具有極強的小樣本甚至零樣本學習能力。

與人腦和 NLP 的模型相比,計算機視覺領域的模型規模仍相對較小。視覺 Transformer 的出現為視覺模型的擴大提供了重要的基礎,此前最大的稠密視覺模型是18億引數的 ViT-G 模型和24億引數的 CoAtNet 模型,它們都曾在 ImageNet-1K 影象分類任務上重新整理了新的記錄。但在更廣泛的視覺任務中,大模型的效果仍然未知。

因此,探索如何進一步擴大視覺模型的規模,以及如何將其應用在更廣泛的視覺任務上,是探索視覺大模型的重要問題。基於此目的,微軟亞洲研究院的研究員們在 Swin Transformer 的基礎上設計了 Swin Transformer v2.0,它 具有30億引數 ,是 迄今為止最大的稠密視覺模型,可以有效地遷移到需要更高解析度影象的各種視覺任務中 。通過擴充套件模型容量和解析度,Swin Transformer v2.0 已在四個具有代表性的基準上重新整理了紀錄,證明了視覺大模型在廣泛視覺任務中的優勢。(點選閱讀原文,瞭解論文詳情)

Swin Transformer打破視覺研究由CNN“統治”的局面

Swin Transformer 是一個 通用的視覺 Transformer 骨幹網路 ,它在物體檢測和語義分割任務中大幅重新整理了此前的紀錄,並被廣泛應用於眾多視覺任務中,如影象生成、視訊動作識別、視覺自監督學習、影象復原、醫療影象分割等。Swin Transformer 打破了計算機視覺領域被 CNN(卷積神經網路)長期“統治”的局面 ,加速了計算機視覺領域基本模型架構的變革,這一工作也因此 獲得了2021年 ICCV 最佳論文獎——馬爾獎

Swin Transformer 的核心思想在於將具有很強建模能力的 Transformer 結構與重要的視覺訊號先驗結合起來。這些先驗包括層次性、區域性性以及平移不變性等等。Swin Transformer 的一個重要設計是  shifted windows(移位的不重疊視窗) ,它可以大幅降低計算複雜度,讓計算複雜度隨著輸入影象的大小呈線性增長;同時不同於傳統的滑動窗,不重疊視窗的設計對硬體實現更加友好,從而具有更快的實際執行速度。

圖1:Sliding windows(滑動視窗)vs. Shifted windows(移位視窗)

事實上,Swin Transformer 不是一個一蹴而就的工作,而是研究團隊四年多在相關方向上不斷堅持的結晶。“人腦成功的一個關鍵密碼就是其擁有大量的新皮質,新皮質中的神經結構是統一和通用的,這就使得人類不用通過生物進化就可以實現和適應各種新的智慧或者環境。在這方面,我們一直看好 Transformer 或者其中的注意力模組,三年前我們首次嘗試將 Transformer 應用於視覺骨幹網路的設計,並提出了局部關係網路 LR-Net,但當時的實用性還不足。Swin Transformer 通過引入移位視窗,終於達成了一個實用的視覺 Transformer 骨幹網路,” 微軟亞洲研究院視覺計算組高階研究員胡瀚說。

Swin Transformer 的目標是希望證明視覺 Transformer 能在廣泛的視覺問題中超越此前佔據主導地位的 CNN。如今該目標已達成,那麼下一步做什麼?胡瀚認為,“過去幾年 NLP 領域最重要的發現之一就是擴大模型容量可以持續幫助各種 NLP 任務,並且模型越大,零樣本和少樣本學習的能力越強。所以我們希望探索計算機視覺中能否擁有同樣的性質。”於是,Swin Transformer v2.0 誕生了。

在探索過程中,研究員們發現如下三個問題對於視覺大模型格外重要:

1. 如何解決大模型訓練穩定性的問題

2. 如何將大模型應用於擁有更高解析度的下游視覺任務的問題

3. 如何減少大模型對標註資料的要求

針對上述三個問題,Swin Transformer v2.0 給出了自己的回答。下面就讓我們來詳細瞭解一下。

30億引數的Swin Transformer v2.0,穩定性與準確性雙提升

在進一步擴大模型容量的過程中,微軟亞洲研究院的研究員們發現訓練過程存在嚴重的不穩定性問題。如圖2所示,隨著原始 Swin Transformer 模型從小變大,網路深層的啟用值會急劇增加,擁有2億引數的 Swin-L 模型,其幅值最高和最低層之間的差異可以達到10^4。當進一步將模型容量擴大到6.58億引數,它會在訓練過程中崩潰。

圖2:各種大小模型的各層啟用值。H大小的模型是在自監督學習階段訓練的,而其他規模的模型則是由分類任務訓練的。*表示使用了模型崩潰前第40輪的模型權重。

仔細觀察原始 Swin Transformer 的架構,研究員們發現這是由於殘差分支的輸出直接加回主分支而導致的。原始的 Swin Transformer(以及絕大多數視覺 Transformer)在每個殘差分支的開始都使用了預歸一化(pre-normalization),它可以歸一化輸入的幅值,但對輸出沒有限制。在預歸一化下,每個殘差分支的輸出啟用值會直接合並回主分支,並被逐層累加,因而主分支的幅值會隨著深度的增加而越來越大。這種不同層的幅值差異很大程度上導致了訓練的不穩定性。

為了緩解這一問題,研究員們提出了一種新的歸一化方式,稱為 殘差後歸一化(residual-post-normalization 。如圖3所示,該方法將歸一化層從每個殘差分支的開始移到末尾,這樣每個殘差分支的輸出在合併回主分支之前都會被歸一化,當層數加深時,主分支的幅度將不會被累加。實驗發現, 這種新的歸一化方式使得網路各層的啟用值變得更加溫和

圖3:Swin Transformer v1.0 vs. v2.0

除此之外,研究員們還發現,隨著模型變大,在原始的自注意力計算中,某些層的注意力權重往往會被幾個特定的點所支配,特別是在使用後注意力的情況下。為了緩解這一問題,研究員們還提出了 縮放的餘弦注意力機制(scaled cosine attention) ,它可以取代之前的點乘注意力機制。在縮放的餘弦注意力機制中,自注意力的計算與輸入的幅值無關,從而可以產生更溫和的注意力權重。

實驗證明,以上兩種技術不僅使大模型的訓練過程更加穩定,而且還提高了準確性。

從低解析度向高解析度遷移,

看Swin Transformer v2.0如何克服不良反應

視覺大模型的另一難題在於許多下游視覺任務需要高解析度的輸入影象或注意力視窗。由於預訓練往往在低解析度下進行,所以在高解析度的下游任務上進行微調的視窗大小會產生顯著變化。目前常見的做法是對位置偏置(position bias)進行雙立方插值,這是一種隨意的簡單處理方式,其效果並不是最佳的。

為了解決這一問題,研究員們提出了 對數空間的連續位置偏置(Log-spaced continuous position bias, Log-spaced CPB) 。通過對對數空間的位置座標應用一個小的元網路,Log-spaced CPB 可以產生任意座標範圍的位置偏置。由於元網路可以接受任意座標,因此通過共享其權重,一個預訓練好的模型可以在不同的視窗大小之間自由遷移。另一方面,通過將座標轉化到對數空間,在不同的視窗解析度之間遷移所需的外推率要比使用原始線性空間座標的外推率小得多,如圖4所示。

圖4:Log-spaced CPB vs. Linear spaced CPB

藉助 Log-spaced CPB,Swin Transformer v2.0  實現了模型在不同解析度之間的平滑遷移 。當把預訓練解析度從224畫素縮小到192畫素時,其結果也不會受到影響,並且計算速度還提升了50%,顯著降低了訓練類似體量的模型的成本。

模型容量和解析度的擴大也導致了現有視覺模型的 GPU 視訊記憶體消耗過高。為了解決視訊記憶體問題,研究員們結合了幾個重要的技術,包括零冗餘優化器(zero-redundancy optimizer)、後向重計算(activation check-pointing)以及新提出的順序自我注意計算力機制(sequential self-attention computation)。有了這些技術,大模型和大解析度下的  GPU 視訊記憶體消耗明顯減少,而其對訓練速度的影響卻很小

自監督學習SimMIM,

解決視覺大模型的資料飢餓問題

訓練越大的模型往往需要越多的資料,而相比 NLP,計算機視覺領域缺乏蘊含人類監督資訊的資料來支撐大模型的訓練。這就要求視覺領域在訓練大模型時,要減少對標註資料的依賴,需要在更少量資料的情況下探索大模型。對此,研究員們通過 引入自監督學習的掩碼模型 SimMIM  來緩解這一問題。如圖5所示,SimMIM 通過掩碼影象建模(masked image modeling)來學習更好的影象表徵。它採用隨機掩碼策略,用適度大的掩碼塊對輸入影象做掩碼;同時,通過直接回歸來預測原始畫素的 RGB 值;由於該模型的預測頭很輕,所以只需要一層線性層即可。

圖5:SimMIM 自監督學習方法示意圖

SimMIM 非常簡單且高效,藉助 SimMIM,Swin Transformer v2.0  降低了對標註資料的需求 ,最終只用了7000萬張帶有噪聲標籤的影象就訓練了30億引數的模型。

有圖有真相:v2.0效能“強悍”,

在四大基準上均創新紀錄

通過擴充套件模型容量和解析度,Swin Transformer v2.0  在四個具有代表性的基準上均重新整理了紀錄 ,證明了視覺大模型在廣泛視覺任務中的優勢:在 ImageNet-V2 影象分類任務上 top-1 準確率為84.0%;在 COCO 物體檢測任務上為63.1/54.4 box/mask mAP;在 ADE20K 語義分割上為59.9 mIoU;在 Kinetics-400 視訊動作分類的 top-1 準確率為86.8%。

表1:ImageNet 影象分類的效能

表2:COCO 物體檢測的效能

表3:ADE20K 語義分割的效能

表4:Kinetics-400 視訊動作分類的效能

視覺大模型發展的三道坎:

資料匱乏、學習方法和通用性

Swin Transformer v2.0 在眾多視覺任務中的“強悍 效能證明了視覺大模型的潛力,同時,為視覺大模型提供了一個可行的訓練“配方”。微軟亞洲研究院的研究員們期望 Swin Transformer v2.0 可以為視覺領域的科研人員們做進一步前沿探索提供便利,並藉此激勵整個領域加大對視覺大模型的投入。

“我還是比較看好視覺大模型的”,胡瀚表示,“大模型已經證明通過增加模型容量可以持續提升效能的能力,其小樣本甚至零樣本能力也十分驚豔,而小樣本能力對於實現通用智慧非常關鍵”。

當然,胡瀚也認為視覺大模型仍舊面臨一些挑戰,“ 一是資料問題 ,視覺領域可用於訓練的有效資料相比 NLP 領域還是有不小的差距。自監督是一個潛在的解決方法,但目前的自監督方法包括 SimMIM/BEiT/MAE/PeCo 等等都還不能利用好更大的資料,也就是證明更多的影象資料能幫助訓練更好的模型。”

二是,學習方法上還需要突破 。現在在訓練大模型方面,學界和業界對於自監督、影象分類和多模態方法均有所嘗試,也取得了一些效果,但這些離我們真正解決問題還差的很遠”。

三是,如何建立視覺通用模型的問題還未知 。現如今的視覺大模型大多還是依賴於預訓練和微調的方式,不同的視覺應用仍需要依賴於不同的模型,如何能真正建立視覺的通用模型,用一個模型解決大部分問題,這還需要科研人員做大量的探索。”

視覺大模型的未來很光明,但也充滿了挑戰。微軟亞洲研究院的研究員們期待更多同仁一起努力,推進視覺大模型的更多進展。

相關論文:

  • Swin Transformer V2: Scaling Up Capacity and Resolution

    https://arxiv.org/abs/2111.09883

  • SimMIM: A Simple Framework for Masked Image Modeling

    https://arxiv.org/abs/2111.09886

  • Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

    https://arxiv.org/abs/2103.14030

  • Local Relation Networks for Image Recognition

    https://arxiv.org/abs/1904.11491

相關 GitHub 連結:

  • https://github.com/microsoft/Swin-Transformer

  • https://github.com/microsoft/SimMIM

你也許還想看