即插即用 | 卷積與Self-Attention完美融合X-volution插入CV模型將帶來(lái)全任務(wù)的漲點(diǎn)(文末附論文)


本文建立了一個(gè)由卷積和self-attention組成的多分支基本模塊,能夠統(tǒng)一局部和非局部特征交互,然后可以結(jié)構(gòu)重新參數(shù)化為一個(gè)純卷積風(fēng)格的算子:X-volution,即插即用!可助力分類、檢測(cè)和分割任務(wù)的漲點(diǎn)!
作者單位:上海交通大學(xué)(倪冰冰團(tuán)隊(duì)),華為海思
1簡(jiǎn)介
卷積和self-attention是深度神經(jīng)網(wǎng)絡(luò)中的2個(gè)基本構(gòu)建塊,前者以線性方式提取圖像的局部特征,而后者通過非局部關(guān)系編碼高階上下文關(guān)系。盡管本質(zhì)上是相互補(bǔ)充的,即一階/高階、最先進(jìn)的架構(gòu),但是,CNN或Transformer均缺乏一種原則性的方法來(lái)在單個(gè)計(jì)算模塊中同時(shí)應(yīng)用這2種操作,因?yàn)樗鼈兊漠悩?gòu)計(jì)算視覺任務(wù)的全局點(diǎn)積的模式和過度負(fù)擔(dān)。
在這項(xiàng)工作中,作者從理論上推導(dǎo)出一種全局self-attention近似方案,該方案通過對(duì)變換特征的卷積運(yùn)算來(lái)近似self-attention?;诮品桨附⒘艘粋€(gè)由卷積和self-attention操作組成的多分支基本模塊,能夠統(tǒng)一局部和非局部特征交互。重要的是,一旦經(jīng)過訓(xùn)練,這個(gè)多分支模塊可以通過結(jié)構(gòu)重新參數(shù)化有條件地轉(zhuǎn)換為單個(gè)標(biāo)準(zhǔn)卷積操作,呈現(xiàn)一個(gè)名為X-volution的純卷積風(fēng)格的算子,準(zhǔn)備作為atomic操作插入任何現(xiàn)代網(wǎng)絡(luò)。大量實(shí)驗(yàn)表明,所提出的X-volution實(shí)現(xiàn)了極具競(jìng)爭(zhēng)力的視覺理解改進(jìn)(ImageNet分類的top-1準(zhǔn)確率+1.2%,COCO 檢測(cè)和分割的+1.7box AP和+1.5mask AP)。
2方法
本文提出了一種新穎的原子算子X-volution,將基本卷積算子和self-attention算子集成到一個(gè)統(tǒng)一的計(jì)算塊中,期望從局部vs非局部/線性vs非線性兩方面獲得令人印象深刻的性能改進(jìn)。
首先,回顧卷積和self-attention的基本數(shù)學(xué)公式;
然后,解讀全局self-attention近似方案,它可以直接轉(zhuǎn)換為一個(gè)兼容的卷積模式。
最后,解釋在推斷階段如何有條件地合并卷積分支和所提出的self-attention近似到單個(gè)卷積風(fēng)格原子操作符。
2.1 回顧卷積和self-attention
這2個(gè)算子想必大家已經(jīng)非常熟悉了,這里就簡(jiǎn)單的說(shuō)一下哈?。?!
卷積Module
卷積算子是用于構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)(CNN)的基本算子,它通過有限局部區(qū)域內(nèi)的線性加權(quán)來(lái)估計(jì)輸出。給定一個(gè)特征張量, 表示輸入通道的數(shù)量,H是高度,W是寬度。卷積算子的估計(jì)結(jié)果由以下公式定義:

其中為輸出通道數(shù)。為卷積核,為特定位置核標(biāo)量值。為卷積kernel大小,為偏差向量,為卷積kernel中所有可能偏移的集合。
Self-Attention Module
與卷積不同,self-attention不能直接處理圖像張量,首先將輸入特征張量reshape為向量。表示向量的長(zhǎng)度,。分別表示Query、Key、Value的嵌入變換,是空間共享的線性變換。Self-Attention的定義如下:

其中表示最終的Self-Attention等價(jià)系數(shù)矩陣,可以認(rèn)為是一個(gè)動(dòng)態(tài)和空間變化的卷積kernel。
2.2 全局self-attention近似方案

全局自注意是最原始的attention方案,它得益于全局范圍的優(yōu)勢(shì)而具有優(yōu)異的性能。然而,它的復(fù)雜度太大了使得其在CV任務(wù)中的應(yīng)用受到嚴(yán)重限制。關(guān)鍵問題是能否在公式2中推導(dǎo)出的適當(dāng)近似結(jié)果,即能否找到的兼容計(jì)算模式,即能否找到卷積、single element-wise product等現(xiàn)成的算子替代?
在本部分中,作者展示了在簡(jiǎn)單的element-wise shift和dot-product之后,可以用卷積的形式近似全局self-attention算子。給定特征張量中的一個(gè)位置,將其特征向量表示為,其attention logit 可以寫成如下公式:

其中, Ω為全局區(qū)域,A為以x0為中心的局部區(qū)域。在圖1的左邊說(shuō)明了局部區(qū)域和非局部區(qū)域。圖中灰框表示輸入特征X的全局區(qū)域,綠框表示以為中心的局部區(qū)域。
另外,non-local區(qū)域是指局部區(qū)域以外的區(qū)域。因?yàn)閳D像具有很強(qiáng)的說(shuō)服力(根據(jù)馬爾可夫性質(zhì)),可以用像素在其局部區(qū)域近似線性表示:,其中為線性權(quán)值。代入式3中第2項(xiàng),可得:

在不失一般性的情況下,可以在區(qū)域A中加入系數(shù)為零的項(xiàng)。通過設(shè)計(jì),non-local區(qū)域也在局部區(qū)域的邊界像素的接受域內(nèi)。因此可以將上式轉(zhuǎn)化為:

根據(jù)圖像的馬爾可夫性質(zhì),可以假設(shè)對(duì)于,遠(yuǎn)離的與之間的相互作用是弱的。因此,可以進(jìn)一步簡(jiǎn)化式上式:

其中為的局部區(qū)域。將上式代入Eq.3中的第2項(xiàng),可以改寫為:

注意,是和之間的內(nèi)積,它衡量了和之間的相似性。是在其鄰近區(qū)域的attention結(jié)果。因此,在處的全局注意力logit可以通過加權(quán)求和其鄰域內(nèi)像素的attention結(jié)果來(lái)近似。
根據(jù)以上理解,可以設(shè)計(jì)一個(gè)近似算子,通過逐點(diǎn)上下文關(guān)系傳播來(lái)估計(jì)全局attention。因此,作者提出了一個(gè)全局注意力近似方案,Pixel Shift Self-Attention (PSSA),基于像素偏移和卷積來(lái)近似全局attention。
具體來(lái)說(shuō),首先將特征映射沿給定的方向(即左、右、上等)移動(dòng)L個(gè)像素,然后將原始特征與移動(dòng)的特征進(jìn)行元素積,得到變換后的特征。
實(shí)際上,shift-product操作建立了鄰域內(nèi)點(diǎn)之間的上下文關(guān)系,通過分層疊加可以將上下文關(guān)系傳播到全局區(qū)域。最后,對(duì)這些變換后的特征進(jìn)行加權(quán)求和(可以通過卷積算子實(shí)現(xiàn)),得到一個(gè)近似的自注意力映射。平移、元素積和加權(quán)求和的復(fù)雜度為O(n),因此提出的PSSA是一個(gè)時(shí)間復(fù)雜度為O(n)的算子。值得注意的是,PSSA實(shí)際上是將self-attention轉(zhuǎn)換為對(duì)轉(zhuǎn)換特征的標(biāo)準(zhǔn)卷積運(yùn)算。該結(jié)構(gòu)通過層次疊加進(jìn)而通過上下文關(guān)系傳播實(shí)現(xiàn)全局self-attention logit的估計(jì)。
2.3 卷積和Self-Attention的統(tǒng)一: X-volution
卷積和Self-Attention是相輔相成的
卷積采用局域性和各向同性的歸納偏差,使其具有平移等方差的能力。然而,局部固有的特性使卷積無(wú)法建立形成圖所必需的長(zhǎng)期關(guān)系。
與卷積相反,Self-Attention摒棄了提到的歸納偏差,即所謂的低偏差,并從數(shù)據(jù)集中發(fā)現(xiàn)自然模式,而沒有明確的模型假設(shè)。低偏差原則給予Self-Attention以探索復(fù)雜關(guān)系的自由(例如,長(zhǎng)期依賴、各向異性語(yǔ)義、CNN中的強(qiáng)局部相關(guān)性等),因此該方案通常需要對(duì)超大數(shù)據(jù)集進(jìn)行預(yù)訓(xùn)練(如JFT-300M、ImageNet21K)。
此外,Self-Attention很難優(yōu)化,需要更長(zhǎng)的訓(xùn)練周期和復(fù)雜的Tricks。有文獻(xiàn)提出將卷積引入Self-Attention以提高Self-Attention的魯棒性和性能。簡(jiǎn)而言之,采用不同的模型假設(shè),使卷積和Self-Attention在優(yōu)化特征、注意范圍(即局部/長(zhǎng)期)和內(nèi)容依賴(內(nèi)容依賴/獨(dú)立)等方面得到相互補(bǔ)充。
統(tǒng)一的多分支拓?fù)?span style="display: none;">
有一些工作試圖將卷積和self-attention結(jié)合起來(lái),然而,粗糙的拓?fù)浣M合(例如,分層堆疊,級(jí)聯(lián))阻止他們獲得單個(gè)原子操作(在同一個(gè)模塊中應(yīng)用卷積和注意),使結(jié)構(gòu)不規(guī)則。例如,AANet將經(jīng)過卷積層和Self-Attention層處理的結(jié)果直接連接起來(lái),得到組合結(jié)果。說(shuō)明單一的卷積或單一的Self-Attention都會(huì)導(dǎo)致性能下降,當(dāng)它們同時(shí)存在時(shí),性能會(huì)有顯著的提高。
在這個(gè)工作中,作者研究卷積和self-attention的數(shù)學(xué)原理后找到了近似形式。作者還觀察到全局元素相互作用(點(diǎn)積)可以用局部元素相互作用的傳播來(lái)近似表示。

因此,這2種算子可以用統(tǒng)一的計(jì)算模式來(lái)處理,即卷積。從另一個(gè)角度來(lái)看,卷積運(yùn)算可以看作是Self-Attention的空間不變偏差??紤]到這一點(diǎn),可以將算子組合成一個(gè)多分支拓?fù)?,如圖所示,這可以同時(shí)受益于卷積和Self-Attention。多分支模塊由2個(gè)主要分支組成。左邊的分支由級(jí)聯(lián)的Shift Pixel Self-Attention和batch-normalization組成起到近似全局Self-Attention操作的作用,右分支被設(shè)計(jì)成由級(jí)聯(lián)卷積和批歸一化組成的卷積分支。
有條件地將多分支方案轉(zhuǎn)換為Atomic X-volution
多分支模塊實(shí)現(xiàn)了卷積與Self-Attention的功能組合。然而,它只是一種粗粒度的算子組合,這將使網(wǎng)絡(luò)高度復(fù)雜和不規(guī)則。從硬件實(shí)現(xiàn)的角度來(lái)看,多分支結(jié)構(gòu)需要更多的緩存來(lái)服務(wù)于多路徑的處理。相反,單個(gè)算子操作效率更高,內(nèi)存開銷更低,這是硬件友好的。
為了簡(jiǎn)單起見,在這里省略批標(biāo)準(zhǔn)化的公式。實(shí)際上,批歸一化可以看作是一個(gè)組卷積(其組等于channel數(shù)),可以合并到卷積/Self-Attention層中。實(shí)際上,一般采用分層疊加的PSSA,堆疊結(jié)構(gòu)中的加權(quán)運(yùn)算可以省略,因?yàn)榉謱盈B加隱含了加權(quán)鄰接像素的運(yùn)算。本文提出的多分支模塊的訓(xùn)練階段如下:

其中為卷積權(quán)值,為其對(duì)應(yīng)的偏置。

其中表示來(lái)自pixel shift self-attention 分支的content-dependent/dynamic coefficients。表示從卷積分支繼承的content-independent/static coefficients,訓(xùn)練完成后會(huì)修復(fù)。
觀察上式可以發(fā)現(xiàn),經(jīng)過一個(gè)簡(jiǎn)單的變換,多分支結(jié)構(gòu)可以轉(zhuǎn)換成卷積形式。值得指出的是,這個(gè)過程在CNN中被廣泛使用,被稱為structural re-parameterization。在這里首先把它擴(kuò)展到卷積和self-attention的合并。根據(jù)上式將由卷積和self-attention組成的多分支模塊等價(jià)地轉(zhuǎn)換為一個(gè)動(dòng)態(tài)卷積算子X-voultion。
請(qǐng)注意,這里建議X-volution可以作為一個(gè)原子操作插入主流網(wǎng)絡(luò)(例如,ResNet)。
3實(shí)驗(yàn)
3.1 圖像分類
架構(gòu)設(shè)計(jì)



結(jié)果表明,第3階段的替換效果最好,ResNet-34的top-1準(zhǔn)確率為+1.2%,ResNet-50的top-1準(zhǔn)確率為+0.9%。作者懷疑第4階段替換的性能較差ResNet-50可以歸因于可學(xué)習(xí)參數(shù)的增加,這減慢了網(wǎng)絡(luò)的收斂。
3.2 目標(biāo)檢測(cè)

特別是,本文所提X-volution(SA)實(shí)現(xiàn)了最好的性能,與ResNet-50相比增加了+1.7boxes AP。通過結(jié)合低階局部特征和高階長(zhǎng)依賴,所提出的X-volution算子比單獨(dú)的卷積或自注意力算子具有更高的精度。
結(jié)果表明,圖完備原子算符有助于視覺理解,而現(xiàn)有的計(jì)算算符忽略了這一性質(zhì)。此外,基于PSSA的X-volution也取得了與X-volution(SA)相當(dāng)?shù)男阅?,表明在X-volution模塊中,近似效果良好,對(duì)硬件實(shí)現(xiàn)和計(jì)算更加友好。

3.3 語(yǔ)義分割

可以觀察到,作者提出的X-volution比其他算子的性能要好很多。其中,X-volution(SA)實(shí)現(xiàn)了41.1 box AP和37.2 mask AP。

4參考
[1].X-volution: On the Unification of Convolution and Self-attention.
5推薦閱讀

Transformer | 詳細(xì)解讀Transformer怎樣從零訓(xùn)練并超越ResNet?

YOLO |多域自適應(yīng)MSDA-YOLO解讀,惡劣天氣也看得見(附論文)

Transformer | 沒有Attention的Transformer依然是頂流?。?!

項(xiàng)目實(shí)踐 | 從零開始邊緣部署輕量化人臉檢測(cè)模型——EAIDK310部署篇

項(xiàng)目實(shí)踐 | 從零開始邊緣部署輕量化人臉檢測(cè)模型——訓(xùn)練篇
本文論文原文獲取方式,掃描下方二維碼
回復(fù)【X-volution】即可獲取項(xiàng)目代碼
長(zhǎng)按掃描下方二維碼添加小助手。
可以一起討論遇到的問題
聲明:轉(zhuǎn)載請(qǐng)說(shuō)明出處
掃描下方二維碼關(guān)注【集智書童】公眾號(hào),獲取更多實(shí)踐項(xiàng)目源碼和論文解讀,非常期待你我的相遇,讓我們以夢(mèng)為馬,砥礪前行!

