超越Swin,Transformer屠榜三大視覺任務(wù)!微軟推出新作:Focal Self-Attention
點(diǎn)擊下方“AI算法與圖像處理”,一起進(jìn)步!
重磅干貨,第一時(shí)間送達(dá)
導(dǎo)讀
本文提出了Focal Self-Attention,對(duì)當(dāng)前token周圍的區(qū)域進(jìn)行細(xì)粒度的關(guān)注,對(duì)離當(dāng)前token較遠(yuǎn)的區(qū)域進(jìn)行粗粒度的關(guān)注,用這樣的方式來更加有效的捕獲局部和全局的注意力。基于FSA,作者提出了Focal Transformer,并在分類、檢測(cè)、分割任務(wù)上都驗(yàn)證了結(jié)構(gòu)的有效性。
寫在前面
VIsion Transformer(ViT)和它的一系列變種結(jié)構(gòu)在CV任務(wù)中取得了不錯(cuò)的成績(jī),在其中,Self-Attention(SA)強(qiáng)大的建模能力起到了很大的作用。但是SA的計(jì)算復(fù)雜度是和輸入數(shù)據(jù)的大小呈平方關(guān)系的,所以針對(duì)一些需要高分辨率的CV任務(wù)(e.g., 檢測(cè)、分割),計(jì)算開銷就會(huì)很大。目前的一些工作用了局部注意力去捕獲細(xì)粒度的信息,用全局注意力去捕獲粗粒度的信息,但這種操作對(duì)原始SA建模能力的影響,會(huì)導(dǎo)致sub-optimal的問題。因此,本文提出了Focal Self-Attention(FSA),以細(xì)粒度的方式關(guān)注離自己近的token,以粗粒度的方式關(guān)注離自己遠(yuǎn)的token,以此來更有效的捕獲short-range和long-range的關(guān)系?;贔SA,作者提出了Focal Transformer,并在分類、檢測(cè)、分割任務(wù)上都驗(yàn)證了結(jié)構(gòu)的有效性。
1. 論文和代碼地址
Focal Self-attention for Local-Global Interactions in Vision Transformers
論文地址:https://arxiv.org/abs/2107.00641
代碼地址:未開源
核心代碼:后期會(huì)復(fù)現(xiàn)在https://github.com/xmu-xiaoma666/External-Attention-pytorch
2. Motivation
目前,Transformer結(jié)構(gòu)在CV和NLP領(lǐng)域都展現(xiàn)出了潛力。相比于CNN,Transformer結(jié)構(gòu)最大的不同就是它的Self-Attention(SA)能夠進(jìn)行依賴內(nèi)容的全局交互(global content-dependent interaction),使得Transformer能夠捕獲long-range和local-range的關(guān)系。
上圖是DeiT-Tiny的attention可視化,可以看出,SA不僅能夠像CNN那樣關(guān)注局部區(qū)域,還能進(jìn)行全局信息的感知。然而Transformer的計(jì)算量與輸入數(shù)據(jù)的大小呈平方關(guān)系,因此對(duì)于檢測(cè)、分割任務(wù)來說是非常不友好的。
因此,本文提出了一個(gè)Focal Self-Attention(FSA),如上圖所示,對(duì)當(dāng)前token周圍的區(qū)域進(jìn)行細(xì)粒度的關(guān)注,對(duì)離當(dāng)前token較遠(yuǎn)的區(qū)域進(jìn)行粗粒度的關(guān)注,用這樣的方式來更加有效的捕獲局部和全局的注意力。基于FSA,本文提出了Focal Transformer,并在多個(gè)任務(wù)上進(jìn)行了實(shí)驗(yàn),取得了SOTA的性能。
3. 方法
3.1. 模型結(jié)構(gòu)
本文的模型結(jié)構(gòu)如上圖所示,首先將圖片分成4x4的patch。然后進(jìn)入Patch Embedding層,Patch Embedding層為卷積核和步長(zhǎng)都為4的卷積。在進(jìn)入N個(gè)Focal Transformer層,在每個(gè)stage中,特征的大小減半,通道維度變?yōu)樵瓉淼膬杀丁H绻捎肧A,由于這里指將圖片縮小了四倍,因此第一層Transformer layer的SA計(jì)算復(fù)雜度為 ,這一步是非常耗時(shí)、耗顯存的。
那么,應(yīng)該采用什么樣的辦法來減少計(jì)算量呢?原始的SA將query token和其他所有token都進(jìn)行了相似度的計(jì)算,因?yàn)闊o差別的計(jì)算了所有token的相似度,導(dǎo)致這一步是非常耗時(shí)、耗顯存的。但其實(shí),對(duì)于圖片的某一個(gè)點(diǎn),與這個(gè)點(diǎn)的信息最相關(guān)的事這個(gè)點(diǎn)周圍的信息,距離越遠(yuǎn),這個(gè)關(guān)系應(yīng)該就越小。所以作者就提出了,對(duì)于這個(gè)點(diǎn)周圍的信息進(jìn)行細(xì)粒度的關(guān)注,距離這個(gè)點(diǎn)越遠(yuǎn),關(guān)注也就越粗粒度。(個(gè)人覺得這一點(diǎn)其實(shí)跟人眼觀察的效應(yīng)很像,當(dāng)我們看一件物體的,我們最關(guān)注的是離這個(gè)物體更近的區(qū)域,對(duì)于遠(yuǎn)離這個(gè)物體的區(qū)域,關(guān)注程度就會(huì)更小甚至直接忽視)。
3.2. Focal Self-Attention(FSA)
傳統(tǒng)的SA由于對(duì)所有的token都進(jìn)行細(xì)粒度的關(guān)注,因此是非常費(fèi)時(shí)的;本文提出的FSA對(duì)靠近當(dāng)前token的信息進(jìn)行更加細(xì)粒度的關(guān)注,對(duì)遠(yuǎn)離當(dāng)前token的信息進(jìn)行粗粒度的關(guān)注。在論文中,粗粒度的關(guān)注指的是將多個(gè)token的信息進(jìn)行聚合(也就是下面講到的sub-window pooling),因此聚合的token越多,那么關(guān)注也就越粗粒度,在相同的代價(jià)下,F(xiàn)SA的感受野也就越大。下圖展示了對(duì)這attended token數(shù)量的增加,SA和FSA感受野的變化:
3.3. Window-wise attention
如上圖所示
Focal Self-Attention的結(jié)構(gòu)如上圖所示,首先明確三個(gè)概念:
Focal levels :可以表示FSA中對(duì)特征關(guān)注的細(xì)粒度程度。level L的下標(biāo)越小,對(duì)特征關(guān)注也就越精細(xì)。
Focal window size :作者將token劃分成了多個(gè)sub-window,focal window size指的是每個(gè)sub-window的大小。
Focal region size :focal region size是橫向和縱向的sub-window數(shù)量。
3.3.1. Sub-window pooling
功能:
這一步的作用是用來聚合信息的,因?yàn)榍懊嬉舱f到了,Self-Attention是對(duì)所有的token信息都進(jìn)行細(xì)粒度的關(guān)注,導(dǎo)致計(jì)算量非常大。所以作者就想到,能不能只對(duì)query token周圍的信息進(jìn)行細(xì)粒度關(guān)注,遠(yuǎn)離的query token的信息進(jìn)行粗粒度的關(guān)注。那么,如何來表示這個(gè)粗粒度呢,作者就提出了sub-window pooling這個(gè)方法,將多個(gè)token的信息進(jìn)行聚合,以此來減少計(jì)算量。那么,聚合的token數(shù)越多,后期attention計(jì)算需要的計(jì)算量也就越小,當(dāng)然,關(guān)注的程度也就更加粗粒度。
計(jì)算流程:
每個(gè)focal level中,首先將token劃分成多個(gè) 的sub-window,然后用一個(gè)線性層 進(jìn)行pooling操作:
pooling后的特征提供了細(xì)粒度或者粗粒度的信息。比如,level 1的 ,所以pooling并沒有對(duì)特征進(jìn)行降采樣,所以處理之后的特征是細(xì)粒度的;同理level 2和level 3,特征分別縮小到了原來的1/2和1/4,因此越遠(yuǎn)離query token的特征,信息表示就越是粗粒度的。此外,由于 通常是比較小的,所以這一步的參數(shù)幾乎是可以忽略不計(jì)的。
3.3.2. Attention computation
功能:
在上一步中,我們用sub-window pooling進(jìn)行了信息聚合操作,以此來獲得不同細(xì)粒度的特征。接下來,我們就需要對(duì)這些不同細(xì)粒度的信息進(jìn)行attention的計(jì)算。具體的步驟其實(shí)和標(biāo)準(zhǔn)的Self-Attention很像,主要不同之處有兩點(diǎn)1)引入了相對(duì)位置編碼,來獲取相對(duì)位置信息;2)每個(gè)query和所有細(xì)粒度的key和value都進(jìn)行了attention的計(jì)算,因此本文方法的計(jì)算量其實(shí)還是不算小的。
計(jì)算流程:
經(jīng)過sub-window pooling之后,就獲得不同細(xì)粒度和感受野的特征表示。接下來這一步,我們需要對(duì)local和global的特征進(jìn)行attention計(jì)算。首先,我們通過三個(gè)線性層計(jì)算當(dāng)前l(fā)evel的Q和所有l(wèi)evel的K、V:
接著,我們將當(dāng)前l(fā)evel的Q和所有l(wèi)evel的K、V進(jìn)行帶相對(duì)位置編碼的Self-Attention:
其中B是可學(xué)習(xí)的相對(duì)位置編碼的參數(shù)。
3.4. Model Configuration
基于FSA,作者提出了三個(gè)不同大小的Focal Transformer實(shí)例,具體的參數(shù)設(shè)置如下所示。
4.實(shí)驗(yàn)
4.1. ImageNet上的結(jié)果
作者對(duì)比了三個(gè)Focal Transfermer實(shí)例和其他SOTA模型的對(duì)比,可以看出在參數(shù)量和計(jì)算量相當(dāng)?shù)那闆r下,本文的Focal Transformer確實(shí)能取得比較好的結(jié)果。
4.2. 目標(biāo)檢測(cè)和分割任務(wù)上的結(jié)果
從上圖中可以看出,在計(jì)算量相差不大情況下,F(xiàn)ocal Transformer的各個(gè)指標(biāo)都有明顯的提升。
為了進(jìn)行進(jìn)一步的探究,作者還在不同的目標(biāo)檢測(cè)框架下對(duì)不同的backbone進(jìn)行了實(shí)驗(yàn),可以看出,focal Transformer相比于Resnet-50和Swin-Transformer都能有非常明顯的性能提升。
上面兩張圖分別展示了不同模型在ADE20K上語義分割和COCO上目標(biāo)檢測(cè)的結(jié)果,可以看出,本文的方法在性能上還是有很大的優(yōu)越性。
4.3. 消融實(shí)驗(yàn)
4.3.1. 不同window size的影響
可以看出,更大的window size能夠有更好的性能;在相同計(jì)算量或者window size下,F(xiàn)ocal-Tiny的性能明顯優(yōu)于Swin-Tiny。
4.3.2. Window Shifting的影響
可以看出Window Shifting對(duì)于分類任務(wù)性能的提高是有反效果的;但是有利于檢測(cè)、分割任務(wù)的性能提升。
4.3.3. Short-Range和Long-Range信息交互的影響
可以看出,在不同任務(wù)上,Local+Global的信息交互明顯優(yōu)于只有Local或者Global。
4.3.4. 模型深度的影響
上面展示了stage3采用不同層數(shù)的實(shí)驗(yàn)結(jié)果,可以看出層數(shù)并不是越多越好,F(xiàn)ocal Transformer深度為4的效果要由于深度為6。
5. 總結(jié)
本文提出了一個(gè)能夠進(jìn)行l(wèi)ocal-global信息交互的attention模塊——Focal Self-Attention(FSA),F(xiàn)SA能夠?qū)ο噜彽奶卣鬟M(jìn)行細(xì)粒度的關(guān)注,對(duì)距離較遠(yuǎn)的特征進(jìn)行粗粒度的關(guān)注,從而實(shí)現(xiàn)有效的local-global信息交互。但是FSA引入了額外的顯存占用和計(jì)算量,因此雖然性能上得到了不錯(cuò)的提升,但是高分辨率圖像的預(yù)測(cè)任務(wù),依舊不是非常友好。
這是繼VOLO、CoAtNet之后又一篇在局部信息建模上做出來的文章,這也說明了局部信息建模這個(gè)部分對(duì)于圖像理解任務(wù)來說確實(shí)是非常重要的,“局部假設(shè)偏置+Transformer強(qiáng)大的全局建模能力”這一操作確實(shí)是非常有效的。相比于VOLO、CoAtNet,本文的方法是將局部和全局信息的建模放在一個(gè)結(jié)構(gòu)中,而不是對(duì)局部和全局信息分別建模后,簡(jiǎn)單地再將局部和全局建模結(jié)構(gòu)進(jìn)行串聯(lián)和并聯(lián)。
努力分享優(yōu)質(zhì)的計(jì)算機(jī)視覺相關(guān)內(nèi)容,歡迎關(guān)注:
個(gè)人微信(如果沒有備注不拉群!) 請(qǐng)注明:地區(qū)+學(xué)校/企業(yè)+研究方向+昵稱
下載1:何愷明頂會(huì)分享
在「AI算法與圖像處理」公眾號(hào)后臺(tái)回復(fù):何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經(jīng)典工作的總結(jié)分析
下載2:終身受益的編程指南:Google編程風(fēng)格指南
在「AI算法與圖像處理」公眾號(hào)后臺(tái)回復(fù):c++,即可下載。歷經(jīng)十年考驗(yàn),最權(quán)威的編程規(guī)范!
下載3 CVPR2021
在「AI算法與圖像處理」公眾號(hào)后臺(tái)回復(fù):CVPR,即可下載1467篇CVPR 2020論文 和 CVPR 2021 最新論文
點(diǎn)亮
,告訴大家你也在看
