極市導讀 又一篇Transformer來了!本文在ViT方面進行了一次突破性探索,提出了首次全面超越ResNet,甚至輕量化版本優于MobileNet系列的T2T-ViT。 >>加入極市CV技術交流群,走在計算機視覺的最前沿 本文是依圖科技在ViT方面的一次突破性的探索。與之前ViT、Detr、Deit等不同之處在于:本文針對ViT的特征多樣性、結構化設計等進行了更深入的思考,提出了一種新穎的Tokens-to-Token機制,用于同時建模圖像的局部結構信息與全局相關性,同時還借鑒了CNN架構設計思想引導ViT的骨干設計。最終,僅僅依賴于ImageNet數據,而無需JFT-300M預訓練,所提方案即可取得全面超越ResNet的性能,且參數量與計算量顯著降低;與此同時,在輕量化方面,所提方法只需簡單減少深度與隱含層維度即可取得優于精心設計的MobileNet系列方案的性能。強烈推薦各位同學研究一下該文。 前言語言模型中主流的Transformer已經開始對CV任務開始了降維打擊,比如目標檢測中NETR,low-level任務中的IPT,圖像分類任務中的ViT與DeiT等等。ViT方案首先將輸入圖像拆分為定長的tokens序列,然后采用多個Transformer層對其進行全局相關性建模并用于圖像分類。但ViT背靠比ImageNet更大的訓練取得了優于純CNN的性能,但如果僅采用ImageNet的話,其性能反而不如CNN方案。 作者通過分析發現:(1) 輸入圖像的簡單token化難以很好的建模近鄰像素間的重要局部結構(比如邊緣、線條等),這就導致了少量樣本時的低效性;(2) 在固定計算負載與有限訓練樣本約束下,ViT中的冗余注意力骨干設計限制了特征的豐富性。可參考下圖: ResNet50可以逐步捕獲到期望的局部結構(比如邊緣、線條、紋理等),然而ViT的結構建模信息較差,反而全局相關性被更好的獲取。與此同時,可以看到:ViT的特征中存在零值,這導致其不如ResNet高效,限制了其特征豐富性。 為克服上述局限性,作者提出了一種新的 相比標準ViT,所提T2T-ViT的參數量與MACs可以減低200%,并取得2.5%的性能提升(注僅用ImageNet從頭開始訓練);所提T2T-ViT同樣取得了優于ResNet的性能,比如,在ImageNet數據集上,T2T-ViT-ResNet50取得了80.7%的Top1精度。可參考下圖。 總而言之,本文的主要貢獻包含以下幾個方面:
T2TViT方法簡介前面對ViT存在的問題以及本文的主要改進思路進行了簡單的介紹,接下來我們將著重針對本文所提的T2T、 Tokens-to-TokenTokens-to-Token(T2T)模塊旨在克服ViT中簡單Token化機制的局限性,它采用漸進式方式將圖像結構化為token并建模局部結構信息;而Tokens的長度可以通過漸進式迭代降低,每個T2T過程包含兩個步驟:Restructurization與SoftSplit,見下圖。 Re-structurization 如上圖所示,給定Tokens序列T,將通過自注意力模塊對齊進行變換處理,可以描述為: 注:MSA表示多頭自注意力模塊,MLP表示多層感知器。經過上述變換后,Tokens將在空間維度上reshape為圖像形式,描述如下: 注:Reshape表示將轉換為。 Soft Split 正如上圖所示,在得到重結構化圖像I后,作者對其進行軟拆分操作以建模局部結構信息,降低Tokens長度。為避免圖像到tokens過程中的信息損失,將圖像拆分為重疊塊,也就是說:每個塊將與近鄰塊之間構建相關性。每個拆分塊內的Token將通過Concat方式變換為一個Token(即Tokens-to-Token),因此可以更好的建模局部信息。作者假設每個塊大小為,重疊尺寸為s,padding為p,對于重建圖像,其對應的輸出Token可以表示為如下尺寸: 注:每個拆分塊尺寸為。最后將所有塊在空域維度上flatten為Token。這里所得到的輸出Token將被送入到下一個T2T處理過程。 T2T module 通過交替執行上述Re-structurization與Soft Split操作,T2T模塊可以逐漸的減少Token的長度、變換圖像的空間結構。T2T模塊可以表示為如下形式: 對于輸入圖像,作者采用SoftSplit操作將其拆分為Token:。在完成最后的迭代后,輸出Token具有固定IG長度,因此T2T-ViT可以在上建模全局相關性。 另外,由于T2T模塊中的Token長度要比常規形式的更大,故而MAC與內存占用會非常大。為克服該局限性,在T2T模塊中,作者設置通道維度為32(或者64)以降低MACs。 T2T-ViT Backbone由于ViT骨干中的不少通道是無效的,故而作者計劃設計一種高效骨干以降低冗余提升特征豐富性。T2T-ViT將CNN架構設計思想引入到ViT骨干設計以提升骨干的高效性、增強所學習特征的豐富性。由于每個Transformer具有類似ResNet的跳過連接,一個最直接的想法是采用類似DenseNet的稠密連接提升特征豐富性;或者采用Wide-ResNet、ResNeXt結構改變通道維度。本文從以下五個角度進行了系統性的比較:
結合上述五種結構設計,作者通過實驗發現:(1) Deep-Narrow結構可以在通道層面通過減少通道維度減少冗余,可以通過提升深度提升特征豐富性,可以減少模型大小與MACs并提升性能;(2) 通道注意力可以提升ViT的性能,但不如Deep-Narrow結構高效。 基于上述結構上的探索與發現,作者為T2T-ViT設計了Deep-Narrow形式的骨干結構,也就是說:更少的通道數、更深的層數。對于定長Token,將類Token預期Concat融合并添加正弦位置嵌入( T2T-ViT Architecture上圖給出了T2T-ViT的網絡結構示意圖,它包含T2T模塊與T2T骨干兩部分。上圖給出了n=2的結構示意圖(即n+1=3個soft split,n個Re-structurization)。每個Soft Split的塊大小分別為[7,3,3],重疊為[3,1,1]。 為更好的與常見手動設計CNN進行對比,作者設計了不同復雜度的T2T-ViT模型,見上表。比如對標ResNet50的T2T-ViT-14,對標ResNet101的T2T-ViT-19,對標ResNet152的T2T-ViT-24,對標MobileNetV1、MoblieNetV2的T2T-ViT-7,T2T-ViT-10,T2T-ViT-12。 實驗為更好說明所提方案的有效性,將其與ViT進行了對比,結果見下表。從表中數據可以看到:相比ViT,所提方案具有更少的參數量、MAC,但取得了更高的性能。 下表給出了所提方案與ResNet的對比。從中可以看到:在相同模型大小與MACs約束下,所提方案能夠以1%-2.5%的性能優勢超過ResNet。 與此同時,本文還給出了所提方案與輕量化網絡MobileNet系列的對比,見下表。可以看到:在輕量化網絡層面,所提方案可以取得比MobileNet系列更好的性能。注:由于MobileNet系列采用了高效卷積(Depthwise)操作導致其計算量要比T2T-ViT稍低,而T2T-ViT的設計則更為簡單,只需要調整深度、隱含層維度即可得到不同計算量的模型。 最后還給出了不同CNN結構設計思想在T2T-ViT的性能對比,見下表。 從上表可以看到:
最后的最后,本文還對所提T2T模塊與Deep-Narrow結構設計進行了消融分析,結果見上表。從中可以看到:(1) T2T模塊比卷積更優,這是因為它可以同時建模全局相關性與結構信息;(2) 相比Shallow-Wide結構,Deep-Narrow結構可以帶來2.9%的性能提升。 全文到此結束,更多消融實驗分析建議好看原文,筆者強烈建議對Transformer感興趣的同學研究一下該文,文中不少思想值得各位思考與借鑒。 代碼開源的才是好工作,在paper放出來之前先開源的更是好工作。就在昨天,依圖科技就將T2T-ViT相關code與預訓練模型在github上進行了開源。 |
|