• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 博客專欄

    EEPW首頁(yè) > 博客 > 一文看盡深度學(xué)習(xí)中的20種卷積(3)

    一文看盡深度學(xué)習(xí)中的20種卷積(3)

    發(fā)布人:計(jì)算機(jī)視覺工坊 時(shí)間:2021-06-27 來源:工程師 發(fā)布文章

    CondConv

    論文:《CondConv: Conditionally Parameterized Convolutions for Efficient Inference》[28] (Accepted by NIPS 2019)

    代碼:https://github.com/CVHuber/Convolution/blob/main/Conditionally%20Parameterized%20Convolutions.py

    講解:https://mp.weixin.qq.com/s/bWUrhXfcqiqG4zC_xv_XqA

    背景

    普通卷積對(duì)所有樣本都采用相同的卷積核參數(shù),這就導(dǎo)致為了提升模型容量,就需要增加模型的參數(shù)。因此提高網(wǎng)絡(luò)深度,增加通道數(shù)是一種常用的做法,但這會(huì)進(jìn)一步導(dǎo)致模型的計(jì)算量加大,為部署帶來更大的挑戰(zhàn)。由此提出了CondConv,它針對(duì)每個(gè)batch中的每一個(gè)輸入樣本得到定制化的卷積核,在提高模型容量同時(shí)還能夠保持高效的推理速度。

    25.png

    Conditionally Parameterized Convolutions

    原理

    在常規(guī)卷積中,卷積核參數(shù)一旦經(jīng)過訓(xùn)練確定以后,無論輸入什么樣本進(jìn)行測(cè)試,都會(huì)利用固定的參數(shù)取提取特征。而CondConv中,卷積核參數(shù)可以針對(duì)輸入樣本進(jìn)行動(dòng)態(tài)變換。其次,常規(guī)卷積的容量提升依賴于卷積核尺寸和通道數(shù)的增加。而CondConv中只需要在執(zhí)行卷積計(jì)算之前通過多個(gè)expert對(duì)輸入樣本計(jì)算加權(quán)卷積核即可。CondConv本質(zhì)上等價(jià)于多個(gè)靜態(tài)卷積的線性組合。

    特性

    CondConv通過增加內(nèi)核生成函數(shù)的大小和復(fù)雜性,利用樣本之間的關(guān)系改善了模型性能,它為提高模型容量同時(shí)保持有效推理提供了一種新的思路。由于僅增加了一個(gè)權(quán)重向量用于表示卷積核線性組合,因此增加的復(fù)雜度比添加其他卷積或擴(kuò)展現(xiàn)有卷積要少得多。CondConv層可以代替網(wǎng)絡(luò)中的任何卷積層使用來提高網(wǎng)絡(luò)的性能,實(shí)現(xiàn)即插即用。同時(shí),也可以輕松的擴(kuò)展到網(wǎng)絡(luò)層中其它的線性函數(shù)上,例如全連接層中的線性函數(shù),提供了一個(gè)改進(jìn)的思路。

    DynamicConv

    論文:《Dynamic Convolution: Attention over Convolution Kernels》[29] (Accepted by CVPR 2020)

    代碼:https://github.com/CVHuber/Convolution/blob/main/Dynamic%20Convolution.py

    講解:https://mp.weixin.qq.com/s/zyhZvQXBoadA1m762s2B9g

    背景

    輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)能夠在較低的計(jì)算預(yù)算下運(yùn)行,卻也犧牲了模型性能和表達(dá)能力。為此提出了動(dòng)態(tài)卷積,與傳統(tǒng)的靜態(tài)卷積(每層單個(gè)卷積核)相比,根據(jù)注意力動(dòng)態(tài)疊加多個(gè)卷積核不僅顯著提升了表達(dá)能力,額外的計(jì)算成本也很小,因而對(duì)高效的 CNN 更加友好,同時(shí)可以容易地整合入現(xiàn)有 CNN 架構(gòu)中。

    26.png

    Dynamic Convolution

    原理

    動(dòng)態(tài)卷積的原理根據(jù)輸入圖像,自適應(yīng)的調(diào)整卷積的參數(shù)。如上圖所示,靜態(tài)的卷積核對(duì)于不同的輸入均作同樣的處理,而動(dòng)態(tài)的卷積核則會(huì)根據(jù)輸入的不同針對(duì)性地利用不同的卷積核選擇合適的卷積的參數(shù)去進(jìn)行特征的提取。

    特性

    權(quán)重自適應(yīng)

    動(dòng)態(tài)卷積通過融合注意力機(jī)制動(dòng)態(tài)地聚合多個(gè)并行的卷積核。首先對(duì)輸入進(jìn)行一次注意力操作然后得到每個(gè)卷積核的權(quán)重,將學(xué)習(xí)到的權(quán)重疊加到不同的卷積核上以實(shí)現(xiàn)卷積核的動(dòng)態(tài)選取。

    27.png

    訓(xùn)練方式

    動(dòng)態(tài)卷積的一個(gè)訓(xùn)練難點(diǎn)在于隨著網(wǎng)絡(luò)深度的加深,如何協(xié)調(diào)多個(gè)卷積核和注意力模型之間的共同學(xué)習(xí)。作者指出需要限制注意力的取值(令權(quán)重和為1)以此來簡(jiǎn)化注意力模型的學(xué)習(xí)。其次,在訓(xùn)練初期限制注意力接近均勻分布有利于多個(gè)卷積核的共同學(xué)習(xí),提出了利用Temperature annealing來提升模型的準(zhǔn)確性。

    28.png

    內(nèi)存計(jì)算開銷

    動(dòng)態(tài)卷積主要包含兩部分開銷:注意力計(jì)算以及卷積核的疊加。其中注意力機(jī)制是由GAP和兩個(gè)FC層組成的,計(jì)算復(fù)雜度低。而疊加的多個(gè)卷積核由于內(nèi)核尺寸較小,計(jì)算復(fù)雜度也不高。因此,整體來說動(dòng)態(tài)卷積僅引入了少量額外的計(jì)算開銷卻顯著增加了特征表達(dá)能力。然而,由于采用多個(gè)卷積核并行的方式,必然會(huì)極大的增大內(nèi)存開銷。

    Ghost Block

    論文:《GhostNet: More Features from Cheap Operations》[30] (Accepted by CVPR 2020)

    代碼:https://github.com/CVHuber/Convolution/blob/main/Ghost%20Convolution.py

    講解:https://mp.weixin.qq.com/s/TBJ7XeBNZYpUpE7kPFEvsA

    背景

    眾所周知,通過堆疊卷積層可以捕獲豐富的特征信息,其中也包含了冗余信息,這有利于網(wǎng)絡(luò)對(duì)數(shù)據(jù)有更全面的理解。因此,可以通過常規(guī)卷積操作提取豐富的特征信息,對(duì)于冗余的特征信息,則利用更價(jià)廉的線性變換操作來生成,這樣不僅能夠有效地降低模型所需計(jì)算資源,同時(shí)設(shè)計(jì)簡(jiǎn)單、易于實(shí)現(xiàn),可以即插即用。

    29.png

    Ghost Convolution

    原理

    幻影卷積的核心思想是利用簡(jiǎn)單廉價(jià)的線性變化來等效的生成我們所需要的特征圖,而無需利用多余的濾波器生成,以此來提高網(wǎng)絡(luò)的計(jì)算效率。

    特性

    卷積神經(jīng)網(wǎng)絡(luò)中主要的參數(shù)量和計(jì)算量來自于卷積結(jié)構(gòu),利用卷積可以生成新的特征圖,然而并不是所有的特征圖都是不一樣的。經(jīng)過可視化分析可以發(fā)現(xiàn)存在著很多高度相似的特征圖,而這些特征圖并沒有必要去用卷積獲取,而是可以通過簡(jiǎn)單的線性操作來替代,從而以更小的參數(shù)量和計(jì)算量換取差不多的精度。Ghost模塊使用了分組卷積作為更價(jià)廉的線性變換。分組卷積方式消除了通道間的相關(guān)性,使得當(dāng)前通道特征僅與自己相關(guān),一方面模擬冗余特征的生成方式,另一方面顯著減低的參數(shù)量和計(jì)算量。

    SCConv

    論文:《Improving Convolutional Networks with Self-Calibrated Convolutions》[31] (Accepted by CVPR 2020)

    代碼:https://github.com/CVHuber/Convolution/blob/main/Self-Calibrated%20Convolution.py

    背景

    CNNs的最新進(jìn)展主要致力于設(shè)計(jì)更復(fù)雜的體系結(jié)構(gòu),以增強(qiáng)其表示學(xué)習(xí)能力。自校正卷積可以在不調(diào)整模型架構(gòu)的情況下改進(jìn)CNNs的基本卷積特征轉(zhuǎn)換過程,通過內(nèi)部通信顯著擴(kuò)展了每個(gè)卷積層的感受野,從而豐富了輸出功能。特別是,與使用小卷積核融合空間和通道方向信息的標(biāo)準(zhǔn)卷積不同,自校準(zhǔn)卷積能夠圍繞每個(gè)空間位置自適應(yīng)地建立長(zhǎng)距離空間和通道間依賴性的校準(zhǔn)操作。因此,它可以通過顯式合并更豐富的信息來幫助CNNs生成更多辨識(shí)性表示。

    30.png

    Self-Calibrated Convolution

    原理

    自校正卷積其核心思想是考慮在不調(diào)整模型架構(gòu)的情況下改進(jìn)CNNs的基本卷積特征轉(zhuǎn)換過程。本質(zhì)上是一種用于多尺度特征提取的分組卷積,并按通道維度均分為兩組。其中一條通路用于常規(guī)的卷積提取特征,另一條通路則是利用下采樣操作來增大網(wǎng)絡(luò)的感受野。最終使得每個(gè)空間位置都可以通過融合來自兩個(gè)不同空間尺度的信息來實(shí)現(xiàn)自校準(zhǔn)的操作。

    特性

    增強(qiáng)特征表達(dá)能力

    不同于普通卷積同時(shí)融合空間和通道信息,自校正卷積可以通過自校正操作自適應(yīng)地在每個(gè)空間位置周圍建立遠(yuǎn)距離空間和通道的依賴關(guān)系,從而生成更具判別力的特征,提取更加豐富的上下文信息。

    即插即用

    自校正卷積設(shè)計(jì)簡(jiǎn)單且通用,可以輕松嵌入到任意的CNN架構(gòu)中增強(qiáng)卷積層提取特征的能力,而不會(huì)引入額外的參數(shù),但不可避免的會(huì)增大網(wǎng)絡(luò)的計(jì)算量。

    DO-Conv

    論文:DO-Conv[32]

    代碼:https://github.com/yangyanli/DO-Conv

    講解:https://mp.weixin.qq.com/s/fuXYD6EhpoAKxyUJ8xigqg

    背景

    CNNs應(yīng)用于計(jì)算機(jī)視覺領(lǐng)域的很多任務(wù)中,增加非線性層的數(shù)量,能夠有效地增加網(wǎng)絡(luò)的表達(dá)能力,從而提高網(wǎng)絡(luò)的性能。然而,很少有人考慮只增加線性層,只增加線性層會(huì)造成過擬合現(xiàn)象,因?yàn)槎鄠€(gè)連續(xù)的線性層可以被一個(gè)線性層替代,而使用一個(gè)線性層參數(shù)更少。因此,作者通過在普通卷積層中加入額外的逐深度卷積,構(gòu)成一個(gè)過參數(shù)化的卷積層,并將其命名為DO-Conv。

    31.png

    DO-Conv

    原理

    DO-Conv是深度卷積核普通卷積的組合,其計(jì)算過程可分為兩部分。先對(duì)輸入特征使用逐深度卷積運(yùn)算。最后再對(duì)輸出的中間結(jié)果使用常規(guī)卷積運(yùn)算。具體計(jì)算過程可參考論文講解部分。

    特性

    DO-Conv是一種over-parameterized的卷積層,通過簡(jiǎn)單的對(duì)深度卷積和傳統(tǒng)卷積以一定方式組合,代替CNN的普通卷積層,便可以大幅提高CNN的性能。DO-Conv非常方便易用,除了改善了現(xiàn)有CNN的訓(xùn)練速度和最終準(zhǔn)確度之外,更無需在模型推理階段引入額外的計(jì)算。

    ResNeSt Block

    論文:《ResNeSt: Split-Attention Networks》[33]

    代碼:https://github.com/CVHuber/Convolution/blob/main/ResNeSt%20Block.py

    背景

    ResNet等一些基礎(chǔ)卷積神經(jīng)網(wǎng)絡(luò)是針對(duì)于圖像分類而設(shè)計(jì)的。由于有限的感受野大小以及缺乏跨通道之間的相互作用,這些網(wǎng)絡(luò)可能不適合于其它的一些領(lǐng)域像目標(biāo)檢測(cè)、圖像分割等。這意味著要提高給定計(jì)算機(jī)視覺任務(wù)的性能,需要修改以使其對(duì)特定任務(wù)更加有效。例如,某些方法添加了金字塔模塊或引入了遠(yuǎn)程連接或使用跨通道特征圖注意力。雖然這些方法確實(shí)可以提高某些任務(wù)的學(xué)習(xí)性能,但由此而提出了一個(gè)問題,即是否可以創(chuàng)建具有通用改進(jìn)功能表示的通用骨干網(wǎng),從而同時(shí)提高跨多個(gè)任務(wù)的性能?跨通道信息在下游應(yīng)用中已被成功使用 ,而最近的圖像分類網(wǎng)絡(luò)更多地關(guān)注組或深度卷積。盡管它們?cè)诜诸惾蝿?wù)中具有出色的計(jì)算能力和準(zhǔn)確性,但是這些模型無法很好地轉(zhuǎn)移到其他任務(wù),因?yàn)樗鼈兊墓铝⒈硎緹o法捕獲跨通道之間的關(guān)系。因此,作者提出了ResNeSt block來進(jìn)行跨通道的學(xué)習(xí)。

    32.pngResNeSt Block

    原理

    ResNeSt首先是基于ResNeXt,將輸入特征圖劃分為k個(gè)組(Cardinal Groups),然后對(duì)每個(gè)Cardinal Group結(jié)SK的思想又劃分為r個(gè)基(Radix),每個(gè)基中又結(jié)合了SE的思想。每個(gè)Cardinal Groups的操作保持一致,先對(duì)組內(nèi)的各個(gè)基特征進(jìn)行一個(gè)1×1+3×3的組合,以壓縮通道并進(jìn)行卷積提取;其次,對(duì)所有卷積過后的基特征進(jìn)行融合,隨后利用SE的操作來獲取注意力權(quán)重;緊接著將學(xué)習(xí)到的權(quán)重疊加回各組基特征,以實(shí)現(xiàn)強(qiáng)化和抑制的作用,然后對(duì)所有基特征進(jìn)行融合(Add);最后,結(jié)合殘差的思想將各個(gè)組的輸出共同連接起來作為RexNeSt模塊的輸出。

    特性

    與現(xiàn)有的ResNet變體相比,ResNeSt不需要增加額外的計(jì)算量,同時(shí)也可以作為其它任務(wù)的骨架。利用ResNeSt主干的模型能夠在圖像分類、目標(biāo)檢測(cè)、實(shí)例分割和語(yǔ)義分割這幾個(gè)任務(wù)上達(dá)到最先進(jìn)的性能。與通過神經(jīng)架構(gòu)搜索生成的最新CNNs模型相比,所提出的ResNeSt性能優(yōu)于所有現(xiàn)有ResNet變體,并且具有相同的計(jì)算效率,甚至可以實(shí)現(xiàn)更好的速度精度折衷。

    內(nèi)卷(Involution)

    論文:《Involution: Inverting the Inherence of Convolution for Visual Recognition》[34] (Accepted by CVPR 2021)

    代碼:https://github.com/CVHuber/Convolution/blob/main/Involution.py

    講解:https://mp.weixin.qq.com/s/Y-hXabMclEcDfvLcxvpKdA

    背景

    與經(jīng)典的圖像濾波方法類似,卷積核具有兩個(gè)顯著的特性:空間不變性(Spatial-agnostic)和通道特異性(Channel-specific)。前者保證了不同空間區(qū)域之間權(quán)值共享,實(shí)現(xiàn)了平移不變性;后者負(fù)責(zé)將特征信息編碼到不同的通道中,增強(qiáng)了特征表達(dá)。雖然這兩種特性能夠提升對(duì)于圖像數(shù)據(jù)的學(xué)習(xí)效率,但是還存在以下兩個(gè)主要問題:空間維度上剝奪了卷積核捕獲不同空間位置的多種特征表示能力;通道維度上卷積內(nèi)部的通道間會(huì)有冗余。

    33.png

    Involution

    原理

    生成內(nèi)卷核

    選取某個(gè)空間位置的所有通道像素(紅色長(zhǎng)方形),通過變換函數(shù)并展開獲得內(nèi)卷核(K×K×1)。

    計(jì)算內(nèi)卷積

    進(jìn)行乘和操作,即先把內(nèi)卷核拉成K×K×C,與對(duì)應(yīng)位置相乘,再將K×K個(gè)1×1×C相加,代替原來位置的像素,完成內(nèi)卷積計(jì)算。

    特性

    權(quán)重自適應(yīng)

    通過將權(quán)重自適應(yīng)地分配到不同的位置,對(duì)不同信息量的特征進(jìn)行優(yōu)先級(jí)排序。(常規(guī)卷積對(duì)于不同的位置,都是應(yīng)用一樣權(quán)重)

    建模上下文

    在更廣闊的空間中聚合上下文,從而克服對(duì)遠(yuǎn)距離依賴建模的困難。(常規(guī)卷積通常使用小卷積核,感受野有限)

    共享內(nèi)卷核

    通過共享內(nèi)卷核,可以減少卷積核的冗余信息。

    總結(jié)

    大多數(shù)的卷積結(jié)構(gòu)都是在精度-參數(shù)量-計(jì)算量這三個(gè)維度上進(jìn)行不同的側(cè)重取舍。兩個(gè)矛盾:

    追求計(jì)算效率的卷積結(jié)構(gòu)由于計(jì)算預(yù)算較低,無論是限制卷積層的深度,還是限制了卷積的寬度,不可避免地會(huì)導(dǎo)致性能的下降。

    追求精度提升的卷積結(jié)構(gòu)由于其引入過多的卷積運(yùn)算或其他額外的操作(如注意力),勢(shì)必會(huì)增大內(nèi)存或計(jì)算開銷,從而影響模型的容量和整體的訓(xùn)練或推理速度。

    一個(gè)設(shè)計(jì)的原則就是我們?nèi)绾卧诓辉黾宇~外參數(shù)量的情況下,盡可能利用有效的信息或者從降低冗余空間信息的角度出發(fā),來提高模型的計(jì)算效率和卷積提取特征的能力。不知道大家看出來了沒有,其實(shí)大多數(shù)的結(jié)構(gòu)都是基于 Split-Transform-Merge 的架構(gòu)進(jìn)行改造的。Split指的是分組,可以按需要?jiǎng)澐譃镹組,N=1,2,3...。然后對(duì)每一組做一個(gè)Transform,即轉(zhuǎn)換,這里可以是利用門控/注意力機(jī)制去增強(qiáng),也可以是利用池化等操作去擴(kuò)大感受野,亦或是其他操作等等。最后再利用某種機(jī)制(如殘差)將多組結(jié)果合并起來作為輸出。可以看出,大多數(shù)卷積都是基于STM架構(gòu)針對(duì)每個(gè)環(huán)節(jié)進(jìn)行設(shè)(魔)計(jì)(改)。

    關(guān)于更多的卷積源碼現(xiàn)已整理歸檔,有興趣的讀者可以自行進(jìn)行到github庫(kù)下載,后面有更優(yōu)秀的卷積變體也會(huì)持續(xù)更新。【代碼鏈接:https://github.com/CVHuber/Convolution,歡迎Star!】

    *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



    關(guān)鍵詞: 深度學(xué)習(xí)

    相關(guān)推薦

    技術(shù)專區(qū)

    關(guān)閉
    主站蜘蛛池模板: 宣恩县| 武陟县| 朔州市| 文山县| 清远市| 京山县| 苍山县| 厦门市| 卢湾区| 大化| 佛坪县| 房山区| 镇江市| 张家港市| 遂昌县| 宜丰县| 依安县| 郑州市| 杭州市| 万源市| 泾阳县| 肇源县| 綦江县| 布拖县| 亚东县| 沈阳市| 广灵县| 武平县| 呼玛县| 鄂伦春自治旗| 甘南县| 九寨沟县| 蒙山县| 卢氏县| 唐山市| 靖安县| 鄱阳县| 小金县| 汤原县| 沾益县| 松潘县|