博客專欄

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

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

發(fā)布人:計(jì)算機(jī)視覺(jué)工坊 時(shí)間:2021-06-27 來(lái)源:工程師 發(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ì)算量加大,為部署帶來(lái)更大的挑戰(zhàn)。由此提出了CondConv,它針對(duì)每個(gè)batch中的每一個(gè)輸入樣本得到定制化的卷積核,在提高模型容量同時(shí)還能夠保持高效的推理速度。

25.png

Conditionally Parameterized Convolutions

原理

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

特性

CondConv通過(guò)增加內(nèi)核生成函數(shù)的大小和復(fù)雜性,利用樣本之間的關(guān)系改善了模型性能,它為提高模型容量同時(shí)保持有效推理提供了一種新的思路。由于僅增加了一個(gè)權(quán)重向量用于表示卷積核線性組合,因此增加的復(fù)雜度比添加其他卷積或擴(kuò)展現(xiàn)有卷積要少得多。CondConv層可以代替網(wǎng)絡(luò)中的任何卷積層使用來(lái)提高網(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)卷積通過(guò)融合注意力機(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)以此來(lái)簡(jiǎn)化注意力模型的學(xué)習(xí)。其次,在訓(xùn)練初期限制注意力接近均勻分布有利于多個(gè)卷積核的共同學(xué)習(xí),提出了利用Temperature annealing來(lái)提升模型的準(zhǔn)確性。

28.png

內(nèi)存計(jì)算開(kāi)銷(xiāo)

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

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

背景

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

29.png

Ghost Convolution

原理

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

特性

卷積神經(jīng)網(wǎng)絡(luò)中主要的參數(shù)量和計(jì)算量來(lái)自于卷積結(jié)構(gòu),利用卷積可以生成新的特征圖,然而并不是所有的特征圖都是不一樣的。經(jīng)過(guò)可視化分析可以發(fā)現(xiàn)存在著很多高度相似的特征圖,而這些特征圖并沒(méi)有必要去用卷積獲取,而是可以通過(guò)簡(jiǎn)單的線性操作來(lái)替代,從而以更小的參數(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)換過(guò)程,通過(guò)內(nèi)部通信顯著擴(kuò)展了每個(gè)卷積層的感受野,從而豐富了輸出功能。特別是,與使用小卷積核融合空間和通道方向信息的標(biāo)準(zhǔn)卷積不同,自校準(zhǔn)卷積能夠圍繞每個(gè)空間位置自適應(yīng)地建立長(zhǎng)距離空間和通道間依賴性的校準(zhǔn)操作。因此,它可以通過(guò)顯式合并更豐富的信息來(lái)幫助CNNs生成更多辨識(shí)性表示。

30.png

Self-Calibrated Convolution

原理

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

特性

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

不同于普通卷積同時(shí)融合空間和通道信息,自校正卷積可以通過(guò)自校正操作自適應(yīng)地在每個(gè)空間位置周?chē)⑦h(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ī)視覺(jué)領(lǐng)域的很多任務(wù)中,增加非線性層的數(shù)量,能夠有效地增加網(wǎng)絡(luò)的表達(dá)能力,從而提高網(wǎng)絡(luò)的性能。然而,很少有人考慮只增加線性層,只增加線性層會(huì)造成過(guò)擬合現(xiàn)象,因?yàn)槎鄠€(gè)連續(xù)的線性層可以被一個(gè)線性層替代,而使用一個(gè)線性層參數(shù)更少。因此,作者通過(guò)在普通卷積層中加入額外的逐深度卷積,構(gòu)成一個(gè)過(guò)參數(shù)化的卷積層,并將其命名為DO-Conv。

31.png

DO-Conv

原理

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

特性

DO-Conv是一種over-parameterized的卷積層,通過(guò)簡(jiǎn)單的對(duì)深度卷積和傳統(tǒng)卷積以一定方式組合,代替CNN的普通卷積層,便可以大幅提高CNN的性能。DO-Conv非常方便易用,除了改善了現(xiàn)有CNN的訓(xùn)練速度和最終準(zhǔn)確度之外,更無(wú)需在模型推理階段引入額外的計(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ī)視覺(jué)任務(wù)的性能,需要修改以使其對(duì)特定任務(wù)更加有效。例如,某些方法添加了金字塔模塊或引入了遠(yuǎn)程連接或使用跨通道特征圖注意力。雖然這些方法確實(shí)可以提高某些任務(wù)的學(xué)習(xí)性能,但由此而提出了一個(gè)問(wèn)題,即是否可以創(chuàng)建具有通用改進(jìn)功能表示的通用骨干網(wǎng),從而同時(shí)提高跨多個(gè)任務(wù)的性能?跨通道信息在下游應(yīng)用中已被成功使用 ,而最近的圖像分類網(wǎng)絡(luò)更多地關(guān)注組或深度卷積。盡管它們?cè)诜诸惾蝿?wù)中具有出色的計(jì)算能力和準(zhǔn)確性,但是這些模型無(wú)法很好地轉(zhuǎn)移到其他任務(wù),因?yàn)樗鼈兊墓铝⒈硎緹o(wú)法捕獲跨通道之間的關(guān)系。因此,作者提出了ResNeSt block來(lái)進(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ì)所有卷積過(guò)后的基特征進(jìn)行融合,隨后利用SE的操作來(lái)獲取注意力權(quán)重;緊接著將學(xué)習(xí)到的權(quán)重疊加回各組基特征,以實(shí)現(xiàn)強(qiáng)化和抑制的作用,然后對(duì)所有基特征進(jìn)行融合(Add);最后,結(jié)合殘差的思想將各個(gè)組的輸出共同連接起來(lái)作為RexNeSt模塊的輸出。

特性

與現(xiàn)有的ResNet變體相比,ResNeSt不需要增加額外的計(jì)算量,同時(shí)也可以作為其它任務(wù)的骨架。利用ResNeSt主干的模型能夠在圖像分類、目標(biāo)檢測(cè)、實(shí)例分割和語(yǔ)義分割這幾個(gè)任務(wù)上達(dá)到最先進(jìn)的性能。與通過(guò)神經(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è)主要問(wèn)題:空間維度上剝奪了卷積核捕獲不同空間位置的多種特征表示能力;通道維度上卷積內(nèi)部的通道間會(huì)有冗余。

33.png

Involution

原理

生成內(nèi)卷核

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

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

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

特性

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

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

建模上下文

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

共享內(nèi)卷核

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

總結(jié)

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

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

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

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