1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        超越卷積、自注意力機(jī)制:強(qiáng)大的神經(jīng)網(wǎng)絡(luò)新算子involution

        共 7325字,需瀏覽 15分鐘

         ·

        2021-03-26 20:08

        來源:機(jī)器之心
        作者:李鐸
        這篇工作主要是由我和SENet的作者胡杰一起完成的,也非常感謝HKUST的兩位導(dǎo)師 陳啟峰和張潼老師的討論和建議。
        本文是對(duì)我們CVPR 2021被接收的文章 Involution: Inverting the Inherence of Convolution for Visual Recognition的介紹,同時(shí)也分享一些我們對(duì)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)(CNN和Transformer)的理解。



        概要


        我們的貢獻(xiàn)點(diǎn)簡(jiǎn)單來講:


        (1)提出了一種新的神經(jīng)網(wǎng)絡(luò)算子(operator或op)稱為involution,它比convolution更輕量更高效,形式上比self-attention更加簡(jiǎn)潔,可以用在各種視覺任務(wù)的模型上取得精度和效率的雙重提升。


        (2)通過involution的結(jié)構(gòu)設(shè)計(jì),我們能夠以統(tǒng)一的視角來理解經(jīng)典的卷積操作和近來流行的自注意力操作。


        • 論文鏈接:https://arxiv.org/abs/2103.06255

        • 代碼和模型鏈接:https://github.com/d-li14/involution


        [Motivation] 與convolution的反對(duì)稱性

        這部分內(nèi)容主要來自原文Section 2,Section 3


        普通convolution的kernel享有空間不變性(spatial-agnostic)和通道特異性(channel-specific)兩大基本特性;而involution則恰恰相反,具有通道不變性(channel-agnostic)和空間特異性(spatial-specific)。

        convolution


        convolution kernel的大小寫作  ,其中  和  分別是輸出和輸入的通道數(shù)目,而  是kernel size,  一般不寫,代表在  個(gè)pixel上共享相同的kernel,即空間不變性,而每個(gè)通道C獨(dú)享對(duì)應(yīng)的kernel則稱為通道特異性。convolution的操作可以表達(dá)為:


        其中  是input tensor,  是output tensor,  是convolution kernel。

        下面我們分開來看卷積的兩大特性:

        • 空間不變性

        一方面,空間不變性帶來的優(yōu)點(diǎn)包括:1.參數(shù)共享,否則參數(shù)量激增至  ,2.平移等變性,也可以理解為在空間上對(duì)類似的pattern產(chǎn)生類似的響應(yīng),其不足之處也很明顯:提取出來的特征比較單一,不能根據(jù)輸入的不同靈活地調(diào)整卷積核的參數(shù)。

        另一方面,因?yàn)榫矸e操作的參數(shù)量和計(jì)算量中都存在  一項(xiàng),其中通道數(shù)量C往往是數(shù)百甚至數(shù)千,所以為了限制參數(shù)量和計(jì)算量的規(guī)模,K的取值往往較小。我們從VGGNet開始習(xí)慣沿用  大小的kernel,這限制了卷積操作一次性地捕捉長距離關(guān)系的能力,而需要依靠堆疊多個(gè)  大小的kernel,這對(duì)于感受野的建模在一定程度上不如直接使用大的卷積核更加有效。

        • 通道特異性

        之前已經(jīng)有一些研究低秩近似的工作認(rèn)為卷積核在通道維度是存在著冗余的,那么卷積核在通道維度的大小就可能可以有所縮減,而不會(huì)明顯影響表達(dá)能力。直觀地理解,我們把每個(gè)輸出通道對(duì)應(yīng)的卷積核鋪成一個(gè)  大小的矩陣,那么矩陣的秩不會(huì)超過  ,代表其中存在很多的kernel是近似線性相關(guān)的。

        involution


        基于以上分析我們提出了involution,它在設(shè)計(jì)上與convolution的特性相反,即在通道維度共享kernel,而在空間維度采用空間特異的kernel進(jìn)行更靈活的建模。involution kernel的大小為  ,其中  ,表示所有通道共享G個(gè)kernel。involution的操作表達(dá)為:


        其中  是involution kernel。

        在involution中,我們沒有像convolution一樣采用固定的weight matrix作為可學(xué)習(xí)的參數(shù),而是考慮基于輸入feature map生成對(duì)應(yīng)的involution kernel,從而確保kernel size和input feature size在空間維度上能夠自動(dòng)對(duì)齊。否則的話,例如在ImageNet上使用固定  大小的圖像作為輸入訓(xùn)練得到的權(quán)重,就無法遷移到輸入圖像尺寸更大的下游任務(wù)中(比如檢測(cè)、分割等)。involution kernel生成的通用形式如下:


        其中  是坐標(biāo)(i,j)鄰域的一個(gè)index集合,所以  表示feature map上包含  的某個(gè)patch。

        關(guān)于上述的kernel生成函數(shù)  ,可以有各種不同的設(shè)計(jì)方式,也值得大家去進(jìn)一步探索。我們從簡(jiǎn)單有效的設(shè)計(jì)理念出發(fā),提供了一種類似于SENet的bottleneck結(jié)構(gòu)來進(jìn)行實(shí)驗(yàn):  就取為  這個(gè)單點(diǎn)集,即  取為feature map上坐標(biāo)為(i, j)的單個(gè)pixel,從而得到了involution kernel生成的一種實(shí)例化


        其中  和  是線性變換矩陣,r是通道縮減比率,  是中間的BN和ReLU。

        注意設(shè)計(jì)不同的kernel生成函數(shù)可以得到involution不同的實(shí)例化:

        比如可以去探索更加精巧的設(shè)計(jì)來繼續(xù)發(fā)掘involution的潛力,另外通過采用特定的實(shí)例化方法也可以將其特例化成為self-attention的形式(見下節(jié))。

        在上述一種簡(jiǎn)單的involution kernel的實(shí)例化下,我們得到完整的involution的示意圖:


        針對(duì)輸入feature map的一個(gè)坐標(biāo)點(diǎn)上的特征向量,先通過  (FC-BN-ReLU-FC)和reshape (channel-to-space)變換展開成kernel的形狀,從而得到這個(gè)坐標(biāo)點(diǎn)上對(duì)應(yīng)的involution kernel,再和輸入feature map上這個(gè)坐標(biāo)點(diǎn)鄰域的特征向量進(jìn)行Multiply-Add得到最終輸出的feature map。具體操作流程和tensor形狀變化如下:


        其中  是坐標(biāo)(i,j)附近  的鄰域。單純基于PyTorch API簡(jiǎn)單的偽代碼實(shí)現(xiàn)如下:


        involution操作的參數(shù)量  ,計(jì)算量分為kernel generation和Multiply-Add (MAdd)兩部分  ,明顯低于普通convolution的參數(shù)量  和計(jì)算量  。

        反過頭來考慮和卷積已有的優(yōu)點(diǎn)的對(duì)比:

        1. 在通道上共享kernel(僅有G個(gè)kernel)允許我們?nèi)ナ褂么蟮目臻gspan(增加K),從而通過spatial維度的設(shè)計(jì)提升性能的同時(shí)保證了通過channel維度的設(shè)計(jì)維持效率(見ablation in Tab. 6a,6b),即使在不同空間位置不共享權(quán)重也不會(huì)引起參數(shù)量和計(jì)算量的顯著增長。

        2. 雖然我們沒有在空間上的每個(gè)pixel直接共享kernel參數(shù),但我們?cè)诟叩膶用嫔瞎蚕砹嗽獏?shù)(meta-weight,即指kernel生成函數(shù)的參數(shù)),所以仍然能夠在不同的空間位置上進(jìn)行knowledge的共享和遷移。作為對(duì)比,即使拋開參數(shù)量大漲的問題,如果將convolution在空間上共享kernel的限制完全放開,讓每個(gè)pixel自由地學(xué)習(xí)對(duì)應(yīng)的kernel參數(shù),則無法達(dá)到這樣的效果。


        總結(jié)起來,這種從convolution到involution的設(shè)計(jì)實(shí)際上是在微觀粒度(op level)對(duì)算力進(jìn)行了重新的調(diào)配,而網(wǎng)絡(luò)設(shè)計(jì)的本質(zhì)就是對(duì)算力的分配,目的是將有限的算力調(diào)整到最能發(fā)揮性能的位置。比如NAS則是在宏觀粒度上(network level)通過自動(dòng)搜索的手段對(duì)算力進(jìn)行了最優(yōu)配置。

        [Discussion] 與self-attention的相關(guān)性


        這部分內(nèi)容主要來自原文Section 4.2


        self-attention


        我們知道self-attention可以表達(dá)為(為了表達(dá)簡(jiǎn)略,省略了position encoding部分)

         ,

        其中  分別為輸入  線性變換后得到的query,key和value,H是multi-head self-attention中head的數(shù)目。下標(biāo)表示(i, j)和(p,q)對(duì)應(yīng)的pixel之間進(jìn)行query-key匹配,  表示query(i,j)對(duì)應(yīng)key的范圍,可能是  的local patch(local self-attention),也可能是  的full image(global self-attention)。

        我們進(jìn)一步把self-attention展開寫成


        對(duì)比involution的表達(dá)式,我們不難發(fā)現(xiàn)相似之處:

        • self-attention中不同的head對(duì)應(yīng)到involution中不同的group(在channel維度split)
        • self-attention中每個(gè)pixel的attention map  對(duì)應(yīng)到involution中每個(gè)pixel的kernel 

        如果involution的kernel生成函數(shù)選擇實(shí)例化為


        那么self-attention也是involution的某種實(shí)例化,因此我們發(fā)現(xiàn)involution是更加general的表達(dá)形式。

        另外  對(duì)應(yīng)于attention matrix multiplication前對(duì)  做的線性變換,self-attention操作后一般也會(huì)接另一個(gè)線性變換和殘差連接,這個(gè)結(jié)構(gòu)正好就對(duì)應(yīng)于我們用involution替換resnet bottleneck結(jié)構(gòu)中的  convolution,前后也有兩個(gè)  convolution做線性變換。

        這里再說一下position encoding的事情:

        因?yàn)閟elf-attention是permutation-invariant的,所以需要position encoding來區(qū)分位置信息,而在本文所實(shí)例化的involution單元中,生成的involution kernel中的每個(gè)元素本身就是按位置排序的,所以不需要額外的position信息。

        另外一些基于pure self-attention構(gòu)建backbone的工作(比如stand-alone self-attention,lambda networks)已經(jīng)注意到,僅僅使用position encoding而不是用query-key relation就能達(dá)到相當(dāng)可觀的性能,即attention map使用  而不是  (  是position encoding matrix)。而從我們involution的角度來看,這只不過是又換了一種kernel generation的形式來實(shí)例化involution。

        因此,我們重新思考self-attention在backbone網(wǎng)絡(luò)結(jié)構(gòu)中有效的本質(zhì)可能就是捕捉long-range and self-adaptive interactions,通俗點(diǎn)說是使用一個(gè)large and dynamic kernel,而這個(gè)kernel用query-key relation來構(gòu)建則并不是必要的。另一方面,因?yàn)槲覀兊膇nvolution kernel是單個(gè)pixel生成的,這個(gè)kernel不太適合擴(kuò)展到全圖來應(yīng)用,但在一個(gè)相對(duì)較大的鄰域內(nèi)應(yīng)用還是可行的(如  ,  ),這同時(shí)也說明了CNN設(shè)計(jì)中的locallity依然是寶藏,因?yàn)榧词褂胓lobal self-attention,網(wǎng)絡(luò)的淺層也很難真的利用到復(fù)雜的全局信息。

        所以我們所采用的involution去除了self-attention中很多復(fù)雜的東西,比如我們僅使用單個(gè)pixel的特征向量生成involution kernel(而不是依靠pixel-to-pixel correspondence生成attention map),在生成kernel時(shí)隱式地編碼了pixel的位置信息(丟棄了顯式的position encoding),從而構(gòu)建了一個(gè)非常干凈高效的op。

        Vision Transformer


        既然討論到了self-attention,就不得不提到最近很火的ViT類工作。針對(duì)backbone結(jié)構(gòu)來說,我們認(rèn)為pure self-attention或者involution model 優(yōu)于 CNN 優(yōu)于 ViT (transformer做decoder的可能有其他妙處,比如在DETR中,暫且按下不表。)

        ViT很多人也討論過了,底層的linear projection其實(shí)類似于convolution,高層用global self-attention抽取relation,可以抽象為convolution接self-attention的混合模型。這種混合結(jié)構(gòu)的提出本身是合理的,在低層用convolution提取low-level信息,在高層用self-attention建模高階的語義關(guān)系。

        可是ViT的底層的conv部分做的太不充分了,受制于self-attention爆炸的計(jì)算量,在輸入端直接把圖像切分成16x16的patch,輸入feature size基本上相當(dāng)于已經(jīng)到了深如resnet倒數(shù)第二個(gè)stage的feature size,網(wǎng)絡(luò)底層對(duì)于更細(xì)節(jié)的圖像信息利用的非常不到位,而中間處理階段也沒有feature size遞減的變換。

        因此ICLR'21上提出的ViT結(jié)構(gòu)設(shè)計(jì)本來就存在很不科學(xué)的地方,最近一些改進(jìn)ViT的工作基本上也可以總結(jié)為在ViT中加入更多的spatial維度細(xì)化的self-attention操作(patch局部化或再細(xì)分,引入convolution的特性),某種意義上是在把ViT變得更像pure self-attention/involution based model。

        因此,無論是convolution,self-attention還是新的involution都是message passing和feature aggregation的組合形式,盡管外表各異,本質(zhì)上沒有必要割裂開來看。

        實(shí)驗(yàn)結(jié)果


        總體來講:

        (1)參數(shù)量、計(jì)算量降低,性能反而提升
        (2)能加在各種模型的不同位置替換convolution,比如backbone,neck和head,一般來講替換的部分越多,模型性價(jià)比越高。

        ImageNet圖像分類



        我們使用involution替換ResNet bottleneck block中的  convolution得到了一族新的骨干網(wǎng)絡(luò)RedNet,性能和效率優(yōu)于ResNet和其他self-attention做op的SOTA模型。

        COCO目標(biāo)檢測(cè)和實(shí)例分割



        其中fully involution-based detectors(involution用在backbone,neck和head)在保證性能略有提升或不變的前提下,能夠?qū)⒂?jì)算復(fù)雜度減至  40%。

        Cityscapes語義分割



        值得一提的是,COCO檢測(cè)任務(wù)中針對(duì)大物體的指標(biāo)  提升最多(3%-4%),Cityscapes分割任務(wù)中也是大物體(比如墻,卡車,公交車等)的單類別IoU提升最明顯(高達(dá)10%甚至20%以上),這也驗(yàn)證了我們?cè)谥胺治鲋兴岬降膇nvolution相比于convolution在空間上具有動(dòng)態(tài)建模長距離關(guān)系的顯著優(yōu)勢(shì)。

        最后,這篇工作也留了一些坑供大家進(jìn)一步探索:

        1. 關(guān)于廣義的involution中kernel生成函數(shù)空間進(jìn)一步的探索;
        2. 類似于deformable convolution加入offest生成函數(shù),使得這個(gè)op空間建模能力的靈活性進(jìn)一步提升;
        3. 結(jié)合NAS的技術(shù)搜索convolution-involution混合結(jié)構(gòu)(原文Section 4.3);
        4. 我們?cè)谏衔恼撌隽藄elf-attention只是一種表達(dá)形式,但希望(self-)attention機(jī)制能夠啟發(fā)我們?cè)O(shè)計(jì)更好的視覺模型,類似地detection領(lǐng)域最近不少好的工作,也從DETR的架構(gòu)中獲益匪淺。

        希望2021年backbone網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)能有更本質(zhì),更多元的發(fā)展!

        作者簡(jiǎn)介

        李鐸,香港科技大學(xué)計(jì)算機(jī)系二年級(jí)研究生,本科畢業(yè)于清華大學(xué)計(jì)算機(jī)系,于 ICCV, CVPR, ECCV 等國際計(jì)算機(jī)視覺頂級(jí)會(huì)議發(fā)表論文 10 篇,曾在 Intel,NVIDIA,SenseTime,ByteDance 實(shí)習(xí),曾獲 2020 年度 CCF-CV 學(xué)術(shù)新銳獎(jiǎng),主頁 https://duoli.org

        ? THE END 

        瀏覽 45
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            成人免费无码淫片在线观看免费 | 久久久久久久久久国产 | 日本护士多人吞精囗交视频 | 性噜噜色噜噜 | 欧美猛交 A级 | 欧美18一20男同69gay | 好好操视频 | 国产日韩欧美一区二区三区真人 | 日本后进式猛烈xx00动态图 | 爱艹逼|