超越Swin,Transformer屠榜三大視覺任務!微軟推出新作:Focal Self-Attention
導讀
本文提出了Focal Self-Attention,對當前token周圍的區(qū)域進行細粒度的關注,對離當前token較遠的區(qū)域進行粗粒度的關注,用這樣的方式來更加有效的捕獲局部和全局的注意力。基于FSA,作者提出了Focal Transformer,并在分類、檢測、分割任務上都驗證了結構的有效性。
寫在前面
VIsion Transformer(ViT)和它的一系列變種結構在CV任務中取得了不錯的成績,在其中,Self-Attention(SA)強大的建模能力起到了很大的作用。但是SA的計算復雜度是和輸入數(shù)據的大小呈平方關系的,所以針對一些需要高分辨率的CV任務(e.g., 檢測、分割),計算開銷就會很大。目前的一些工作用了局部注意力去捕獲細粒度的信息,用全局注意力去捕獲粗粒度的信息,但這種操作對原始SA建模能力的影響,會導致sub-optimal的問題。因此,本文提出了Focal Self-Attention(FSA),以細粒度的方式關注離自己近的token,以粗粒度的方式關注離自己遠的token,以此來更有效的捕獲short-range和long-range的關系。基于FSA,作者提出了Focal Transformer,并在分類、檢測、分割任務上都驗證了結構的有效性。
1. 論文和代碼地址
Focal Self-attention for Local-Global Interactions in Vision Transformers
論文地址:https://arxiv.org/abs/2107.00641
代碼地址:未開源
核心代碼:后期會復現(xiàn)在https://github.com/xmu-xiaoma666/External-Attention-pytorch
2. Motivation
目前,Transformer結構在CV和NLP領域都展現(xiàn)出了潛力。相比于CNN,Transformer結構最大的不同就是它的Self-Attention(SA)能夠進行依賴內容的全局交互(global content-dependent interaction),使得Transformer能夠捕獲long-range和local-range的關系。

上圖是DeiT-Tiny的attention可視化,可以看出,SA不僅能夠像CNN那樣關注局部區(qū)域,還能進行全局信息的感知。然而Transformer的計算量與輸入數(shù)據的大小呈平方關系,因此對于檢測、分割任務來說是非常不友好的。

因此,本文提出了一個Focal Self-Attention(FSA),如上圖所示,對當前token周圍的區(qū)域進行細粒度的關注,對離當前token較遠的區(qū)域進行粗粒度的關注,用這樣的方式來更加有效的捕獲局部和全局的注意力?;贔SA,本文提出了Focal Transformer,并在多個任務上進行了實驗,取得了SOTA的性能。
3. 方法
3.1. 模型結構

本文的模型結構如上圖所示,首先將圖片分成4x4的patch。然后進入Patch Embedding層,Patch Embedding層為卷積核和步長都為4的卷積。在進入N個Focal Transformer層,在每個stage中,特征的大小減半,通道維度變?yōu)樵瓉淼膬杀?。如果采用SA,由于這里指將圖片縮小了四倍,因此第一層Transformer layer的SA計算復雜度為,這一步是非常耗時、耗顯存的。
那么,應該采用什么樣的辦法來減少計算量呢?原始的SA將query token和其他所有token都進行了相似度的計算,因為無差別的計算了所有token的相似度,導致這一步是非常耗時、耗顯存的。但其實,對于圖片的某一個點,與這個點的信息最相關的事這個點周圍的信息,距離越遠,這個關系應該就越小。所以作者就提出了,對于這個點周圍的信息進行細粒度的關注,距離這個點越遠,關注也就越粗粒度。(個人覺得這一點其實跟人眼觀察的效應很像,當我們看一件物體的,我們最關注的是離這個物體更近的區(qū)域,對于遠離這個物體的區(qū)域,關注程度就會更小甚至直接忽視)。
3.2. Focal Self-Attention(FSA)
傳統(tǒng)的SA由于對所有的token都進行細粒度的關注,因此是非常費時的;本文提出的FSA對靠近當前token的信息進行更加細粒度的關注,對遠離當前token的信息進行粗粒度的關注。在論文中,粗粒度的關注指的是將多個token的信息進行聚合(也就是下面講到的sub-window pooling),因此聚合的token越多,那么關注也就越粗粒度,在相同的代價下,F(xiàn)SA的感受野也就越大。下圖展示了對這attended token數(shù)量的增加,SA和FSA感受野的變化:

3.3. Window-wise attention

如上圖所示
Focal Self-Attention的結構如上圖所示,首先明確三個概念:
Focal levels :可以表示FSA中對特征關注的細粒度程度。level L的下標越小,對特征關注也就越精細。
Focal window size :作者將token劃分成了多個sub-window,focal window size指的是每個sub-window的大小。
Focal region size :focal region size是橫向和縱向的sub-window數(shù)量。
3.3.1. Sub-window pooling
功能:
這一步的作用是用來聚合信息的,因為前面也說到了,Self-Attention是對所有的token信息都進行細粒度的關注,導致計算量非常大。所以作者就想到,能不能只對query token周圍的信息進行細粒度關注,遠離的query token的信息進行粗粒度的關注。那么,如何來表示這個粗粒度呢,作者就提出了sub-window pooling這個方法,將多個token的信息進行聚合,以此來減少計算量。那么,聚合的token數(shù)越多,后期attention計算需要的計算量也就越小,當然,關注的程度也就更加粗粒度。
計算流程:
每個focal level中,首先將token劃分成多個的sub-window,然后用一個線性層進行pooling操作:

pooling后的特征提供了細粒度或者粗粒度的信息。比如,level 1的,所以pooling并沒有對特征進行降采樣,所以處理之后的特征是細粒度的;同理level 2和level 3,特征分別縮小到了原來的1/2和1/4,因此越遠離query token的特征,信息表示就越是粗粒度的。此外,由于通常是比較小的,所以這一步的參數(shù)幾乎是可以忽略不計的。
3.3.2. Attention computation
功能:
在上一步中,我們用sub-window pooling進行了信息聚合操作,以此來獲得不同細粒度的特征。接下來,我們就需要對這些不同細粒度的信息進行attention的計算。具體的步驟其實和標準的Self-Attention很像,主要不同之處有兩點1)引入了相對位置編碼,來獲取相對位置信息;2)每個query和所有細粒度的key和value都進行了attention的計算,因此本文方法的計算量其實還是不算小的。
計算流程:
經過sub-window pooling之后,就獲得不同細粒度和感受野的特征表示。接下來這一步,我們需要對local和global的特征進行attention計算。首先,我們通過三個線性層計算當前l(fā)evel的Q和所有l(wèi)evel的K、V:

接著,我們將當前l(fā)evel的Q和所有l(wèi)evel的K、V進行帶相對位置編碼的Self-Attention:



其中B是可學習的相對位置編碼的參數(shù)。
3.4. Model Configuration
基于FSA,作者提出了三個不同大小的Focal Transformer實例,具體的參數(shù)設置如下所示。

4.實驗
4.1. ImageNet上的結果

作者對比了三個Focal Transfermer實例和其他SOTA模型的對比,可以看出在參數(shù)量和計算量相當?shù)那闆r下,本文的Focal Transformer確實能取得比較好的結果。
4.2. 目標檢測和分割任務上的結果

從上圖中可以看出,在計算量相差不大情況下,F(xiàn)ocal Transformer的各個指標都有明顯的提升。

為了進行進一步的探究,作者還在不同的目標檢測框架下對不同的backbone進行了實驗,可以看出,focal Transformer相比于Resnet-50和Swin-Transformer都能有非常明顯的性能提升。


上面兩張圖分別展示了不同模型在ADE20K上語義分割和COCO上目標檢測的結果,可以看出,本文的方法在性能上還是有很大的優(yōu)越性。
4.3. 消融實驗
4.3.1. 不同window size的影響

可以看出,更大的window size能夠有更好的性能;在相同計算量或者window size下,F(xiàn)ocal-Tiny的性能明顯優(yōu)于Swin-Tiny。
4.3.2. Window Shifting的影響

可以看出Window Shifting對于分類任務性能的提高是有反效果的;但是有利于檢測、分割任務的性能提升。
4.3.3. Short-Range和Long-Range信息交互的影響

可以看出,在不同任務上,Local+Global的信息交互明顯優(yōu)于只有Local或者Global。
4.3.4. 模型深度的影響

上面展示了stage3采用不同層數(shù)的實驗結果,可以看出層數(shù)并不是越多越好,F(xiàn)ocal Transformer深度為4的效果要由于深度為6。
5. 總結
本文提出了一個能夠進行l(wèi)ocal-global信息交互的attention模塊——Focal Self-Attention(FSA),F(xiàn)SA能夠對相鄰的特征進行細粒度的關注,對距離較遠的特征進行粗粒度的關注,從而實現(xiàn)有效的local-global信息交互。但是FSA引入了額外的顯存占用和計算量,因此雖然性能上得到了不錯的提升,但是高分辨率圖像的預測任務,依舊不是非常友好。
這是繼VOLO、CoAtNet之后又一篇在局部信息建模上做出來的文章,這也說明了局部信息建模這個部分對于圖像理解任務來說確實是非常重要的,“局部假設偏置+Transformer強大的全局建模能力”這一操作確實是非常有效的。相比于VOLO、CoAtNet,本文的方法是將局部和全局信息的建模放在一個結構中,而不是對局部和全局信息分別建模后,簡單地再將局部和全局建模結構進行串聯(lián)和并聯(lián)。
往期精彩:
TransUNet:基于 Transformer 和 CNN 的混合編碼網絡
ViT:視覺Transformer backbone網絡ViT論文與代碼詳解
【原創(chuàng)首發(fā)】機器學習公式推導與代碼實現(xiàn)30講.pdf
【原創(chuàng)首發(fā)】深度學習語義分割理論與實戰(zhàn)指南.pdf
求個在看
