VOLO:鮮丹秘籍


超越CNN的transformer:VOLO


作者:elfin   參考資料來源:VOLO



​ Transformer技術在CV領域大有"取代"CNN結構的趨勢,但是不管是VIT、還是Swin Transformer感覺都差一點火候。這些引入“注意力”的模型在學者的手中,總是告訴我們其很美好,但是在實際的使用過程中,往往性價比遠低於CNN結構。但是,即使如此也不能說明Transformer結構的失敗,相反,我們可以看見其強大的生命力。最近發表的VOLO模型就是如此,它第一次超越了傳統的CNN模型,那么在訓練困難度、收斂速度、運算速度上,它能否超越CNN結構呢?

論文:https://arxiv.org/pdf/2106.13112.pdf

項目:https://github.com/sail-sg/volo


Top---Bottom

0、摘要

​ 多年來,卷積神經網絡一直是視覺識別的主流。雖然目前流行的視覺Transformer(ViTs)在ImageNet分類中顯示出了基於自注意模型的巨大潛力,但是如果不提供額外的數據,其性能仍然不如最新的SOTA-CNNs。在這項工作中,我們試圖縮小性能差距,並證明基於注意力的模型確實能夠優於CNNs。我們發現限制ViTs在ImageNet分類中性能的一個主要因素是ViTs在將精細特征編碼到 token 表示中的效率低下。為了解決這個問題,我們引入了一個新的 outlook attention,並提出了一個簡單而通用的體系結構,稱為vision outlooker (VOLO)。與關注粗糙層次上的全局依賴模型的自我注意不同,outlook attention 有效地將更精細層次的特征和上下文編碼為 token,這對識別性能非常有利,但在很大程度上被自我注意所忽略。實驗表明,我們的VOLO在ImageNet-1K分類上達到了87.1%的top-1分類精度,這是第一個在這個競爭性基准上超過87%的模型,而不需要使用任何額外的訓練數據。此外,預訓練的VOLO能很好地轉移到下游任務,如語義分割 。我們在cityscapes驗證集上獲得了84.3%的mIoU分數,在ADE20K驗證集上獲得了54.3%的mIoU分數。


Top---Bottom

1、介紹

​ 長期以來一直由卷積神經網絡(CNNs)主導的視覺識別建模,最近被 Vision Transformers(ViTs)徹底改變了[14,51,68]。與通過局部和密集卷積核聚合和轉換特征的cnn不同,ViTs通過在視覺內容建模方面具有更大靈活性的自注意機制,直接對局部補丁(又稱token)的長期依賴性進行建模。盡管在視覺識別方面有顯著的效果[37,32,52,79],ViT模型的性能仍然落后於最先進的CNN模型。例如,如表1所示,最先進的基於變壓器的CaiT[52]在ImageNet上達到86.5%的top-1精度,但是與基於CNN的NFNet-F5[2]與SAM和augmult[15,16]實現的86.8%的top-1精度相比,仍然低0.3%。

​ 在這項工作中,我們試圖縮小這種性能差距。我們發現,限制ViTs優於CNNs的一個主要因素是ViTs在將精細特征和上下文編碼為token表示方面的低效性,這對於獲得令人信服的視覺識別性能至關重要。精細層次的信息可以通過細粒度的圖像標記化編碼成標記,然而這將導致更長的標記序列,從而二次增加ViTs的自我注意機制的復雜性。

​ 在這項工作中,我們提出了一種新的簡單而輕量級的注意機制,稱為Outlooker,它可以有效地用精細層次的信息豐富表征。提出的Outlooker方法創新了token聚合的注意力產生方式,使模型能夠有效地編碼精細層次的信息。特別地,它通過有效的線性投影直接從anchor標記特征中推斷聚集周圍標記的機制,從而避免了昂貴的點積注意力計算。

​ 基於提出的Outlooker,我們提出了一個簡單而強大的視覺識別模型體系結構VOLO。VOLO采用兩級體系結構設計,實現了精細的token表示編碼和全局信息聚合。具體地,給定大小為224× 224的輸入圖像,使用自我注意力在粗略的層次上建立全局依賴關系之前(例如,14× 14) ,VOLO將圖像標記在較小大小的補丁上(例如,8× 8),並使用多個Outlookers對令牌表示進行精細編碼(例如,28× 28). 得到的token表示更具表現力,從而顯著提高了模型在圖像分類中的性能。

​ 實驗表明,本文提出的VOLO算法在圖像網分類中具有很好的性能。以一個具有26.6M可學習參數的VOLO模型為例。它在ImageNet上實現了84.2%的top-1精度,而不需要任何額外的數據。在384× 384的輸入分辨率上微調此模型可進一步提高精度至85.2%。此外,當將模型尺寸擴大到296M參數時,在ImageNet、ImageNet ReaL和ImageNet-V2上可分別達到87.1%、90.6%和78.0%的top-1精度,為所有三個分類基准設定了新的SOTA性能。

​ 如上圖所示,與先前最先進的基於CNN的模型(NFNet-F6[2]和SAM[15])以及基於變壓器的模型(帶有KD的CaiT-M48[52])相比,我們的最佳模型VOLO-D5利用了最少的可學習參數,但實現了最佳的精度。此外,如表1所示,即使與以前使用更強的數據擴充和優化方法的最新模型(如SAM[15]和augmult[16])相比,我們的Outlooker仍然表現最好。

​ 我們的VOLO在語義分割任務上也取得了很好的性能。我們在兩個廣泛使用的分割基准上進行了實驗:Cityscapes[10]和ADE20K[77]。實驗表明,我們的VOLO在Cityscapes驗證集上獲得了84.3%的mIoU分數,比SegFormer-B5[64]的最新結果好0.3%。在ADE20K驗證集上,我們獲得了54.3%的mIoU分數,大大提高了在ImageNet-22k上預訓練的Swin Transformer[37]的最新結果(53.5%)。


Top---Bottom

2、方法

​ 我們的模型可以看作是一個具有兩個獨立階段的架構。第一階段由一堆outlooker組成,這些outlooker生成精細級別的token表示。第二階段部署一系列transformer塊來聚合全局信息。在每一階段的開始,使用patch嵌入模塊將輸入映射到具有設計形狀的token表示。


2.1 Outlooker

​ Outlooker由用於空間信息編碼的outlook注意力層和用於通道間信息交互的多層感知器(MLP)組成。對於給定的\(C\)維token序列\(\mathbf{X} \in \mathbb{R}^{H\times W\times C}\),Outlooker過程可以表示為:

\[\begin{align} \tilde{\mathbf{X}}&=\text{OutlookAtt}\left ( \text{LN}\left ( \mathbf{X} \right ) \right )+ \mathbf{X},\\ \mathbf{Z}&=\text{MLP}\left ( \text{LN}\left ( \tilde{\mathbf{X}} \right ) \right ) + \tilde{\mathbf{X}}, \end{align} \]

其中,LN表示LayerNorm。

作者在設計網絡架構的時候,首先PatchEmbed,然后分為4個stage,所有模型都只有第一個是Outlooker。

論文中的Outlook attention是這樣的

我眼中的Outlook attention是這樣的

也許你看論文的圖示有點雲里霧里,我相信上圖會給你較為清晰的解釋,如果不知道Ufold與Fold可以參考博客Unfold與fold介紹


Top---Bottom

2.1.1 Outlook Attention

​ Outlook attention簡單、高效、易於實現。其背后的主要見解是:

  • 1)每個空間位置的特征具有足夠的代表性,可以生成關注權重,用於局部聚集其相鄰特征;
  • 2) 密集的局部空間聚集可以有效地編碼精細層次的信息。

​ 對於每個空間位置\(\left(i,j \right)\),outlook attention計算其與以\(\left(i,j \right)\)為中心,大小\(K\times K\)的局部窗口中的所有鄰居的相似度。與自我注意力不同,自我注意力需要查詢鍵矩陣乘法來計算注意(即,\(Softmax\left ( \textbf{Q}^{\text{T}}\textbf{K}/\sqrt{d} \right )\)),outlook attention通過一個reshape操作簡化了這個過程。

​ 最終,給定一個輸入\(\mathbf{X}\),每一個\(C\)維的token會被映射,使用兩個線性層(權值分別為\(\mathbf{W}_{A}\in \mathbb{R}^{C\times K^{4}}\)\(\mathbf{W}_{V}\in \mathbb{R}^{C\times C}\))分別映射到outlook權值\(\mathbf{A}\in \mathbb{R}^{H \times W \times K^{4}}\) 和值表示 \(\mathbf{V}\in \mathbb{R}^{H \times W \times C}\) 。使用\(\mathbf{V}_{\Delta_{i,j}} \in \mathbb{R}^{C \times K^{2}}\)表示以\(\left(i,j \right)\)為中心的局部窗口的所有值,即:

\[\mathbf{V}_{\Delta_{i,j}}=\left \{ \mathbf{V}_{i+p-\left \lfloor \frac{K}{2} \right \rfloor,j+q-\left \lfloor \frac{K}{2} \right \rfloor} \right \}, \quad 0\leqslant p,q< K \]

Outlook attention

​ 在位置\(\left(i,j \right)\)的outlook權值直接被用作值聚合的注意力權值,它將使用reshape操作得到\(\hat{\mathbf{A}}_{i,j} \in \mathbb{R}^{K^{2} \times K^{2}}\),接着使用\(Softmax\)函數。所以值映射過程可以表示為:

\[\mathbf{Y}_{\Delta_{i,j}}=\text{MatMul}\left ( \text{Softmax} \left ( \hat{\mathbf{A}}_{i,j} \right ), \mathbf{V}_{\Delta_{i,j}}\right ) \]

Dense aggregation 密集聚集

​ Outlook attention密集地聚合了投影值表示。將來自不同局部窗口的同一位置的不同加權值相加得到輸出:

\[\hat{\mathbf{Y}}_{\Delta_{i,j}}=\sum_{0\leqslant m,n< K}\mathbf{Y}_{\Delta_{i+m-\left \lfloor \frac{K}{2} \right \rfloor,\,j+n-\left \lfloor \frac{K}{2} \right \rfloor}}^{i,j} \]

公式(3)、(5)分別對應了Unfold、fold操作。在 outlook attention之后,經常使用一個線性層作為自注意力。


Top---Bottom

2.1.2 Multi-Head Outlook Attention

​ 多頭注意力的實現非常簡單。假設head number設置為N。這里我們只需要調整:

  • \(\mathbf{W}_{A}\)的維度變為\(C \times N \cdot K^{4}\),這里相當於有\(N\)個之前的\(\mathbf{W}_{A}\),類似於group分組;
  • 生成\(N\)個outlook權值\(\mathbf{A}_{n} \in \mathbb{R}^{H \times W \times K^{4}}\);
  • 生成\(N\)個值表示\(\mathbf{V}_{n} \in \mathbb{R}^{H \times W \times C_{N}}\);

其中,\(C_{N} \times N = C\). 對於任意的數據對 \(\left( \mathbf{A}_{n}, \mathbf{V}_{n} \right)\) ,這里將outlook attention分開計算,最后聚合結果形成多頭注意力機制。在實驗部分,我們將討論頭數對模型性能的影響。


Top---Bottom

2.1.3 討論

​ 我們的outlook注意力繼承了卷積和自注意力的優點。它具有以下優點。

  • 首先,outlook attention通過度量token表示之間的相似性來編碼空間信息,這對於特征學習來說比卷積更有效,正如前面的工作[37,45]中所研究的那樣。
  • 第二,前景注意采用滑動窗口機制對表征進行局部精細編碼,並在一定程度上保留了視覺任務的關鍵位置信息[25,56]。
  • 第三,產生注意力權重的方法簡單有效。與依賴於查詢、鍵矩陣乘法的自我關注不同,我們的outlook權重可以通過簡單的reshape操作直接產生,節省了計算量。

​ 為了直觀地感受,我們分別計算自注意力(SA)、局部自注意力(LSA)、Outlook注意力三種注意力在多頭情況下的計算量,我們只計算在size為\(K \times K\)的滑動窗口上的\(H \times W\) tokens操作:

\[\begin{align} \text{M-Adds}\left ( \textbf{SA} \right ) &\approx 4HWC^{2} + 2\left ( HW \right )^{2}C\\ \text{M-Adds}\left ( \textbf{LSA} \right ) &\approx 4HWC^{2} + 2HWK^{2}C\\ \text{M-Adds}\left ( \textbf{OA} \right ) &\approx HWC\left ( 2C+NK^{4} \right ) + 2HWK^{2}C\\ \end{align} \]

我們考慮一般情形,假設\(C=384,\quad K=3, \quad N=6\),則公式(8)是最高效的,因為\(NK^{2} <2C\)

當然\(NK^{2} <2C\)這個條件也很容易不成立。


Top---Bottom

2.2 網絡架構變體

​ 這里基於LV-ViT模型構造了VOLO模型,我們得到了一個健壯的baseline模型,它在ImageNet上實現了\(86.2\%\)的top-1准確率,參數量只有150M。原始的LV-ViT模型是由patch編碼組成的,它將輸入為\(224 \times 224\)的圖像,將其映射到\(14 \times 14\)的tokens。為了利用精細級別的token表示,在第一階段,我們調整了補丁嵌入模塊,使圖像在大小為\(8 \times 8\)而不是\(16 \times 16\)的圖像補丁上進行token化。使用一個Outlookers堆棧在精細級別生成更具表現力的token表示。在第二階段,利用另一個補丁嵌入模塊對token進行下采樣。然后采用一系列transformer對全局信息進行編碼。

​ 基於上述網絡結構,我們介紹了五個版本的VOLO: VOLO-D1VOLO-D2VOLO-D3VOLO-D4VOLO-D5。所有五個版本的詳細超參數設置見表2。在所有版本中,我們都將Outlooker和Transformer的比率保持在1:3左右,這在我們的實驗中是最有效的。在最后階段,我們還添加了兩個類注意層[52],以更新類嵌入。Outlookers中的隱藏維度設置為Transformers中的一半。

小結:
模型的實現示意圖:


Top---Bottom

3、實驗

實驗數據集:ImageNet

代碼實現:基於pytorch

優化器:AdamW優化器

學習率:采用線性學習率縮放策略,\(lr=\text{LR}_{base} \times \frac{batch\_size}{1024}\),權值衰減系數\(5 \times 10^{-2}\)

數據增強:CutOut、RandAug、Token Labeling objective with MixToken(不使用MixUp、CutMix)。

GPU:8張V100、A100

基礎配置見下表:

我們發現較大的模型(參數大於100M)會出現過度擬合。為了緩解這個問題,我們為它們設置了較大的隨機深度概率。此外,學習率的選擇對學習性能也有輕微的影響。我們發現,對於小尺寸模型,使用較大的初始學習率更為有利。此外,裁剪比例也會略微影響性能。更大的模型更喜歡更大的裁剪比例。


Top---Bottom

3.1 實驗結果


Top---Bottom

3.2 Outlooker的表現

VOLO-D1的性能如下:

Outlooker層的影響:


Top---Bottom

3.3 消融實驗

模型放縮: 設置了不同的模型: VOLO-D1 ~ VOLO-D5.

Outlooker的數量、Outlooker的頭數量:


Top---Bottom

3.4 語義分割

基於預訓練模型在語義分割的數據集上測試。

Cityscapes

ADE20K


Top---Bottom

4、相關工作

​ 圖像分類作為計算機視覺中最基本的問題之一,自從深度神經網絡模型的引入以來,已經取得了顯著的進展。接下來,我們將簡要回顧那些與這項工作密切相關的成功模式。

​ 早期達到圖像分類最先進性能的模型大多是基於CNN的模型,這些模型簡單地疊加了一系列空間卷積和池化層,如AlexNet[33]和VGGNet[44]表示。ResNets[20]通過引入skip連接來支持非常深層模型的訓練,從而推進了CNN架構的設計。Inceptions[48、49、47]和ResNeXt[65]研究了模型構建塊的設計原則,並引入了多組專用濾波器的並行路徑。SENet[27]提出了一個壓縮和激勵模塊來顯式地建模通道之間的相互依賴關系。DPN[7]利用residual連接和dense連接來設計更強大的構建塊。EfficientNet[50]和NasNet[80]利用神經結構搜索來搜索強大的網絡結構。后來的最新模型[30、53、63]大多采用不同的訓練或優化方法或微調技術來提高網絡效率。最近,NFNet[2]通過設計一個無規范化的體系結構打破了EfficientNet的主導地位,是第一個工作在ImageNet上實現了86.5%的top-1精度,而不需要額外的數據。CNNs作為事實上的視覺識別網絡,多年來確實取得了很大的成功,但其研究的重點是如何通過設計更好的體系結構來學習更具辨別力的局部特征。本質上,它們缺乏在已被證明至關重要的表示之間顯式構建全局關系的能力[58]。

​ 圖像分類的最新進展主要是由基於注意力的模型[73,58,26]或特別是基於transformer的模型推動的。transformer利用了自我注意機制,使得遠程依賴的建模成為可能。transformer[55]最初設計用於自然語言任務[13、41、3、67、40、36],最近被證明在圖像分類方面是有效的。Dosovitskiy等人[14]率先表明,純基於transformer的架構(即ViT)也可以在圖像分類中獲得最先進的性能,但需要大規模的數據集,如ImageNet-22k和JFT-300M(尚未公開)進行預訓練。DeiT[51]和T2T-ViT[68]緩解了ViT需要大規模數據集的問題,提出了數據高效的ViT。從那時起,隨着技術的進一步發展,基於ViT的研究工作不斷涌現。其中一些[4,19,61,54,79]通過修改patch 編碼或修改transformer塊或兩者,將局部依賴引入視覺transformer中,而另一些[21,37,57]采用金字塔結構,在保持模型捕捉低級特征的能力的同時,減少整體計算量。也有一些工作[78,71,52,18]旨在解決ViTs的優化和定標問題。

​ 我們的VOLO不僅對長程依賴性建模,而且還通過Outlooker將精細級別的特征編碼為token表示。與最近依賴卷積進行特征編碼的混合架構(例如,Hybrid-ViT[14]和BoTNet[45])不同,Outlooker建議使用局部成對token相似性將精細級別的特征和空間上下文編碼為token特征,因此更有效和參數效率更高。這也使得我們的模型不同於動態卷積[60]和Involution[34],后者生成依賴輸入的卷積核來編碼特征。


Top---Bottom

5、總結

​ 我們提出了一個新的模型,Vision Outlooker(VOLO)。大量的圖像分類和分割實驗表明,VOLO模型優於CNN和Transformer模型,並建立了新的SOTA結果。我們希望VOLO在一些計算機視覺任務上的強大表現將鼓勵后續研究更好的精細特征學習。VOLO的性能優勢來自於新的outlook注意機制,它以一種密集的方式動態地聚集精細級別的特征,我們將繼續在其他應用程序中進行研究,如自然語言處理。


Top---Bottom

6、感想

​ 近幾個月transformer模型大行其道,各種技巧層出不窮,每新出一個技術總會讓我們欣喜不已,但是這個VOLO不僅性能指標更好;作者在處理精細特征、結構設計上都給我們很大的啟示。


Top---Bottom

完!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM