來源丨h(huán)ttps://zhuanlan.zhihu.com/p/113285797 空洞卷積在圖像分割需要增加感受野同時保持特征圖的尺寸的需求中誕生,本文詳細介紹了空洞卷積的誕生、原理、計算過程以及存在的兩個潛在的問題,幫助大家將空洞卷積這一算法“消化吸收”。
一、空洞卷積的提出 空洞卷積中文名也叫膨脹卷積 或者擴張卷積 ,英文名也叫Atrous Convolution 空洞卷積最初的提出是為了解決圖像分割的問題而提出的,常見的圖像分割算法通常使用池化層和卷積層來增加感受野(Receptive Filed),同時也縮小了特征圖尺寸(resolution),然后再利用上采樣還原圖像尺寸,特征圖縮小再放大的過程造成了精度上的損失,因此需要一種操作可以在增加感受野的同時保持特征圖的尺寸不變,從而代替下采樣和上采樣操作,在這種需求下,空洞卷積就誕生了(略有修改,引自[4]) 玖零猴:感受野(Receptive Field)的理解與計算@玖零猴 https://zhuanlan.zhihu.com/p/113487374 當然,如果不用空洞卷積這種方案,那怎么去彌補經(jīng)過下采樣而造成信息損失呢?其實,這是另一個思路了,于是才有了我們熟知的skip connection,它可以為上采樣彌補信息,像FCN、U-Net這種典型的拓撲網(wǎng)絡,如下圖所示,其實我個人認為,如果一個問題如果從不同的思路去想的話,就會出現(xiàn)不同的解決方案 圖1 FCN、U-Net典型的分割拓撲結構:下采樣、上采樣、skip connection(圖來自[6]) 空洞卷積自2016在ICLR(International Conference on Learning Representation)上才被提出后,本身是用在圖像分割領域,但立馬被deepmind拿來應用到語音(WaveNet)和NLP領域,它在物體檢測也發(fā)揮了重要的作用,雖然不要求逐個像素檢測,但對于小物體的檢測也是十分重要的 二、空洞卷積的原理 與正常的卷積不同的是,空洞卷積引入了一個稱為 “擴張率(dilation rate) ”的超參數(shù)(hyper-parameter),該參數(shù)定義了卷積核處理數(shù)據(jù)時各值的間距。擴張率中文也叫空洞數(shù)(Hole Size)。 在此以 卷積為例,展示普通卷積和空洞卷積之間的區(qū)別,如圖2所示 圖2 普通卷積和空洞卷積的對比(來自[4]) 圖2中從左到右分別為a、b、c子圖,三幅圖是相互獨立 進行卷積的(區(qū)別于下面圖4),大框表示輸入圖像(感受野默認為1),黑色的圓點表示 的卷積核,灰色地帶表示卷積后的感受野(后面有相關計算公式,這里都是一層卷積的,直接可以看出來) a是普通的卷積過程(dilation rate = 1),卷積后的感受野為3 b是dilation rate = 2的空洞卷積,卷積后的感受野為5 c是dilation rate = 3的空洞卷積,卷積后的感受野為8 另外,空洞卷積可以增大感受野,但是可以不改變圖像輸出特征圖的尺寸(分辨率,resolution) ,這句話怎么理解? 圖3 一維版的普通卷積(a、b)和空洞卷積(c),黑色的圓表示填充部分,a、b、c它們相互獨立進行卷積 (來自[8]) 從b和c可以看出,有無空洞卷積,并不影響輸出特征圖的尺寸,也就是說輸出特征圖的尺和空洞數(shù)無關,因此可以利用空洞卷積增大感受野,而輸出特征圖的尺寸可以保持不變 影響輸出特征圖尺寸的因素有輸入特征圖的尺寸? ?,卷積核的大小? ?,填充? ?,步長? ?,計算公式如下: 由于保持特征圖尺寸不變,所以導致了計算過程的計算量比較大 知識一:我們知道,神經(jīng)元感受野的值越大表示其能接觸到的原始圖像范圍就越大,也意味著它可能蘊含更為全局,語義層次更高的特征;相反,值越小則表示其所包含的特征越趨向局部和細節(jié)。因此感受野的值可以用來大致判斷每一層的抽象層次。 知識二:在贏得其中一屆ImageNet比賽里VGG網(wǎng)絡的文章中,他最大的貢獻并不是VGG網(wǎng)絡本身,而是他對于卷積疊加的一個巧妙觀察。1個 7 x 7 的卷積層的正則等效于 3 個 3 x 3 的卷積層的疊加。而這樣的設計可以大幅度的減少參數(shù),有正則化的效果,參數(shù)少了就沒那么容易發(fā)生過擬合。這也是現(xiàn)在絕大部分基于卷積的深層網(wǎng)絡都在用小卷積核的原因,常常使用3 x 3的卷積核 一般每一層的卷積核都是用3 x 3 大小的,而每一層只要設置不同dilation rate時,感受野就會不一樣,也即獲取了多尺度信息,當然這樣操作并不影響特征圖的尺寸,這樣一來,又避免下采樣那樣造成信息損失,同時也利用到多尺度信息,真是一舉兩得啊 獲取多尺度信息在視覺任務中相當重要,尤其是在Dense prediction(對每個像素進行分類)問題上,它能夠提高準確性的,如語義分割 dense prediction problems such as semantic segmentation ... to increase the performance of dense prediction architectures by aggregating multi-scale contextual information(來自[1]) 三、感受野的計算 圖2 普通卷積和空洞卷積的對比(來自[4]) 從圖2可以看出,同樣一個? ?的卷積,卻可以起到? ?、? ?等卷積的效果,空洞卷積在不增加參數(shù)量的前提下(參數(shù)量=卷積核大小+偏置),卻可以增大感受野,假設空洞卷積的卷積核大小為? ?,空洞數(shù)為? ?,則其等效卷積核大小? ?,例如? ?的卷積核,則? ?,公式如下(來自[4]) 當前層的感受野計算公式如下,其中,? ?表示當前層的感受野,? ?表示上一層的感受野,? ?表示卷積核的大小 表示之前所有層的步長的乘積(不包括本層),公式如下:同樣的,當前層的步長并不影響當前層的感受野,感受野和填補(padding)沒有關系 下面舉個例子練練手,此圖4和上面的圖2有區(qū)別,圖2的三幅圖是獨立的,而圖4是從左到右連續(xù)進行卷積,它們屬于top-bottom關系 圖4 三個不同的空洞卷積,卷積核的kernel size=3, stride=1, 但是空洞卷積的dilation rate分別是1,2,4。默認初始化感受野是1。(來自[1])
四、潛在的問題及解決方法 潛在問題 1:The Gridding Effect 假設我們僅僅多次疊加 dilation rate 2 的 3 x 3 kernel 的話,則會出現(xiàn)這個問題: 由于空洞卷積的計算方式類似于棋盤格式,某一層得到的卷積結果,來自上一層的獨立的集合,沒有相互依賴,因此該層的卷積結果之間沒有相關性,即局部信息丟失。這對 pixel-level dense prediction 的任務來說是致命的。 潛在問題 2 :Long-ranged information might be not relevant. 遠距離獲取的信息沒有相關性:由于空洞卷積稀疏的采樣輸入信號,使得遠距離卷積得到的信息之間沒有相關性,影響分類結果。 Panqu Wang,Pengfei Chen, et al **.Understanding Convolution for Semantic Segmentation.//**WACV 2018 Fisher Yu, et al . Dilated Residual Networks. //CVPR 2017 Zhengyang Wang,et al .**Smoothed Dilated Convolutions for Improved Dense Prediction.//**KDD 2018. Liang-Chieh Chen,et al .Rethinking Atrous Convolution for Semantic Image Segmentation//2017 Sachin Mehta,et al . ESPNet: Efficient Spatial Pyramid of DilatedConvolutions for Semantic Segmentation. //ECCV 2018 Tianyi Wu**,et al .Tree-structured Kronecker Convolutional Networks for Semantic Segmentation.//AAAI2019** Hyojin Park,et al .Concentrated-Comprehensive Convolutionsfor lightweight semantic segmentation.//2018 Efficient Smoothing of Dilated Convolutions for Image Segmentation.//2019 1、Yu, Fisher, and Vladlen Koltun. "Multi-scale context aggregation by dilated convolutions." arXiv preprint arXiv:1511.07122 (2015).( https://arxiv.org/abs/1511.071220) 2、Understanding Convolution for Semantic Segmentation( https://arxiv.org/abs/1702.08502 ) 3、Rethinking Atrous Convolution for Semantic Image Segmentation( https://arxiv.org/abs/1706.05587 ) 4、書籍《深度學習之PyTorch物體檢測實戰(zhàn)》 5、如何理解空洞卷積(dilated convolution)?( https://www.zhihu.com/question/54149221 ) 6、U-Net++作者對U-Net的分析( https://zhuanlan.zhihu.com/p/44958351 ) 7、GIF動圖,加深普通卷積和空洞卷積的區(qū)別: https://github.com/vdumoulin/conv_arithmetic/blob/master/README.md 8、如何理解Dilated Convolutions(空洞卷積) 9、yyfyan:總結-空洞卷積(Dilated/Atrous Convolution)( https://zhuanlan.zhihu.com/p/50369448 ) 往期精彩:
【原創(chuàng)首發(fā)】機器學習公式推導與代碼實現(xiàn)30講.pdf
【原創(chuàng)首發(fā)】深度學習語義分割理論與實戰(zhàn)指南.pdf
?算法工程師研發(fā)技能表
? 真正想做算法的,不要害怕內卷
?技術學習不能眼高手低
?技術人要學會自我營銷
? 做人不能過擬合
求個在看