深度可分離ViT | SepViT | 深度可分離卷積造就深度可分離Transformer


Vision Transformers在一系列的視覺任務(wù)中取得了巨大的成功。然而,它們通常都需要大量的計算來實現(xiàn)高性能,這在部署在資源有限的設(shè)備上這是一個負擔。
為了解決這些問題,作者受深度可分離卷積啟發(fā)設(shè)計了深度可分離Vision Transformers,縮寫為SepViT。SepViT通過一個深度可分離Self-Attention促進Window內(nèi)部和Window之間的信息交互。并群欣設(shè)計了新的Window Token Embedding和分組Self-Attention方法,分別對計算成本可忽略的Window之間的注意力關(guān)系進行建模,并捕獲多個Window的長期視覺依賴關(guān)系。
在各種基準測試任務(wù)上進行的大量實驗表明,SepViT可以在準確性和延遲之間的權(quán)衡方面達到最先進的結(jié)果。其中,SepViT在ImageNet-1K分類上的準確率達到了84.0%,而延遲率降低了40%。在下游視覺任務(wù)中,SepViT在ADE20K語義分割任務(wù)達到50.4%的mIoU,基于RetinaNet的COCO目標檢測任務(wù)達到47.5AP,基于Mask R-CNCN的48.7 box AP檢測和分割任務(wù)實現(xiàn)43.9 mask AP。
1簡介
近年來,許多計算機視覺(CV)研究人員致力于設(shè)計面向CV的Vision Transformers,以超過卷積神經(jīng)網(wǎng)絡(luò)(CNNs)的性能。Vision Transformers具有較高的遠距離依賴建模能力,在圖像分類、語義分割、目標檢測等多種視覺任務(wù)中取得了顯著的效果。然而,強大的性能通常是以計算復雜度為代價的。
最初,ViT首先將Transformer引入圖像識別任務(wù)中。它將整個圖像分割為幾個Patches,并將每個Patch作為一個Token提供給Transformer。然而,由于計算效率低下的Self-Attention,基于Patch的Transformer很難部署。
為了解決這個問題,Swin提出了基于Window的Self-Attention,限制了非重疊子Window中Self-Attention的計算。顯然,基于Window的Self-Attention在很大程度上降低了復雜性,但構(gòu)建Window間連接的Shift操作符給ONNX或TensorRT的部署帶來了困難。
Twins利用基于Window的Self-Attention和PVT的Spatial Reduction Attention,提出了空間可分離Self-Attention。盡管Twins是部署友好型的,并且具有出色的性能,但它的計算復雜度幾乎沒有降低。
CSWin通過Cross-Shaped Window Self-Attention得到了最先進的性能,但吞吐量較低。
盡管在這些著名的Transformer中取得了不同程度的進展,但它最近的大部分成功都伴隨著巨大的資源需求。
為了克服上述問題本文提出了一種高效的Transformer Backbone,稱為可分離Vision Transformers (SepViT),它可以按順序捕獲局部和全局依賴。SepViT的一個關(guān)鍵設(shè)計元素是深度可分離的Self-Attention模塊,如圖2所示。
受MobileNet中深度可分卷積的啟發(fā)重新設(shè)計了Self-Attention模塊,并提出了深度可分離Self-Attention,它由Depthwise Self-Attention和Pointwise Self-Attention組成,分別對應于MobileNet中的Depthwise和PointWise卷積。Depthwise Self-Attention用于捕獲每個Window內(nèi)的局部特征,Pointwise Self-Attention用于構(gòu)建Window間的連接,提高表達能力。
此外,為了得到局部Window的全局表示開發(fā)了一種新的Window Token Embedding方法,該方法可以在極小的計算代價下模擬Window間的注意力關(guān)系。此外,還將AlexNet的分組卷積思想擴展到深度可分離Self-Attention,并提出了分組的Self-Attention以進一步提高性能。
為了驗證SepViT的有效性,作者對一些典型的視覺任務(wù)進行了一系列實驗,包括ImageNet-1K分類、ADE20K語義分割、目標檢測和實例分割。
實驗結(jié)果表明,與其他Vision Transformer相比,SepViT能夠在性能和延遲之間實現(xiàn)更好的權(quán)衡。如圖1所示,與具有相同精度的方法相比,在相同延遲約束下,SepViT獲得了更好的精度,且推理時間更少。此外,SepViT可以方便地應用和部署,因為它只包含一些通用運算符(例如轉(zhuǎn)置和矩陣乘法等)。綜上所述,本文工作的貢獻可以總結(jié)如下:
- 提出了具有深度可分離Self-Attention的可分離Vision Transformer(SepViT)。它可以在單個Transformer塊中實現(xiàn)窗口內(nèi)的局部信息通信和Window之間的全局信息交換。
- 提出了一種基于Window Token Embedding的方法來學習每個Window的全局特征表示,這有助于SepViT在計算成本可以忽略不計的情況下建模Window之間的注意關(guān)系。
- 將深度可分離Self-Attention擴展到SepViT中的分組Self-Attention。它可以跨多個Window捕獲更多的上下文,并實現(xiàn)更好的性能。
2相關(guān)工作
2.1 ViTs
在計算機視覺領(lǐng)域,CNN由于其空間歸納偏差的優(yōu)勢而占主導地位。之后,為了模擬像素的全局依賴性,ViT首次將Transformer引入到計算機視覺中,并在圖像分類任務(wù)上取得了良好的性能。很快,一系列基于ViT技術(shù)制作了Vision Transformer。
DeiT介紹了知識蒸餾方案,并提出了數(shù)據(jù)高效的圖像Transformer。
T2T-ViT通過遞歸地將相鄰的Token聚合為一個Token,逐步將圖像結(jié)構(gòu)化為Token。
TNT提出了內(nèi)部和外部的Transformer來分別建模詞嵌入和句子嵌入之間的關(guān)系。
CPVT產(chǎn)生條件位置編碼,該編碼基于輸入Token的局部鄰域,并能適應任意的輸入大小。
最近,PVT和Swin同步提出了對密集預測任務(wù)(如目標檢測、語義和實例分割)友好的層次結(jié)構(gòu)。同時,Swin作為先鋒提出了基于Window的Self-Attention來計算Local Window內(nèi)的注意。
隨后,Twins和CSWin相繼提出了基于層次結(jié)構(gòu)的空間可分Self-Attention和十字形窗口Self-Attention。
另一方面,一些研究者將CNN的空間感應偏差引入到Transformer中。CoaT、CVT和LeViT在引入了Self-Attention前后引入了卷積,得到了滿意的結(jié)果。
關(guān)于輕量級Transformer的設(shè)計,MobileFormer和MobileViT將Transformer塊與MobileNet-V2中的Inverted Bottleneck Blocks串聯(lián)和并行結(jié)合。另一個研究方向是利用神經(jīng)結(jié)構(gòu)搜索技術(shù)自動搜索Transformer的結(jié)構(gòu)細節(jié)。
2.2 輕量化模型
針對移動端視覺任務(wù),提出了許多輕量級和移動端友好的卷積方案。其中,分組卷積是由AlexNet首次提出的分組卷積,它對特征映射進行分組并進行分布式訓練。
那么,移動端友好卷積的代表性工作必須是具有深度可分離卷積的MobileNet。深度可分離卷積包括用于空間信息通信的Depthwise卷積和用于跨通道信息交換的Pointwise卷積。隨著時間的推移,許多基于上述工作的變體被開發(fā)出來。在本文的工作中,作者將深度可分離卷積的思想應用到Transformer中,旨在在不犧牲性能的情況下降低Transformer的計算復雜度。
3SepViT
在本節(jié)中,首先說明SepViT的設(shè)計概述,然后討論SepViT Block中的一些關(guān)鍵模塊。最后,提供了具有不同flop的體系結(jié)構(gòu)。
3.1 概覽

如圖2所示,SepViT遵循了廣泛使用的層次體系結(jié)構(gòu)和基于Window的Self-Attention。
此外,SepViT還采用了條件位置編碼(CPE)。對于每個階段,都有一個重疊的Patch合并層用于特征圖降采樣,然后是一系列的SepViT Block??臻g分辨率將以stride=4步或stride=2步逐步進行下采樣,最終達到32倍下采樣,通道尺寸也逐步增加一倍。
值得注意的是,局部上下文和全局信息都可以在單個SepViT Block中捕獲,而其他工作應該使用2個連續(xù)的Block來完成這種局部-全局建模。
在SepViT塊中,每個Window內(nèi)的局部信息通信是通過DepthWise Self-Attention(DWA)實現(xiàn)的,Window間的全局信息交換是通過PointWise Self-Attention(PWA)進行。
3.2 深度可分離自注意力機制
1、Depthwise Self-Attention(DWA)
與一些開創(chuàng)性的作品類似,SepViT是建立在基于Window的Self-Attention方案之上的。首先,對輸入特征圖執(zhí)行一個Window劃分。每個Window都可以看作是特征映射的一個輸入通道,而不同的Window包含不同的信息。與之前的工作不同,本文為每個Window創(chuàng)建了一個Window Token,作為一個全局表示,用于在下面的PointWise Self-Attention模塊中建模注意力關(guān)系。
然后,對每個Window內(nèi)的所有像素Token及其對應的Window Token執(zhí)行DepthWise Self-Attention(DWA)。這個Window操作非常類似于MobileNets中的深度卷積層,旨在融合每個通道內(nèi)的空間信息。
DWA的實現(xiàn)可以總結(jié)如下:

其中z是特征Token,由像素和Window Token組成。、和表示3個線性層,分別用于query、key和value計算的常規(guī)Self-Attention。
注意是指在local Window上工作的標準Self-Attention操作符。
2、Window Token Embedding
建模Window之間的注意力關(guān)系的一個直接解決方案是使用所有像素Token。然而,這也將帶來巨大的計算成本,使整個模型非常復雜。
為了更好地建立Window之間的注意力關(guān)系,提出了一種Window Token Embedding方案,該方案利用單個Token來封裝每個子Window的核心信息。這個Window Token可以初始化為固定的零向量,也可以初始化為零的可學習向量。
在通過DWA時,每個Window中的Window Token和像素Token之間存在信息交互。因此,Window Token可以學習此Window的全局表示。由于有效的Window Token,可以用可以忽略的計算代價來建模Window之間的注意關(guān)系。
3、Pointwise Self-Attention(PWA)
MobileNets中著名的Pointwise Convolution被用來融合來自不同通道的信息。在本文的工作中模仿Pointwise Convolution來設(shè)計Pointwise Self-Attention(PWA)模塊來建立Window之間的連接。
PWA還主要用于跨Window融合信息,并獲得輸入特征圖的最終表示。更具體地說,從DWA的輸出中提取特征映射和Window Token。然后,利用Window Token對Window間的注意力關(guān)系進行建模,并在層歸一化(LN)層和Gelu激活函數(shù)后生成注意力圖。同時,直接將特征映射視為PWA的value分支,而不進行任何其他額外的操作。
利用注意力圖和特征圖的形式,在Window之間進行注意力計算,進行全局信息交換。在形式上,PWA的實現(xiàn)可以描述如下:

其中,wt表示W(wǎng)indow Token。
在這里,注意是一個標準的Self-Attention操作符,但可以在所有的Window z上工作。
4、Complexity Analysis
給定一個大小為H×W×C的輸入特征,在ViT的全局Transformer Block中,Multi-Head Self-Attention(MSA)的計算復雜度為。
Window Size為M×M基于Window的Transformer(通常M是H和WM的共同因素,所以Window的數(shù)量為)的復雜性可以在Swin中減少到。
對于SepViT中的深度可分離Self-Attention,其復雜性包括DWA和PWA兩部分。
DWA
在基于Window的Self-Attention的基礎(chǔ)上,DWA具有類似的計算成本。此外,Window Token的引入將會導致額外的成本,但與DWA的總成本相比,這一點可以忽略不計。DWA的復雜度計算方法如下:

其中是線性層中編碼Window Token的額外成本。2N(M2+1)2C表示N個Token的Self-Attention所涉及的矩陣乘法,其中M2+1表示W(wǎng)indow中的M2像素Token及其對應的Window Token。由于子Token數(shù)量N通常是一個很小的值,Window Token造成的額外開銷可以忽略。
PWA
由于Window Token總結(jié)了本地窗口的全局信息,因此所提出的PWA有助于在窗口級而不是像素級上有效地執(zhí)行窗口之間的信息交換。具體地說,PWA的復雜性如下:

其中,表示用N個Window Token計算query和key的小成本,而value分支為零成本。表示在一個Window上計算生成具有N個Window Token的注意力映射,這在很大程度上節(jié)省了PWA的計算成本。最后,NHWC表示注意映射和特征映射之間的矩陣乘法。
3.3 Grouped Self-Attention
介于組卷積在視覺識別中的優(yōu)異表現(xiàn),于是作者利用組卷積對深度可分離Self-Attention進行了擴展,并提出了分組Self-Attention。

如圖3所示,將相鄰的子Window拼接,形成更大的Window,類似于將Window分成組,在一組Window內(nèi)進行深度的Self-Attention通信。通過這種方式,Grouped Self-Attention可以捕獲多個Window的長期視覺依賴關(guān)系。
在計算成本和性能增益方面,Grouped Self-Attention比深度可分離Self-Attention具有一定的額外成本,但也具有更好的性能。最終,我們將具有Grouped Self-Attention的塊應用于SepViT,并在網(wǎng)絡(luò)的后期與深度可分Self-Attention塊交替運行。
3.4 SepViT Block
綜上所述,SepViT塊可以表述如下:

其中,¨zl、?zl和zl分別表示DWA、PWA和SepViT塊l的輸出。˙zl和˙wt是特征映射和學習到的窗口令牌。Concat表示連接操作,而Slice表示切片操作。
復雜度分析
我們比較了我們提出的SepViT塊與其他兩個SOTA塊(Swin,Twins)的復雜性。正如之前所述,Window內(nèi)和窗口之間的信息交互是在一個SepViT塊中完成的,而Swin和Twins需要兩個連續(xù)的塊。
如圖4所示,可以觀察到,在網(wǎng)絡(luò)的每個階段,SepViT塊只花費了其競爭對手的Mac的一半左右。原因在于2個方面:
- SepViT塊更輕;
- SepViT塊刪除了許多冗余層,
例如,在一個SepViT塊中只有一個MLP層和2個LN層,而在2個連續(xù)的雙塊或雙塊中有雙MLP和LN層。

3.5 Architecture Configurations
為了與其他vision Transformers進行公平的比較,作者提出了SepVit-t(Tiny)、SepVit-s(Small)和SepVit-b(Base)變種。

此外,還設(shè)計了SepViT-Lite變體與一個非常輕的模型尺寸。SepViT變體的具體配置如表1所示,由于SepViT的效率更高,因此在某些階段,SepViT的Embedding塊深度比競爭對手要小。
DSSA和GSA分別表示具有Depthwise Separable Self-Attention和Grouped Self-Attention Block。此外,每個MLP層的擴展比設(shè)置為4,在所有SepViT變體中,DSSA和GSA的Window Sizes分別為7×7和14×14。
4實驗
4.1 消融實驗
1、Efficient Components

如上所述,SepViT采用了條件位置編碼(CPE)和重疊貼片嵌入(OPE)。因此,以Swin-T+CPVT為baseline,并產(chǎn)生帶有CPE但不帶OPE的SepViT-T,以消除其他因素的影響。
如表6所示,每個組件依次添加以驗證它們的作用,SepViT-T簡單地配備了DSSA比Swin+CPVT強0.5%,它比755張圖像/s的吞吐量快得多。同時,帶有CPE、OPE和DSSA的SepViT-T達到了82.0%的top-1準確率。在第二階段和第三階段交替使用GSA和DSSA后,準確率提高了0.3%。
2、Window Token Embedding
進一步研究了用固定的零向量或可學習向量初始化Window Token是否會有影響。與固定的零初始化方案相比,可學習的Window Token幫助SepViT-T將性能提高到82.5%,如表6的最后一行所示。
此外,驗證學習的有效性的全局表示每個Window Token Embedding方案,進一步研究其他一些方法的全局表示直接從DWA的輸出特性圖,如平均池(平均池)和深度卷積(DWConv)。

結(jié)果如表7所示,Window Token Embedding方案在這些方法中取得了最好的性能。同時,通過對Win token和Avg池化方法的參數(shù)和流量的比較,發(fā)現(xiàn)Window Token Embedding方案的計算成本可以忽略不計。
3、與Lite模型的比較

為了進一步探索SepViT的潛力,將SepViT縮小到一個精簡版的模型尺寸(SepViT-Lite)。正如在表8中觀察到的,SepViT-Lite獲得了一個極好的最高精度,為72.3%,優(yōu)于類似模型尺寸的同類算法。
4.2 圖像分類

4.3 目標檢測

4.4 語義分割

4.5 實例分割

5參考
[1].SepViT: Separable Vision Transformer
6推薦閱讀
即插即用 | XBN讓ResNet、ShuffleNet徹底解決BN的局限和缺點
PP-YoLoE | PP-YoLov2全面升級Anchor-Free,速度精度完美超越Y(jié)oLoX和YoLov5
Aug-ShuffleNets | ShuffleNetV2參數(shù)和FLOPs降低,性能卻提升,簡單暴力有效!
長按掃描下方二維碼添加小助手。
可以一起討論遇到的問題
聲明:轉(zhuǎn)載請說明出處
掃描下方二維碼關(guān)注【集智書童】公眾號,獲取更多實踐項目源碼和論文解讀,非常期待你我的相遇,讓我們以夢為馬,砥礪前行!

