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

        共 7536字,需瀏覽 16分鐘

         ·

        2021-04-03 23:47

        點(diǎn)擊上方“程序員大白”,選擇“星標(biāo)”公眾號

        重磅干貨,第一時(shí)間送達(dá)

        作者|李鐸

         來源|機(jī)器之心


        這篇工作主要是由我和 SENet 的作者胡杰一起完成的,也非常感謝 HKUST 的兩位導(dǎo)師陳啟峰和張潼老師的討論和建議。


        本文是對我們CVPR 2021被接收的文章 Involution: Inverting the Inherence of Convolution for Visual Recognition的介紹,同時(shí)也分享一些我們對網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)(CNN和Transformer)的理解。




        概要


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


        1. 提出了一種新的神經(jīng)網(wǎng)絡(luò)算子(operator或op)稱為involution,它比convolution更輕量更高效,形式上比self-attention更加簡潔,可以用在各種視覺任務(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的反對稱性

        這部分內(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ú)享對應(yīng)的kernel則稱為通道特異性。convolution的操作可以表達(dá)為:


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

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

        • 空間不變性

        一方面,空間不變性帶來的優(yōu)點(diǎn)包括:1.參數(shù)共享,否則參數(shù)量激增至  ,2.平移等變性,也可以理解為在空間上對類似的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,這對于感受野的建模在一定程度上不如直接使用大的卷積核更加有效。

        • 通道特異性

        之前已經(jīng)有一些研究低秩近似的工作認(rèn)為卷積核在通道維度是存在著冗余的,那么卷積核在通道維度的大小就可能可以有所縮減,而不會(huì)明顯影響表達(dá)能力。直觀地理解,我們把每個(gè)輸出通道對應(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生成對應(yīng)的involution kernel,從而確保kernel size和input feature size在空間維度上能夠自動(dòng)對齊。否則的話,例如在ImageNet上使用固定  大小的圖像作為輸入訓(xùn)練得到的權(quán)重,就無法遷移到輸入圖像尺寸更大的下游任務(wù)中(比如檢測、分割等)。involution kernel生成的通用形式如下:


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

        關(guān)于上述的kernel生成函數(shù)  ,可以有各種不同的設(shè)計(jì)方式,也值得大家去進(jì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é))。

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


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


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


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

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

        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ù),但我們在更高的層面上共享了元參數(shù)(meta-weight,即指kernel生成函數(shù)的參數(shù)),所以仍然能夠在不同的空間位置上進(jìn)行knowledge的共享和遷移。作為對比,即使拋開參數(shù)量大漲的問題,如果將convolution在空間上共享kernel的限制完全放開,讓每個(gè)pixel自由地學(xué)習(xí)對應(yīng)的kernel參數(shù),則無法達(dá)到這樣的效果。


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

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


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


        self-attention


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

         ,

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

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


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

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

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


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

        另外  對應(yīng)于attention matrix multiplication前對  做的線性變換,self-attention操作后一般也會(huì)接另一個(gè)線性變換和殘差連接,這個(gè)結(jié)構(gòu)正好就對應(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è)相對較大的鄰域內(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類工作。針對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ò)底層對于更細(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)檢測和實(shí)例分割



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

        Cityscapes語義分割



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

        最后,這篇工作也留了一些坑供大家進(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. 我們在上文論述了self-attention只是一種表達(dá)形式,但希望(self-)attention機(jī)制能夠啟發(fā)我們設(shè)計(jì)更好的視覺模型,類似地detection領(lǐng)域最近不少好的工作,也從DETR的架構(gòu)中獲益匪淺。

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

        作者簡介

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

        國產(chǎn)小眾瀏覽器因屏蔽視頻廣告,被索賠100萬(后續(xù))

        年輕人“不講武德”:因看黃片上癮,把網(wǎng)站和786名女主播起訴了

        中國聯(lián)通官網(wǎng)被發(fā)現(xiàn)含木馬腳本,可向用戶推廣色情APP

        張一鳴:每個(gè)逆襲的年輕人,都具備的底層能力


        關(guān)


        學(xué),西學(xué)學(xué)運(yùn)護(hù),質(zhì)結(jié)關(guān)[]學(xué)習(xí)進(jìn)!


        瀏覽 32
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

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

        手機(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>
            性中国少妇videofreesexwww | 一级片在线免费视频 | 97超碰在线精品 | 免费国产黄网站在线观看动图 | av天堂首页 | 成人无码av免费观看 | 小浪货都湿透了痒 | 91午夜精品一区二区三区 | 成人性教育无码免费视频 | 国产一二三区精品 |