導讀 CNN與Transformer相互借鑒是必然趨勢,但如何借鑒并揚長避短仍需進一步深入挖掘。本文的UniFormer提供了一個非常不錯的思路,它將卷積與自注意力以transformer方式進行了統一構建UniFormer模塊,并由此構建了UniFormer。最后,作者在不同視覺任務(包含圖像分類、視頻分類、目標檢測、實例分割、語義分割、姿態估計)上驗證了UniFormer的超優異特性,真可謂“一力降十會”。 論文鏈接:https:///abs/2201.09450 代碼鏈接:https://github.com/Sense-X/UniFormer Abstract圖像/視頻數據中的局部冗余與復雜全局依賴關系使得從中學習具有判別能力的特征表達極具挑戰性。CNN與ViTs(Vision Transformers)是兩種主流的架構,CNN通過卷積有效的降低了局部冗余但有限的感受野使其無法捕獲全局依賴關系,而ViT憑借自注意力可以捕獲長距離依賴,但盲相似性比對會導致過高的冗余。 為解決上述問題,我們提出一種新的UniFormer(Unified transFormer),它能夠將卷積與自注意力的優點通過transformer進行無縫集成。不同于經典的Transformer模塊,UniFormer模塊的相關性聚合在淺層與深層分別武裝了局部全局token,解決了高效表達學習的冗余與依賴問題。 基于UniFormer模塊,我們構建了一種新強力骨干并用于不同的視覺任務,包含圖像與視頻,分類與稠密預測。無需額外你訓練數據,UniFormer在ImageNet數據及上取得了86.3%的精度;僅需ImageNet-1K預訓練,它在諸多下游任務上取得了SOTA性能,比如Kinetics-400/600數據集上的82.9%/84.8%、Something-Something V1/V2數據集上的60.9%/71.2%、COCO檢測任務上的53.8boxAP與46.4MaskAP、ADE20K分割任務上的50.8mIoU、COCO姿態估計上的77.4AP。 ![]() Method![]() 上圖給出了本文所提UniFormer架構示意圖,為簡單起見,我們以T幀的視頻輸入作為示例。注:圖中標紅的維度僅作用于視頻輸入,其他維度對于圖像和視頻輸入相同。 具體來說,UniFormer模塊包含三個關鍵模塊:
對于輸入,我們首先引入DPE將位置信息動態集成進所有tokens,它適用于任意輸入分辨率,可充分利用token順序進行更好視覺識別,可描述如下: 然后,我們采用MHRA通過探索上下文token與相關性學習對每個token進行增強,描述如下: 最后,類似ViTs,我們添加FFN進一步增強token,可描述如下: Multi-head Relation Attention正如前面所提到:CNN與ViTs分別聚焦于解決局部冗余與全局依賴,導致了次優性能、不必要的計算冗余。為解決上述問題,我們引入了一種廣義相關性聚合(Relation Aggregator, RA),它將卷積與自注意力統一為token相關學習。通過在淺層與深層設計局部與全局token affinity,它能夠取得更高效&有效的表達學習能力。具體來說,MHRA以多頭方式探索token相關性: 對于輸入,我們首先將其reshape為token序列。表示RA的第n個頭,表示可學習參數矩陣用于N個頭聚合。每個RA包含token上下文編碼與token親和學習。我們通過線性變換將原始token編碼為上下文token,然后RA可以通過token相關性矩陣An對token進行上下文信息聚合。 Local MHRA![]() 如上圖所示,盡管已有ViTs在所有token之間比較相似性,但他們最終學習了局部表達。這種自注意力冗余設計帶來巨大的計算消耗。除了該發現外,我們建議在近鄰之間學習token相關性,這與卷積濾波器的設計相似。因此,我們在淺層設計了局部相關性參數矩陣。具體來說,給定輸入token ,局部RA在小范圍內進行token間相關性計算: 由于淺層的視覺內容近鄰變化很小,所以沒有必要讓上述相關性矩陣存在數據依賴性。因此,我們采用可學習參數矩陣描述上述局部token相關性,它僅依賴于相對位置信息。 Global MHRA在深層,長距離相關性探索非常重要,它具有與自注意力相似的思想。因此,我們從全局視角設計了token相關性矩陣: Dynamic Position Embedding位置信息對于描述視覺表達非常重要。已有ViTs通過絕對/相對位置嵌入方式進行編碼,但均存在一定的不靈活性。為改善靈活性,我們采用了如下動態位置嵌入: 其中DWConv表示zero-padding深度卷積。該設計主要基于以下三點考量:
Framework![]() 接下來,我們將針對不同下游任務進行架構設計,包含圖像分類、視頻分類、目標檢測、語義分割、人體姿態估計等。相關架構示意圖可參見上圖。 Image Classification前面的Figure3給出了用于圖像/視頻分類的架構示意圖,它包含四個階段。具體來說,我們在前兩個階段采用局部UniFormer模塊以降低計算冗余;在后兩個階段采用全局UniFormer模塊以學習長距離token依賴。 對于局部UniFormer模塊,MHRA配置為PWConv-DWConv-PWConv(其中DWConv的尺寸為);對于全局UniFormer模塊,MHRA配置為多頭自注意力。對于兩種UniFormer,DPE均為DWConv,尺寸為;FFN的擴展比例為4。 此外,我們對卷積使用BN,對自注意力使用LN。對于特征下采樣,我們在第一階段使用尺寸和stride均為的卷積;對于其他卷積則采用尺寸和stride為的卷積。除此之外,下采樣卷積后接LN。最后,采用GAP與全連接層進行分類。為滿足不同計算需求,我們設計了三種復雜度的模型,見下表。 ![]() Video Classification基于前述圖像分類的2D骨干,我們可以輕易的將其擴展為用于視頻分類的3D骨干。不失一般性,我們調整Small與Base進行空時建模。具體來說,模型架構仍保持四個階段不變。不同之處在于:所有2D卷積替換為3D卷積。DPE與局部MHRA中的DWConv濾波器尺寸為。特別的,我們在第一階段之前需要進行空時維度下采樣,此時的卷積濾波器與stride分別為。對于其他階段,我們僅僅進行空間維度下采樣,因此其他階段的下采樣卷積濾波器維度為。 在全局UniFormer模塊中,我們從3D視角采用空時注意力學習token相關性。而已有Video Transformer則進行空域與時序拆分以降低計算量、緩解過擬合,這無疑會弱化空時相關性。此外,由于所提局部UniFormer模塊可以極大節省計算量,故所提所提UniFormer可以更高效且有效的進行視頻表達學習。 Dense Prediction稠密預測任務有助于驗證所提識別骨干架構的泛化性。因此,我們將UniFormer骨干使用多個主流稠密任務,包含目標檢測、實例分割、語義分割以及人體姿態估計。 ![]() 由于大多稠密預測的輸入分辨率比較高(比如COCO檢測上的),直接使用該骨干會導致具體計算量。為此,我們對不同下游任務調整全局UniFormer模塊。上圖給出了分辨率與計算量之間的關系,很明顯:階段3的RA占據了大量的計算量,甚至高達50%,而階段4的結算量僅為階段3的1/28。因此,我們主要聚焦于修改階段3的RA。 受啟發于Swin Transformer,我們在預定于窗口(而非全局圖像范圍)內執行全局MHRA。這種處理方式可以大幅降低計算量,但它不可避免會降低模型性能。為彌補該差距,我們在階段即同時集成窗口形式與全局形式UniFormer,每個混合組包含三個窗口模塊與1個全局模塊。 基于上述設計,我們將引入用于不同稠密任務的定制骨干:
Experiments關于訓練細節方面信息,我們就直接略過,直接上結果咯。 Image Classification![]() 上表給出了ImageNet數據上的性能對比,從中可以看到:
Video Classification![]() 上表給出了Kinetics-400&600數據集上的性能,可以看到:
![]() 上表為Something-Something數據集上的性能對比,可以看到:
Object Detection & Instance Segmentation![]() 上表給出了COCO檢測與分割任務上的性能對比,基礎框架為Mask R-CNN,可以看到:
Semantic Segmentation![]() 上表給出了ADE20K數據集上的性能對比,可以看到:
Pose Estimation![]() 上表給出了COCO姿態估計任務上的性能對比,可以看到:
![]() 沒有圖示的paper是沒有靈魂的,最后就補充個圖示效果以供參考。 UniFormer論文和代碼下載 |
|