一文看盡深度學(xué)習中的20種卷積(1)
以下文章來(lái)源于CVHub ,作者派派星
引言
卷積,是卷積神經(jīng)網(wǎng)絡(luò )中最重要的組件之一。不同的卷積結構有著(zhù)不一樣的功能,但本質(zhì)上都是用于提取特征。比如,在傳統圖像處理中,人們通過(guò)設定不同的算子來(lái)提取諸如邊緣、水平、垂直等固定的特征。而在卷積神經(jīng)網(wǎng)絡(luò )中,僅需要隨機初始化一個(gè)固定卷積核大小的濾波器,并通過(guò)諸如反向傳播的技術(shù)來(lái)實(shí)現卷積核參數的自動(dòng)更新即可。其中,淺層的濾波器對諸如點(diǎn)、線(xiàn)、面等底層特征比較敏感,深層的濾波器則可以用于提取更加抽象的高級語(yǔ)義特征,以完成從低級特征到高級特征的映射。本文將從背景、原理、特性及改進(jìn)四個(gè)維度分別梳理10篇影響力深遠的經(jīng)典卷積模塊以及10篇具有代表性的卷積變體,使讀者對卷積的發(fā)展脈絡(luò )有一個(gè)更加清晰的認知。
【經(jīng)典卷積系列】
原始卷積 (Vanilla Convolution)
組卷積 (Group convolution)
轉置卷積 (Transposed Convolution)
1×1卷積 (1×1 Convolution)
空洞卷積 (Atrous convolution)
深度可分離卷積 (Depthwise Separable Convolution)
可變形卷積 (Deformable convolution)
空間可分離卷積 (Spatially Separable Convolution)
圖卷積 (Graph Convolution)
植入塊 (Inception Block)
【卷積變體系列】
非對稱(chēng)卷積(Asymmetric Convolution)
八度卷積(Octave Convolution)
異構卷積(Heterogeneous Convolution)
條件參數化卷積(Conditionally Parameterized Convolutions)
動(dòng)態(tài)卷積(Dynamic Convolution)
幻影卷積(Ghost Convolution)
自校正卷積(Self-Calibrated Convolution)
逐深度過(guò)參數化卷積(Depthwise Over-parameterized Convolution)
分離注意力模塊(ResNeSt Block)
內卷(Involution)
VanillaConv
講解:https://mp.weixin.qq.com/s/LOQLOF67Z9r0UOXCPes9_Q
背景
CNNs中的卷積,也稱(chēng)為濾波器,是由一組具有固定窗口大小且帶可學(xué)習參數(learnable paramerters)的卷積核所組成,可用于提取特征。
原理
如下圖所示,卷積的過(guò)程是通過(guò)滑動(dòng)窗口從上到下,從左到右對輸入特征圖進(jìn)行遍歷,每次遍歷的結果為相應位置元素的加權求和:
Vanilla Convolution
特性
稀疏連接(sparse connectivity)
傳統的神經(jīng)網(wǎng)絡(luò )層使用矩陣乘法,由一個(gè)參數矩陣和一個(gè)單獨的參數描述每個(gè)輸入和每個(gè)輸出之間的交互,即每個(gè)輸出單元與每個(gè)輸入單元進(jìn)行密集交互。
然而,卷積網(wǎng)絡(luò )具有稀疏交互作用,有時(shí)也稱(chēng)為稀疏連接或稀疏權值。
總的來(lái)說(shuō),使用稀疏連接方式可以使網(wǎng)絡(luò )儲存更少的參數,降低模型的內存要求,同時(shí)提高計算效率。
權值共享(shared weights)
在傳統的神經(jīng)網(wǎng)絡(luò )中,每個(gè)元素都使用一個(gè)對應的參數(權重)進(jìn)行學(xué)習。但是,在CNNs中卷積核參數是共享的。權值共享,也稱(chēng)為參數共享,是指在計算圖層的輸出時(shí)多次使用相同的參數進(jìn)行卷積運算。
平移不變性(translation invariant)
CNNs中的平移不變性指的是當圖像中的目標發(fā)生偏移時(shí)網(wǎng)絡(luò )仍然能夠輸出同源圖像一致的結果。對于圖像分類(lèi)任務(wù)來(lái)說(shuō),我們希望CNNs具備平移不變性,因為當圖像中目標發(fā)生位置偏移時(shí)其輸出結果應該保持一致。然而,CNNs結構本身所帶來(lái)的平移不變性是非常脆弱的,大多數時(shí)候還是需要從大量數據中學(xué)習出來(lái)。
平移等變性(translation equivalence)
CNNs中的平移等變性指的是當輸入發(fā)生偏移時(shí)網(wǎng)絡(luò )的輸出結果也應該發(fā)生相應的偏移。這種特性比較適用于目標檢測和語(yǔ)義分割等任務(wù)。CNNs中卷積操作的參數共享使得它對平移操作具有等變性,而一些池化操作對平移有近似不變性。
GroupConv
論文:AlexNet[1] (Accepted by NIPS 2012)
背景
受單個(gè)GPU算力的瓶頸限制,組卷積在早期階段是被應用于切分網(wǎng)絡(luò )使其能夠在多個(gè)GPU上進(jìn)行并行計算,之后被廣泛應用到ResNeXt[2]網(wǎng)絡(luò )中。
原理
原始卷積操作中每一個(gè)輸出通道都與輸入的每一個(gè)通道相連接,通道之間是以稠密方式進(jìn)行連接。而組卷積中輸入和輸出的通道會(huì )被劃分為多個(gè)組,每個(gè)組的輸出通道只和對應組內的輸入通道相連接,而與其它組的通道無(wú)關(guān)。這種分組(split)的思想隨后被絕大多數的新晉卷積所應用。
Group Convolution
特性
降低參數量
參數量為原始卷積的1/g,其中g(shù)為分組數。
提高訓練效率
通過(guò)將卷積運算按通道劃分為多個(gè)路徑,可以盡可能地利用分布式的計算資源進(jìn)行并行運算,有利于大規模深度神經(jīng)網(wǎng)絡(luò )的訓練。
提高泛化性能
組卷積可以看成是對原始卷積操作的一種解耦,改善原始卷積操作中濾波器之間的稀疏性,在一定程度上起到正則化的作用。
改進(jìn)
原始的組卷積實(shí)現中,不同通道的特征會(huì )被劃分到不同的組里面,直到網(wǎng)絡(luò )的末端才將其融合起來(lái),中間過(guò)程顯然缺乏信息的交互(考慮到不同濾波器可提取到不同的特征)。
AlexNet
為了解決此問(wèn)題,ShuffleNet[3]結合了逐點(diǎn)組卷積(Pointwise Group Convolution, PGC)和通道混洗(channel shuffle),來(lái)實(shí)現一個(gè)高效輕量化的移動(dòng)端網(wǎng)絡(luò )設計。
Channel shuffle with two stacked group convolutions.
單純地應用PGC雖然可以有效的降低計算復雜度,但同時(shí)也會(huì )引入副作用(組與組之間的信息無(wú)交互)。因此,作者進(jìn)一步地應用通道混洗操作來(lái)促使信息更好的流通。最后,論文中也提出了一種Shuffle單元。
ShuffleNet Units. a) bottleneck unit with depthwise convolution(DWConv); b) ShuffleNet unit with pointwise groupconvolution(GConv) and channel shuffle; c) ShuffleNet unit with stride = 2.
TransposedConv
論文:《A guide to convolution arithmetic for deeplearning》[4]
背景
轉置卷積,也稱(chēng)為反卷積(Deconvolution)或微步卷積(Fractionally-strided Convolution),一般應用在編解碼結構中的****部分或者DCGAN中的生成器中等。但由于數字信號處理中也有反卷積的概念,所以一般為了不造成歧義,大多數框架的API都會(huì )定義為轉置卷積。
Transposed Convolution
原理
與常規的卷積操作不同,轉置卷積是一種一對多的映射關(guān)系,即輸入矩陣中的一個(gè)值映射到輸出矩陣的K×K(i.e., kernel size)個(gè)值。在具體的實(shí)現當中,需要維護一個(gè)轉置矩陣,這個(gè)矩陣參數是可學(xué)習的。
特性
特征上采樣
利用轉置卷積,可以引入參數讓網(wǎng)絡(luò )自動(dòng)學(xué)習卷積核的權重以更好地恢復空間分辨率。一般來(lái)說(shuō),利用轉置卷積來(lái)替代常規的上采樣操作(最近鄰插值、雙線(xiàn)性插值即雙立方插值)會(huì )取得更好的效果(在沒(méi)有過(guò)擬合的情況下),弊端是增大了參數量,且容易出現網(wǎng)格效應[5]。
特征可視化
利用轉置卷積還可以對特征圖進(jìn)行可視化。有時(shí)間的強烈推薦大家去閱讀原論文《Visualizing and Understanding Convolutional Networks》[6],有助于幫助大家理解不同深度的各個(gè)特征圖究竟學(xué)到了什么特征。比如,增加網(wǎng)絡(luò )的深度有利于提取更加抽象的高級語(yǔ)義特征,而增加網(wǎng)絡(luò )的寬度有利于增強特征多樣性的表達?;蛘呤切〉木矸e核有利于特征的學(xué)習,而小的步長(cháng)則有利于保留更多的空間細節信息。
1×1Conv
論文:《Network In Network》[7] (Accepted by ICLR 2014)
背景
1×1卷積最初提出的目的是用于增強模型對特定感受野下的局部區域的判定能力。后續也被GoogleNet[8]和ResNet[9]進(jìn)一步的應用。
1×1 Convolution
特性
增強特征表達能力
1×1卷積本質(zhì)上也是一個(gè)帶參數的濾波器,在不改變特征圖本身尺寸的情況下,能夠增加網(wǎng)絡(luò )深度。通過(guò)在卷積后通過(guò)非線(xiàn)性激活函數可以有效的增強網(wǎng)絡(luò )的表達能力。
升維和降維
1×1卷積可以通過(guò)增加或減少濾波器的數量來(lái)實(shí)現升維或降維的目的。與全連接層不同,由于卷積是基于權值共享,因此能夠有效的降低網(wǎng)絡(luò )的參數量和計算量。另一方面,降低維度可以認為是通過(guò)減少冗余的特征圖來(lái)降低模型中間層權重的稀疏性,從而得到一個(gè)更加緊湊的網(wǎng)絡(luò )結構。
跨通道的信息交互
類(lèi)似于多層感知機,1×1卷積本質(zhì)上就是多個(gè)特征圖之間的線(xiàn)性組合。因此,通過(guò)1×1卷積操作可以輕松實(shí)現跨通道的信息交互和整合。
AtrousConv
論文:《Multi-Scale Context Aggregation by Dilated Convolutions》[10] (Accepted by ICLR 2016)
講解:https://mp.weixin.qq.com/s/DWGqjMruicwIDKhsmossmg
背景
空洞卷積,也稱(chēng)為擴張卷積(Dilated Convolution),最早是針對語(yǔ)義分割任務(wù)所提出來(lái)的。由于語(yǔ)義分割是一種像素級的分類(lèi),經(jīng)過(guò)編碼器所提取出的高級特征圖最終需要上采樣到原始輸入特征圖的空間分辨率。因此,為了限制網(wǎng)絡(luò )整體的計算效率,通常會(huì )采用池化和插值等上/下采樣操作,但這對語(yǔ)義分割這種稠密預測任務(wù)來(lái)說(shuō)是非常致命的,主要體現在以下三方面:
不可學(xué)習:由于上采樣操作(如雙線(xiàn)性插值法)是固定的即不可學(xué)習的,所以并不能重建回原始的空間信息。
損失空間信息:引入池化操作不可避免的會(huì )導致內部數據結構丟失,導致空間細節信息嚴重丟失。
丟失小目標:經(jīng)過(guò)N次池化(每次下采樣2倍),原則上小于個(gè)像素點(diǎn)的目標信息將不可重建,這對于語(yǔ)義分割這種密集型預測任務(wù)來(lái)說(shuō)是致命的。
Atrous convolution
原理
空洞卷積可看成是原始卷積更進(jìn)一步的擴展,通過(guò)在原始卷積的基礎上引入空洞率這個(gè)超參數,用于調節卷積核的間隔數量。比如,原始卷積核其空洞率為1,而對于空洞率為k的卷積則用0去填充空白的區域。
特性
增大感受野
空洞卷積可以在同等卷積核參數下獲得更大的感受野。所以,對于需要較為全局的語(yǔ)義信息或類(lèi)似于語(yǔ)音文本需要較長(cháng)的序列信息依賴(lài)的任務(wù)中,都可以嘗試應用空洞卷積。
表征多尺度信息
利用帶有不同空洞率的卷積,還可以捕捉到多尺度的上下文語(yǔ)義信息。不同的空洞率代表著(zhù)不同的感受野,意味著(zhù)網(wǎng)絡(luò )能夠感知到不同尺寸的目標。
局限性
不好優(yōu)化
雖然引入空洞卷積可以在參數不變的情況增大感受野,但是由于空間分辨率的增大,所以在實(shí)際中常常會(huì )不好優(yōu)化,速度方面是一個(gè)詬病,因此在工業(yè)上對實(shí)時(shí)性有要求的應用更多的還是類(lèi)FCN結構。
引入網(wǎng)格/棋盤(pán)效應
應用空洞卷積也引入網(wǎng)格效應。由圖森和谷歌大腦合作研究的《Understanding Convolution for Semantic Segmentation》[11]文章指出了如果多次使用空洞率相同的卷積去提取特征時(shí)會(huì )損失掉信息的連續性。這是因為卷積核并不連續,導致許多的像素從頭到尾都沒(méi)有參與到運算當中,相當于失效了,這對于語(yǔ)義分割這類(lèi)的密集型預測任務(wù)來(lái)說(shuō)是十分不友好的,特別是針對小目標來(lái)說(shuō)。一個(gè)解決方案便是令所疊加的卷積其空洞率不能出現大于1的公約數,如令其等于[1, 2, 5],使其呈現鋸齒結構。
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。