1. 程式人生 > 其它 >Transformers - 1 - A Survey of Visual Transformers - 1

Transformers - 1 - A Survey of Visual Transformers - 1

 

A Survey of Visual Transformers

Abstract

Transformer是一種基於注意力的編碼器-解碼器架構,它徹底改變了自然語言處理領域。受這一重大成就的啟發,近年來在將類似transformer的架構應用到計算機視覺(CV)領域方面進行了一些開創性的工作,這些工作已經證明了它們在各種CV任務中的有效性。憑藉具有競爭力的建模能力,與現代卷積神經網路(CNN)相比,視覺transformer在ImageNet、COCO和ADE20k等多個基準上取得了令人印象深刻的效能。在本文中,我們為三種基本的CV任務(分類、檢測和分割)提供了超過100種不同的視覺transformer的全面回顧,其中提出了一種分類法,根據它們的動機、結構和使用場景來組織這些方法。由於訓練設定和定向任務的差異,我們也在不同的配置,而不僅僅是在不同的基準上評估了這些方法,以方便和直觀的比較。此外,我們還揭示了一系列重要但尚未開發的方面,這些方面可能使Transformer從眾多架構中脫穎而出,例如,鬆弛高階語義嵌入,以拉近視覺和順序Transformers之間的差距。最後,提出了三個值得進一步投資的研究方向。

 

I. INTRODUCTION

 transformer[1]作為一個基於注意力的結構,一開始在序列建模和機器翻譯任務中展示了強大的能力。如圖1所示,transformer逐漸成為自然語言處理(NLP)的主流深度學習模型。最近的主流模型是一些自監督的transformer模型,它們預先從足夠的資料集中訓練出來,然後在小且具體的下游任務[2]-[9]中進行微調。生成式預訓練Transformer (Generative Pre-trained Transformer,GPT)系列[2]-[4]利用Transformer解碼器執行自迴歸語言建模任務,而Transformer的Bidirectional Encoder Representations(BERT)[5]及其變體[6]、[7]作為構建在Transformer編碼器上的自編碼器語言模型。

在計算機視覺(CV)領域,在visual Transformer模型之前,卷積神經網路(CNN)已經成為主流的正規化[10]-[12]。受到NLP[1]、[13]中自注意機制的巨大成功的啟發,一些基於CNN的模型試圖通過空間級[14]-[16]或通道級[17]-[19]的額外的自注意層捕捉長範圍依賴,而另一些演算法則試圖用全域性[20]或區域性自注意塊[21]-[25]完全替代傳統的卷積。雖然Cordonnier等人從理論上論證了自注意塊[26]的有效性和效率,但這些純注意力模型在當前的基準上仍不如目前最先進的(SOTA) CNN模型。

如上所述,基於注意力的模型在視覺識別領域得到了大量的關注,而普通的Transformer在NLP領域取得了巨大的成功。受這些啟發,許多作品最近將Transformer遷移到CV任務中,並取得了類似的結果。如Dosovitskiy et al.[27]提出了一個純Transformer,使用影象patch作為影象分類的輸入,在許多影象分類基準上實現了SOTA。此外,視覺transformer在其他CV任務中也取得了良好的效能,如檢測[28]、分割[29]、跟蹤[30]、影象生成[31]、增強[32]。

如圖1所示,在[27]、[28]之後,在過去的一年中,各個領域中有數百個基於transformer的模型被提出。因此,我們迫切需要一個系統的文獻調查來識別、分類和批判性地評價這些新出現的視覺transformer的表現。考慮到讀者可能來自不同的領域,我們將重點放在這些現有的用於三個基本的CV任務的視覺transformer,包括分類、檢測和分割。如圖2所示,本調查根據這些方法的任務、動機和結構特徵,將其分為多個組。其中一些可能部分重疊。例如,一些改進不僅提高了backbone在影象分類中的效能,而且還提高了密集預測任務(如檢測和分割)的效能,許多深度和層次的方法也是通過對CNN和attention的改進實現的。

 

 

去年Transformer已發表了一些綜述,如Tay et al. [86]檢查了在NLP中Transformers的效率,Khan et al. [87] 和Han et al. [88]使用非系統的方法總結了早期視覺Transformers和先前的注意力模型以及一些語言模型。Lin等人介紹了Transformer的最新綜述,他們系統地綜述了Transformer的各種變體,並粗略地提到了視覺應用[89]。基於這些觀察結果,本文旨在對最近的視覺Transformer進行全面回顧,並對這些現有方法進行系統分類: 

(1)全面性和可讀性。本文全面回顧了在三個基本任務:分類、檢測和分割中提出的100多個視覺Transformers。我們選擇並分析了50多個具有代表性的模型,如圖2所示。我們不僅從單個角度對每個模型進行詳細的分析,還通過逐步分析、對比分析、多視角分析等方法來構建它們之間的內在聯絡。

(2)直觀的比較。由於這些Transformers在不同的任務中遵循不同的訓練方案和超引數設定,本調查通過將它們在不同的資料集和限制條件下分離,提出了多個橫向比較。更重要的是,我們總結了針對每個任務設計的一系列有前景的元件,包括:基於層次結構的用於backbone的淺層區域性卷積,基於稀疏注意的用於neck檢測器的空間先驗加速器,以及用於分割的通用mask預測方案(shallow local convolution with hierarchical structure for backbone, spatial prior acceleration with sparse attention for neck detector, and general-purpose mask prediction scheme for segmentation.)。

(3)深入分析。我們進一步在以下幾個方面提供了重要的觀點:從序列任務到視覺任務的轉換過程、Transformer與其他視覺網路之間的對應關係,以及在不同任務中採用的可學習嵌入(如類token、物件查詢、mask嵌入)的相關性。最後,提出了未來的研究方向。例如,編碼器-解碼器Transformer backbone可以通過可學習嵌入將三個子任務統一起來。

本文的其餘部分組織如下。第II節介紹了原始Transformer的總體架構和關鍵元件。第III節總結了Transformer backbones的綜合分類,並對影象分類進行了簡要討論。然後,在第IV節我們回顧了當代Transformer檢測器,包括Transformer necks和backbones。第V節根據嵌入的形式(即patch embedding和query embedding),闡明瞭分割領域中的主流Transformer變體。此外,第II-第IV節還使用效能評估來簡要分析了他們相應領域的細節。第VI章從三個方面進行了進一步的討論,並指出了今後的研究方向。

 

II. ORIGINAL TRANSFORMER

最初的Transformer[1]首先應用於序列到序列的自迴歸任務。與之前的序列轉導模型[90]、[91]相比,Transformer採用了多頭注意機制和逐點前饋網路,繼承了編碼器-解碼器結構,但完全拋棄了遞迴和卷積。在下面的小節中,我們將描述四個關鍵元件,並提供原始Transformer的體系結構概述。

A. Attention Mechanism

作為Transformer的基本成分,注意機制能被分成兩部分:1)一個transformer層將輸入序列對映到三個不同的序列向量(query Q、key K,和value V),其中n和d是輸入序列的長和維度。每個向量為:

其中是線性矩陣,dk是query和key的維度,dv是value的維度。query從X投射而來,而key和value則從Y投射而來。這個雙序列輸入方案被稱為cross-attention機制。具體來說,它可以被當作 Y = X 的self-attention。除此之外,self-attention被應用到了編碼器和解碼器上,而cross-attention被作為了解碼器之間的連線。

2)一個注意層,如圖3所示,將query和相應的key集合在一起,然後賦值給value,更新輸出向量

對應的公式為:

 

其中注意的權重是使用query和key之間的點積操作生成的,比例因子和softmax操作用來將注意權重轉換為一個歸一化分佈。最終權重被賦值給相應的value元素,然後得到最終的輸出向量。

 

B. Multi-Head Attention Mechanism

由於特徵子空間的限制,單頭注意力塊(single-head attention block)的建模能力較粗糙。為了解決這一問題,如圖3所示,Vaswani等人提出了一種多頭自注意機制(multi-head self-attention ,MHSA),該機制將輸入線性投影到多個特徵子空間中,並由多個獨立的注意頭(層)並行處理。得到的向量被串聯並對映到最終的輸出。MHSA的流程可以表述為:

其中h是頭的數量,表示輸出投射矩陣,表示每個頭的輸出向量,是三個不同的線性矩陣組

與卷積的稀疏連線類似,多頭注意利用dmodel/h維向量將輸入分離為h個獨立的注意頭,並將每個注意頭特徵並行整合。在沒有額外計算代價的情況下,多頭注意力豐富了特徵子空間的多樣性。

 

C. Position-wise Feed-Forward Networks

然後將MHSA的輸出饋入兩個連續的帶有啟用ReLU的前饋網路(FFN):

 

這個基於位置的前饋層可以被看作是一個基於點的卷積,它平等地對待每個位置,但在每個層之間使用不同的引數。

 

D. Positional Encoding

由於Transformer/Attention對輸入嵌入的操作是同時且獨立的,因此忽略了序列的順序。為了利用順序資訊,一種常見的解決方案是在輸入後附加一個額外的位置向量,因此有了“位置編碼”這個術語。位置編碼有許多選擇。例如,一個典型的選擇是使用不同頻率的正弦和餘弦函式:

 其中的i和d分別表示索引和向量的長度,pos是序列中每個元素的位置

 

E. Transformer Model

圖4顯示了Transformer模型的整體編碼器-解碼器架構。具體來說,Transformer由N = 6個連續的編碼器塊組成,每個編碼器塊由兩個子層組成。一個MHSA層聚集了編碼器嵌入的關係。基於位置的FFN層提取特徵表示。對於解碼器,它包含了編碼器堆後面的六個連續塊。與編碼器相比,每個解碼器塊附加一個多頭交叉注意層,對解碼器嵌入和編碼器的輸出進行聚合,其中Y對應於前者,X對應於後者,如式(1)所示。編碼器和解碼器的所有子層都採用了殘差連線[11]和layer歸一化[92]來增強Transformer的可擴充套件性。為了記錄序列資訊,在編碼器和解碼器堆疊的開始處的每個輸入嵌入都附加了一個位置編碼。最後,利用線性層和softmax操作對下一個詞進行預測。

Transformer是一種自迴歸語言模型,起源於機器翻譯任務。給定一個單詞序列,Transformer將輸入序列向量化為單詞嵌入,並新增位置編碼,然後將生成的向量序列提供給編碼器。在訓練過程中,如圖4所示,Vaswani等人根據自迴歸任務規則設計了一個masking操作,即當前位置只能依賴於之前的位置輸出。基於這種masking,Transformer解碼器可以對輸入的標籤序列進行並行處理。在推理過程中,將經過相同操作處理的前一個預測詞序列送入解碼器,生成下一個預測詞。

 

III. TRANSFORMER FOR CLASSIFICATION

受Transformer在NLP[2] -[5],[8]中的突出發展的啟發,一些研究者嘗試將Transformer引入影象分類。Vision Transformer (ViT)[27]首先在主流分類基準上實現了與傳統CNN相似甚至更高的效能。本節全面回顧了2021年6月之前釋出的40多個Transformer backbones,根據它們的動機和實現,它們被分為6個類別,如圖5所示。基於我們的分類方法,我們首先介紹了ViT,一種用於影象分類的原始視覺轉換器。然後我們討論了Transformer Enhanced CNN方法,這些方法利用Transformer來增強CNN backbong的遠距離依賴。Transformers具有很強的全域性建模能力,但在建模初期忽略了局部資訊。因此,CNN Enhanced Transformer方法利用適當的卷積歸納偏差來增強Transformer,而 Local Attention Enhanced Transformer方法重新設計了patch分割槽和注意塊,以增強Transformer的局域性,並保持無卷積架構。此外,根據經驗,CNN在效能和計算效率方面都受益於分層和深層結構[93]。在此基礎上,提出了Hierarchical Transformer和Deep Transformer 方法。前者用金字塔幹(pyramid stem)取代固定解析度的柱狀結構,後者則能夠防止注意圖過於平滑,且增加了注意圖在深層的多樣性。此外,我們還回顧了目前對於visual Transformer來說可用的自監督方法。最後,我們評估這些Transformers的效能,分析有希望的改進,並且為了能夠進一步研究,回答了一個普遍的問題。

 

A. Original Visual Transformer

由Dosovitskiy等人提出的ViT是第一個用於影象分類[27]的Transformer backbone。由於vanillas Transformer需要一個token序列輸入,所以首先將輸入影象分割成一系列非重疊的patch,然後投影成patch嵌入中。與Transformer的原始操作類似,對每個patch進行一維可學習的位置編碼,保留其空間資訊,然後將最終的合併嵌入輸入編碼器(圖6)。ViT插入了一個經過學習的[class]嵌入,其在Transformer編碼器輸出處的狀態作為執行分類的表示。此外,在輸入任意解析度的影象時,二維插值對預訓練的位置編碼進行補充,以保持影象patch的順序一致。通過使用大型私有資料集(JFT-300M包含3億張影象)進行預訓練,ViT在多個影象識別基準(即ImageNet、CIFAR-10和CIFAR-100)上獲得了與大多數主流CNN方法相似甚至更好的結果。ViT已經證明Transformer在CV任務中的有效性,但在訓練資料不足的情況下不能很好地泛化。

 

B. Transformer Enhanced CNN

如前所述,Transformer有兩個關鍵部分:MHSA和FFN。最近,Cordonnier等人證明了卷積層可以用有足夠的heads的MHSA來替代[26]。Dong等人已經表明,MHSA可能對沒有skip連線和FFN的“token uniformity”有很強的歸納bias[94]。因此,理論上,Transformer的建模能力比CNN更強大。但由於自注意機制的存在,其計算量不可避免地會隨著特徵解析度的增大而冪次增大,對於淺層尤其如此。與以往基於注意的方法[14],[22],[95]類似,一些方法嘗試將Transformer插入CNN的backbone中,或者用Transformer層[43],[44]替換部分卷積塊。

VTs:考慮到卷積平等地對待每個畫素,Visual Transformer(VT)將輸入影象的語義概念解耦到不同的channels,然後通過Transformer編碼器塊將他們關聯起來。VT-block包含了三部分。1)一個tokenizer,通過使用一個scaling注意力層來將輸入解耦為不同語義的視覺token集。2)一個Trandformer編碼器,合併這些視覺tokens的語義資訊。3)一個projector,使用一個tokens-image cross-attention層來實現原始畫素空間特徵的重合並。而且,其通過將ResNets[11]的最後一個卷積層替換為VT-blocks來構建一個Visual-Transformer-ResNets(VT-ResNets)。與標準的ResNet相比,VT-ResNet在ImageNet上獲得了高於原來4.6-7%的更好準確度,並使用了更少的引數和FLOPs

BoTNet:與之前的基於注意力的模組相比,之前的模組只是在結構上用注意力塊取代了最後階段的卷積,Vaswani等人提出了一個概念性的重新定義,將具有自注意機制的連續bottleneck塊視為Bottleneck Transformer(BoTNet)[44]塊,儘管短連線形式有所不同。受到[22]-[24],[95]中相對位置編碼[96]有效性的啟發,BoTNet利用這種位置感知進一步逼近Transformer。基於ResNet-50,在ImageNet基準測試中,BoTNet的效能優於大多數引數設定相似的CNN模型,top1精度為84.7%,引數為75.1M。這種模擬Transformer的方法進一步證明了Transformer在標準卷積模型之上的有效性。

 

C. CNN Enhanced Transformer

歸納偏差可以表示為一組關於資料分佈或解空間的假設,其在卷積中的表現是區域性性和平移不變性。區域性性集中於空間上接近的元素,並將其與遠端隔離開來。翻譯不變性體現了相同匹配規則在輸入的不同位置的重用[97]。由於區域性鄰域內的協方差較大,且在整個影象中趨於平穩,所以這些卷積偏差可以有效地處理影象資料。然而,在資料集充足的情況下,強烈的偏差也會限制CNN的上界。最近的努力試圖利用適當的卷積偏差來增強Transformer並加速其收斂。這些應用可以概括為:軟近似[38]、[45],直接區域性化處理[46]、[47],直接替換位置編碼[48]、[49]和結構組合[37]、[50]。

DeiT: 為了緩解ViT對大資料集的依賴,Touvron等人提出了一種高效資料影象轉換器(DeiT)[38],以提高其在ImageNet-1k上訓練時的適用性。DeiT-B基於ViT-B[27],利用現有的資料增強和正則化策略,在ImageNet上獲得了83.1%的top-1準確率。此外,teacher-student 策略應用於預訓練,這是一個形式上類似於類token的蒸餾token,但由teacher的偽標記監督。根據經驗,CNN是一個比Transformer更好的teacher,一個有趣的發現是,經過提煉的模型比它的teacher表現更好。這些觀察結果可以用[98]來解釋:CNN teacher可以通過知識蒸餾的方式將其歸納偏差以一種soft的方式傳遞給Transformer student。基於這種基於token的蒸餾方法,DeiT-B在無外部資料的情況下獲得了85.2%的top-1準確率。此外,協同訓練是否可以作為一種為Transformer整合歸納偏差的新方法,是值得研究的問題[99]。

ConViT:類似於基於雙邊注意的模型[22],[100],ConViT[45]在Transformer分支上附加一個並行卷積分支,通過Gated Positional Self-Attention (GPSA)柔和地施加捲積歸納偏差。具體來說,GPSA可以分為原始的自注意權值和模擬卷積權值。該演算法首先初始化卷積層的區域性性,然後通過調整學習門控引數顯式地賦予每個注意head新的區域性性。GPSA函式可表示為:

 其中是一個可學習的嵌入,用於模擬卷積,是一個固定相關位置的嵌入。λh是一個可學習的門控引數,用來規劃相對於內容資訊,要給位置資訊多少注意。總之,ConViT在ImageNet上的Top-1精確率比DeiT高0.6-3.2%

CeiT & LocalViT: 除了柔和地學習歸納偏差的方法[38]、[45]外,還有一些直接的方法。CeiT[46]和LocalViT[47]通過直接在FFN中新增depth-wise卷積來提取位置。基於point-wise卷積和position-wise FFN的等價性,LocalViT將這個卷積版本的FFN擴充套件到一個inverted殘差塊[101],以構建一個depth-wise卷積框架。使用相同的操作,CeiT還重新設計了一個patch-to-tokens方案,並在Transformer的頂部附加一個Layer-wise Class token Attention (LCA),以聚合多級表示。這樣,兩者的效能都優於原來的DeiT[38]。

CPVT & ResT: 一些方法嘗試利用卷積的固有位置資訊來泛化解析度不同的輸入。從一個角度來看,ResT[49]假設位置編碼和輸入之間存在相關性。因此,它們之間的求和操作可以看作是對畫素級輸入進行加權的乘法,通過padding為1的3 × 3depth-wise卷積來實現。另一方面,根據[102]的觀察,用零填充的卷積的邊界可以對絕對位置資訊進行編碼,CPVT[48]用一系列卷積代替了位置編碼。這兩種方法都受益於這種卷積位置嵌入,特別是當模型很小時,ResT-Lite和PVT-Tiny分別提高了1.3%和1.4%。

 Early Conv. & CoAtNet: 除了“internal”融合之外,目前更多的方法關注的是根據不同的視覺Transformer結構進行“apparent”組合。對於標準的柱狀結構,Xiao等人將原來的patchify stem(單個不重疊的大核)替換為若干個重疊的stride為2的3 × 3核[50]。這個簡單但強大的stem在ImageNet-1k上提高了1-2%的top-1精度,並促進了ViT的穩定性和下游任務的泛化。對於層次結構,Dai等人[37]研究了混合模型的最佳組合,以有利於效能權衡。通過比較一系列混合模型,他們提出了一個Convolution and Attention Network (CoAtNet),以結合CNN和Transformer的力量。具體來說,他們觀察到depth-wise卷積可以自然地整合到注意塊中,而淺層的垂直重疊卷積比原來的分層方法更有效。CoAtNet實現了跨多個數據集的最新SOTA效能。

 

D. Local Attention Enhanced Transformer

ViT[27]將輸入的影象看作是一系列的patch。這種粗糙的patch嵌入過程忽略了語言與影象之間的差別,可能會損害影象的區域性資訊。卷積作為一種區域性提取器,通過相對固定的濾波器對特徵進行聚合。這種模板匹配過程可以有效地處理大多數小型資料集,但在處理大型資料集時面臨表示的組合爆炸。與卷積相比,區域性注意機制可以根據區域性元素[51]之間的關係動態生成注意權值[95]。為了增強區域性特徵提取能力,保留無卷積結構,[33]、[52]、[53]、[56]等嘗試通過區域性自注意機制適應patch結構。

TNT: ViT[27]只關注全域性的patch聚合,忽略了內部的相互作用。類似於Network In Network (NIN)系列[103],Han等人利用Transformer-iN-Transformer (TNT)[52]模型來聚合patch級和畫素級表示。具體來說,每一層TNT由兩個連續的塊組成,內部塊模擬每個patch內部畫素級的互動作用,外部塊從patch嵌入中提取全域性資訊。它們由一個線性投影層連線,該投影層將畫素對映到相應的patch上。因此,TNT在淺層儲存了比以前更豐富的區域性特徵。

Swin Transformer: Temporal Shift Module (TSM)[104]通過沿時間維度移動部分channels,促進了相鄰幀之間的資訊交換(圖7(a))。與2D TSM類似,Liu等人提出了一個Shifted windows (Swin) Transformer[33],它利用沿空間維度的移位視窗來建模全域性和邊界特徵。其中,採用分層結構進行空間減少和通道擴充套件,通過patch分割槽和patch合併操作來實現。此外,兩個連續的window-wise注意層促進了跨視窗互動(圖7(b)-(c)),這與CNN中的接受域擴充套件概念相似。它將注意層的計算複雜度從O(2n2C)降低到O(4M2nC),其中n和M分別表示patch長度和視窗大小。Swin Transformer在ImageNet-1K上獲得84.2%的top-1精度,和在多個密集預測基準,如COCO和ADE20k得到了最新的SOTA。

 

Twins & ViL:作為一個local-global分離的Transformer, Twins[53]用一個Spatially Separable Self-Attention mechanism (SSSA)取代了Swin Transformer[33]的複雜設計。它在形式上類似於depth-wise的卷積[101]或windows-wise的TNT塊[52]。其中,區域性注意層對每個子視窗內的相鄰patch進行聚合,增強細粒度特徵;全域性下采樣注意層用於捕獲長距離特徵。另一種單獨的形式是ViL[55],它將單個全域性token替換為一系列區域性嵌入(稱為全域性記憶體)。每個區域性嵌入只與其他區域性嵌入及其相應的二維空間鄰居相互作用。受益於這樣簡單的形式,兩者都獲得了能夠和Swin Transformer相比的效能。

VOLO: Vision outlook (VOLO)[42]使用outlook注意力專注於比其他基於注意力的模組更精細的特性。形式上,它由三種操作組成:unfold, linear-wights attention和 refold。儘管VOLO強調它是一個無CNN的模型,但該管道類似於patch-wise動態卷積。基於LV-ViT [41], VOLO將LV-ViT的top-1精度提高了0.4%-1.2%,這是ImageNet-1k基準測試中的一個新的SOTA,且無需外部資料。

 

E. Hierarchical Transformer 

由於ViT[27]在整個網路中繼承了原始的柱狀結構,具有固定的解析度,因此忽略了細粒度特徵,帶來了沉重的計算代價。在分層CNNs之後,最近的工作[34]、[39]、[55]-[57]對Transformer應用了類似的結構。

T2T-ViT:分層Transformer的範例首先由Tokens-to-Token ViT (T2T-ViT) ViT[56]引入。在T2T-ViT中,使用layer-wise T2T 轉換將鄰近的tokens聚合成單個token。這種由重疊unfold操作實現的包圍聚合可以同時實現層次結構和區域性性。但是,由於轉換層存在重疊冗餘,給儲存和計算帶來了很大的負擔。

PVT:分層Transformer的另一個例子是Pyramid Vision Transformer (PVT)[39]。如前所述,重複使用冗餘tokens會導致T2T-ViT效率低下。與重疊unfold轉換不同,PVT依賴於非重疊的patch分割槽來減少序列長度,並依賴於線性patch嵌入來保持通道維數一致。這種金字塔結構可以使Transform適應於需要大量輸入和計算效率高的細粒度特徵的密集預測任務。具體來說,spatial-reduction attention(SRA)層通過在每個注意塊中學習低解析度的鍵值對,顯著降低了計算複雜度(圖9)。PVT在許多基準上展示了分層Transformer的可用性。

PiT & CvT:類似於PVT[39]的收縮策略,PiT (pooling-based Vision Transformer)[57]和Convolutional Vision Transformer (CvT)[34]分別利用pooling和convolution來實現token嵌入。此外,CvT通過用卷積投影代替線性層,改善了PVT的SRA。基於卷積引入的這些區域性上下文資訊,CvT可以在不進行位置編碼的情況下對變數輸入進行泛化。

 

F. Deep Transformer 

從經驗上看,增加模型深度可以使網路學習更復雜的表示形式[11]。最近的工作將這種深層結構應用到Transformer中,通過分析跨patch[60]和跨層[35]、[59]相似性以及殘差塊[40]的貢獻,對其可擴充套件性進行了大量實驗研究。在deep Transformer中,更深層次的特徵往往不太具有代表性(注意力崩潰[59]),patch被對映為不可區分的潛在表示(patch over-smoothing[60])。為了彌補上述侷限性,這些方法也從多個方面給出了相應的解決方案。

CaiT: Touvron等人從結構方面提出了高效的Class-attention in image Transformers (CaiT[40]),其包括兩個階段。1)無類token的多個自注意階段。在每一層中,利用使用小值初始化的可學習的對角矩陣動態更新channel權值,從而為channel調整提供一定的自由度。2)使用frozen patch嵌入的最後幾個類注意階段。稍後類token被插入到建模全域性表示中,類似於帶有編碼器-解碼器結構(圖9(c))的DETR。這種顯式的分離是基於類token對於正向傳遞中的patch嵌入梯度無效的假設。利用蒸餾訓練策略[38],CaiT在不需要外部資料的情況下,在imagenet-1k上獲得了新的SOTA (86.5% top-1精度)

DeepViT & Refiner: Deep Transformer存在注意力崩潰和過度平滑問題,但仍在很大程度上保留了不同頭部之間注意力map的多樣性。基於這一觀察,Zhou等人提出了Deep Vision Transformer(DeepViT),該方法利用線性層來聚合cross-head注意map,並重新生成一個新的cross-head注意map來增加cross-layer的特徵多樣性。而且,Refiner[35]應用一個線性層去擴充套件注意maps

的維度(不直接地增加heads數量),以增強多樣性。然後,一個Distributed Local Attention (DLA) 被用來更好地構建區域性和全域性特徵,其是使用一個被注意map影響的head-wise卷積來實現的。最後,Refiner在ImageNet上獲得了86%的top-1準確度,引數大小為81M。

Diverse Patch: 從訓練策略方面來說,Gong等人提出三個用於深度Transformer的patch-wise的損失函式,能夠顯著提高patches的多樣性且抵消過度平滑問題[60]。與[105]相似,一個patch-wise cosine損失最小化了patches中的成對cosine相似度。一個patch-wise對抗損失將更深的patches與其淺層的相關patches進行歸一化。受Cutmix[106]啟發,一個patch-wise mixing損失將兩個不同的影象混合,使得每個patch只與相同影象的patches相關,忽略不相關的patches。與LV-ViT[41]相比,他們有著相似的損失函式,但動機不同。前者專注於patch的多樣性,後者更注重token標籤的資料增強。

 

G. Transformers with Self-Supervised Learning

 自監督Transformer在NLP[5]上獲得了成功,但是監督預訓練Transformer仍主導著CV領域[33],[38].最近的工作試圖設計多種用於視覺Transformer的生成[61]-[63]和判別[64]-[66]中的自監督學習方案。

 iGPT: 對於生成任務,Chen等人提出了 image Generative Pre-training Transformer (iGPT),用於視覺自監督學習。與ViT的patch嵌入不同,iGPT直接將影象的大小重置為更小的解析度,然後將其拉平變為1D的畫素序列,接著將最終序列輸入到用於自迴歸畫素預測任務的GPT-2[4]中。iGPT能夠直接建模畫素級資訊,並能在低解析度資料集中獲得一箇中等的準確度,但其需要相當大的計算(roughly 2500 V100-days for pretraining)。然而,生成視覺Transformer仍是一個值得進一步研究的有前景的方向。

BEiT: 比起直接生成原始的畫素,Bao等人通過重新構造潛在空間中的masked影象,提出了一個BERT-style的視覺Transformer(BEiT)[63]。與BERT中的字典相似,基於variational autoencoder (dVAE) [107] 的影象tokenizer將影象向量化為離散的視覺tokens。這些tokens作為了預訓練的偽標籤集。然後,一個帶有隨機masked patches的影象被輸入到一個Transformer backbone中。每個output-masked嵌入旨在通過在預訓練過程中最大化後驗概率對數似然函式來恢復其相關聯的視覺token。這種方法中,BEiT避免了學習冗餘的pixel-wise表示,優於最新的自監督方法(DINO[65] with 0.4%) 和 典型監督方法(DeiT-B[38] with 1.4%),在ImageNet-1K中獲得了83.2%的top-1準確度。

MoCo v3: 對於判別任務,Chen等人[64]從基礎開始,調查了幾種基礎組成對自監督ViT訓練的影響(e.g., batch size, learning rate, and normalization)。通過對ViT準確度曲線的密集監測,他們觀察到它“很好”,但是在訓練過程中會遭受一些空間極具下降(term as dip),這對最終的效能有所影響。為了最終這個不穩定的原因,他們還監測了梯度幅度,發現在第一層(patch projection)的突然的梯度變化會延遲一組迭代,然後導致最終的準確度下降。因此,他們提出MoCo v3,一系列用於ViT的基礎改善(e.g., freezing the patch projection layer, BatchNorm, and small patch size),使其優於ResNets,尤其是在大模型中

DINO: Caron[38]等人說明了蒸餾對於監督Transformer的有效性。最近,他們進一步將teacher-student方法使用到自監督學習中,並提出DINO[65]。DINO的核心概念可以總結為三點。一個有著額外中心和銳化層的momentum encoder被作為一個teacher模型,輸出帶有batch的平均表示的居中偽標籤,其遺傳自他們早期的SwAV[109]。一個沒有預測head的online encoder,其作為一個student模型去擬合teacher的輸出。一個標準的交叉熵損失來連線自訓練和知識蒸餾。線上性評估中,DINO在ImageNet中取得了80.1%的準確度。更有意思的是,自監督ViT能夠學習分割的繁榮特性,這一般是監督Transformer或CNN做不到的。

 

H. Discussion

1) 實驗評估和對比分析:根據我們的分類法,經過審查的監督模型可分為六類。表一總結了主流分類基準上引人注目的Transformer,併為每個模型指定了專用顏色。為了客觀和直觀地評估它們,以下三幅圖展示了它們在ImageNet-1k上不同配置(例如模型大小、FLOPs和訓練方案)下的比較。圖10(a)總結了2242輸入解析度下每個模型的效能。由於Transformer中的FLLOPs隨輸入大小呈冪次增長,因此圖10(b)將FLOPs做為水平軸,並關注其在更高解析度下的效能。圖10(c)著重於帶有外部資料集的預訓練模型。根據這些數字,我們簡要分析了有利於模型效能、效率和可擴充套件性的幾項改進,如下所示:

 

 (表過大,只截取了一部分)

 

 

  •一般來說,大多數結構改進方法針對特定的模型尺寸、問題或特定的輸入解析度進行了優化,而其他基本訓練策略,如DeiT[38]和LV ViT[41],則更適用於各種模型、任務和輸入。
  •對於Transformer來說,位置是必不可少的,這反映在VOLO[42]和Swin[33]分別在分類和密集預測任務中占主導地位。
  •卷積patchify stem(ViTc[50])和早期卷積階段(CoAtNet[37])顯著提高了Transformer的精度,尤其是在大型模型上,因為這樣的組合可以相互幫助捕獲淺層的細粒度區域性特徵。
  •深層Transformer潛力巨大,如Refined-ViT[35]和CaiT[40]。隨著模型尺寸隨channel尺寸的冪次增長,深度Transformer中模型尺寸和channel尺寸之間的權衡值得進一步研究。
  •CeiT[46]和CvT[34]在訓練 中小型模型(0−40M)方面顯示出顯著優勢,這表明這種用於輕型模型的混合注意塊值得進一步探索。

 

2) 視覺Transformer的發展趨勢概述:Transformer backbones在過去的一年裡出現了。當我們的系統與這些模型的時間軸相匹配時,我們可以清楚地追蹤影象分類Transformer的發展趨勢(圖1)。作為一種自注意機制,視覺Transformer主要根據NLP中的原始結構(ViT[27]和iGPT[61])或CV中基於注意的模型(VTs[43]和BoTNet[44])重新設計。

然後,許多方法開始將CNN的層次結構或深層結構擴充套件到視覺Transformer。T2T ViT[56]、PVT[39]、CvT[34]和PiT[57]的共同動機是將層次結構轉移到Transformer中,但它們執行下采樣的方式不同。CaiT[40]、Diversity Patch[60]、DeepViT[59]和Refiner[35]專注於deep Transformer中的問題。此外,一些方法轉向內部元件,以進一步增強先前Transformer中的影象處理能力,即位置編碼[48]、[112]、[113]、MHSA[26]和MLP[94]。

下一波Transformer趨勢是區域性性正規化。他們大多通過引入區域性注意機制[33]、[42]、[52]、[53]或卷積[45]–[47]將區域性性引入Transformer。如今,最新的監督Transformer正在探索結構組合[37],[50]和scaling定律[36],[114]。除了有監督的Transformer之外,自監督學習在視覺Transformer[61]–[66]中佔了很大一部分。然而,目前尚不清楚哪些任務和結構對CV中的自監督Transformer更有利。

3) 關於替代方案的簡要討論:在視覺Transformer的開發過程中,最常見的問題是Transformer能否取代卷積。通過回顧過去一年的改善歷史,這裡沒有替換方法效果更差的跡象。視覺Transformer已經從一個純粹的結構迴歸到一種混合形式,全域性資訊逐漸迴歸到與區域性資訊混合的階段。雖然Transformer可以等價於卷積,甚至比卷積具有更好的建模能力,但簡單有效的卷積運算已經足以處理淺層的區域性性和低層語義特徵。未來,二者結合的想法將推動影象分類的更多突破。

 

IV. TRANSFORMER FOR DETECTION

省略