準確率87.5%,微軟、中科大提出十字形注意力的CSWin Transformer
極市導讀
本文提出了十字形狀的自注意力機制,能夠在水平和垂直兩個方向上同時計算注意力權重。在沒有額外數(shù)據(jù)預訓練的情況,CSWin-B能達到85.4%的top-1準確率,用ImageNet-21K預訓練時,能夠達到87.5%的top-1準確率。 >>加入極市CV技術交流群,走在計算機視覺的最前沿
寫在前面
本文工作的出發(fā)點和目前大多數(shù)的ViT的出發(fā)點非常相似,都是為了解決Self-Attention(SA)的計算復雜度和輸入特征大小呈平方的關系,導致對于一些細粒度的任務(e.g. 目標檢測、實例分割)不太友好。解決這一問題的最直接的方法就是引入局部Attention,但是在只有局部注意力的情況下,每個block的信息不能交互,會導致模型性能的下降,目前解決這一問題的方法有Halo[1]和Shift Window[2]。本文提出了十字形狀的自注意力機制,能夠在水平和垂直兩個方向上同時計算注意力權重。
除此之外,作者還提出了一種局部增強的位置編碼,相比于以前的位置編碼,本文提出的位置編碼有兩個好處:1)能夠適應不同大小的輸入特征;2)具有更強的局部假設偏置。
作者在ImageNet上進行實驗,在沒有額外數(shù)據(jù)預訓練的情況,CSWin-B能達到85.4%的top-1準確率,用ImageNet-21K預訓練時,能夠達到87.5%的top-1準確率。此外,作者還在目標檢測和語義分割任務上進行了實驗,都取得了非常好的效果。
1. 論文和代碼地址
CSWin Transformer: A General Vision Transformer Backbone with Cross-Shaped Windows
論文地址:https://arxiv.org/abs/2107.00652
代碼地址:未開源
2. Motivation
眾所周知,由于SA的時間復雜度和輸入特征的大小成平方關系,因此ViT對于一些需要高分辨率的任務,在計算上是效率不高的。因此Local Attention被提出來解決這個問題,并且用Halo、Shift等操作來交互相鄰窗口的位置信息,但是這樣的操作使得模型的感受野是慢慢擴大的,因此需堆積很多層之后才能獲取全局的注意力,而比較大的感受野對于檢測、分割等任務又是非常重要的。那么怎么才能保持計算量在比較低的情況下,獲取更大的感受野呢?
所以本文作者就提出了一個十字形狀的自注意力(Cross-Shaped Window (CSWin) self-attention),能夠并行的計算橫向和縱向的注意力。
如上圖所示,CSWin的感受野是和(b),(c),(d),(e)不同的,并且本文的方法在計算不同方向attention的時候是并行的,而(c),(e)計算不同區(qū)域attention的時候是串行的,這就會引入額外的計算量和參數(shù)量。
Noting:個人覺得其實本文的結構跟(e)的結構非常相似,都是捕獲橫向和縱向的注意力,不同的是本文用了一半的head捕獲橫向注意力,另一半的head捕獲縱向注意力,但是e的結構是先捕獲橫向注意力、再捕獲縱向注意力,后面的操作是基于前面的操作,所以不能夠并行計算,這就導致模型的計算時間會變長。
除此之外,作者還引入了一個能夠適應不同大小輸入特征的相對位置編碼(Locally-enhanced Positional Encoding (LePE)),用卷積來加強局部偏置,并直接加到SA的結果后面,來減少計算量。
3. 方法
3.1. Overall Architecture
本文的模型結構如上圖所示,整個結構和Swin Transformer非常相似(Swin-T的結構如下圖所示)。
首先在token embedding的時候,作者采用了帶重疊的卷積(步長為5,卷積核大小為7x7)來獲得 的patch token,之前也有工作[3]證明帶重疊的卷積會比不重疊的卷積效果要好。每個CSwin Transformer Block進行上圖(右)的操作。之后,為了減少計算量和獲取更大感受野,在每一個stage之后,作者又用了帶重疊的卷積(步長為2,卷積核大小為3x3),將特征縮小為原來的1/2。
相比于其他ViT結構,CSwin Transformer主要有兩點不同:1)將SA替換成了SCWin Self-Attention;2)提出了一個新的位置編碼算法,引入局部假設偏置,并能夠和SA模塊并行計算。
3.2. Cross-Shape Window(SCWin) Self-Attention
由于HaloNet、Swin Transformer都能夠的感受野都是慢慢擴大,因此獲取全局注意力之前需要經(jīng)過很多層。為了擴大attention的區(qū)域,更加有效的獲取全局注意力,本文提出了一個十字形狀的attention。
如上圖所示,作者將attention的所有head分為兩部分,一部分用來捕獲橫向的注意力(attention區(qū)域為: ),另一部分用來捕獲縱向的注意力(attention的區(qū)域為: ),其中 為超參數(shù),在不同的stage中sw是不一樣的。
Noting:
為什么每個stage的sw是不一樣的?
因為SWin每個stage之后都進行了降采樣,所以越到后面的stage,特征的H和W會越來越小。作者在前面的stage中采用了較小的sw,后面的stage中采用較大的sw。
個人覺得這么做主要有兩方面的原因:
1)第一,前期H和W較大,如果sw也比較大,那就會導致計算量很大,極端情況下,sw=H或者sw=W,那就相當于直接進行了全局的SA,導致計算量爆炸。因此作者在前期H、W較大的時候,用較小的sw來限制計算量;后期等H、W比較小的時候,在用比較大的sw來擴大感受野。
2)第二,前面的Stage是用來獲取局部的attention(這里指寬度較小的十字),后面的stage用獲取全局的attention。(但是個人感覺如果這么做的話,就和作者提的Motivation有點沖突了,因為其他ViT結構的由局部慢慢變成全局注意力,如果前面的stage用較小的sw,那么前期也只能捕獲局部注意力(十字形的局部),所以就跟其他結構一樣是從局部到全局的一個過程。
3.3. 計算復雜度分析
CSWin的計算復雜度如上面的公式,由三部分組成:4個FC的復雜度,計算橫向attention的復雜度,計算縱向attention的復雜度。作者在每個stage取的sw分別為[1,2,7,7],前面sw較小,后面sw較大,使得CSWin的感受野能夠逐步變大,并且計算量也能控制在一個可以接受的范圍內。
3.4. 局部增強的位置編碼
SA具有排列不變性(不同排列的輸出結果是一樣的),為了彌補SA的這個缺陷,通常會在Transformer上加入位置編碼。
APE/CPE(上圖左)是在進行SA之前就加入了位置信息,RPE(上圖中)是在計算權重矩陣的過程中加入相對位置信息。作者采用了一種更加直接的方式進行了位置信息編碼:直接將位置信息加入到Value中,然后將結果加到SA的結果中。
如上面的公式所示,作者為了減少計算量,只捕獲了局部的注意力,所以用了一個Depth-wise Conv對value進行卷積,然后將結果加入到了SA的結果中。
(這么做一方面是能夠加入相對位置信息,另一方面還引入了局部的假設偏置,來提高模型的泛化能力。)
3.5. CSWin Transformer Block
CSWin Transformer block的結構和其它ViT的結構都非常相似,不同的只是加了局部增強的位置編碼,將注意力機制換成了十字形狀的Self-Attention??梢杂霉奖硎境桑?/p>
根據(jù)參數(shù)量和計算量,注意這個提出了CSWin-T的四個實例化變種,配置如下:
4.實驗
4.1. ImageNet-1K Classification
如上圖所示,在沒有預訓練的情況下,CSWin-T能夠用相似的計算量和參數(shù)量,比其他的ViT和CNN結構達到更好的效果。
在用ImageNet-21K預訓練的情況SCWin-L能夠達到87.5%的準確率
4.2. COCO Object Detection
在COCO數(shù)據(jù)下,使用Mask R-CNN的框架,CSWin的能夠取得不錯的效果。
使用CascadeMask R-CNN的框架,CSWin依舊能夠超過SWin-T和ResNeXt。
4.3. ADE20K Semantic Segmentation
在語義分割任務上,本文也能比Swin-Transformer高出比較多的性能。
4.4. 消融實驗
可以看出逐步增大sw、并行的SA、用層數(shù)較多通道較少的結構、用重疊的卷積,這些trick能夠提升網(wǎng)絡的性能。
本文提出的十字形注意力、局部增強的位置編碼,都能有效提升在檢測、分割任務上的性能。
5. 總結
CSWin最大的不同就是引入了一個十字形狀的注意力,看似和VOLO、CoAtNet、Focal SA有很大的不同,但本質上作者在進行下采樣和局部增強的位置編碼時,都用的是卷積,在這個過程中還是引入了局部假設偏置,所以本質上這還是一篇“SA全局建模+局部假設偏置”的文章,從這一點上說就和上面提到的文章很像了,只是實現(xiàn)方式不一樣。(從實驗結果看,LePE對模型性能的提升還是非常大的,這也可以間接說明,局部偏置對于CV任務的重要性)
但是這篇文章很有意思的一點是,將head進行了分組,不同組進行計算不同方向(區(qū)域)的注意力,由于是并行計算的,所以并不需要額外的計算時間和參數(shù)。作者在這篇文章中只是將這些head分為兩組,那分為更多組,每個組還是關注不同的區(qū)域,那樣感受野就會更大,對模型的性能是否還會有進一步的提升呢?
參考文獻
[1]. Vaswani, Ashish, et al. "Scaling local self-attention for parameter efficient visual backbones." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021.
[2]. Liu, Ze, et al. "Swin transformer: Hierarchical vision transformer using shifted windows." arXiv preprint arXiv:2103.14030 (2021).
[3]. Xiao, Tete, et al. "Early Convolutions Help Transformers See Better." arXiv preprint arXiv:2106.14881 (2021).
本文亮點總結
如果覺得有用,就請分享到朋友圈吧!
公眾號后臺回復“調研報告”獲取《2020年度中國計算機視覺人才調研報告》~
# 極市原創(chuàng)作者激勵計劃 #
