您好,登錄后才能下訂單哦!
卷積和膨脹卷積
在深度學習中,我們會碰到卷積的概念,我們知道卷積簡單來理解就是累乘和累加,普通的卷積我們在此不做贅述,大家可以翻看相關(guān)書籍很好的理解。
最近在做項目過程中,碰到Pytorch中使用膨脹卷積的情況,想要的輸入輸出是圖像經(jīng)過四層膨脹卷積后圖像的寬高尺寸不發(fā)生變化。
開始我的思路是padding='SAME'結(jié)合strides=1來實現(xiàn)輸入輸出尺寸不變,試列好多次還是有問題,報了張量錯誤的提示,想了好久也沒找到解決方法,上網(wǎng)搜了下,有些人的博客說經(jīng)過膨脹卷積之后圖像的尺寸不發(fā)生變化,有些人又說發(fā)生變化,甚至還給出了公式,按著他們的方法修改后還是有問題,報的錯誤還是沒有變。一時不知道怎樣解決,網(wǎng)上關(guān)于膨脹卷積輸出尺寸的大小相關(guān)的知識也很少。
終于......,經(jīng)過自己的研究,發(fā)現(xiàn)了問題所在。好啦!我們先從膨脹卷積的概念開始。
1、膨脹卷積的概念
Dilated Convolutions,翻譯為擴張卷積或空洞卷積。擴張卷積與普通的卷積相比,除了卷積核的大小以外,還有一個擴張率(dilation rate)參數(shù),主要用來表示擴張的大小。擴張卷積與普通卷積的相同點在于,卷積核的大小是一樣的,在神經(jīng)網(wǎng)絡(luò)中即參數(shù)數(shù)量不變,區(qū)別在于擴張卷積具有更大的感受野。感受野是卷積核在圖像上看到的大小,例如5x5的卷積核的感受野大小為25。
2、示意圖
a.普通卷積,dilation=1,感受野為3x3=9
b.膨脹卷積,dilation=2,感受野為7x7=49
c.膨脹卷積,dilation=4,感受野為16x16 = 256
3、感受野的概念
在卷積神經(jīng)網(wǎng)絡(luò)中,感受野的定義是 卷積神經(jīng)網(wǎng)絡(luò)每一層輸出的特征圖(feature map)上的像素點在原始圖像上映射的區(qū)域大小
重點來啦
卷積核經(jīng)過膨脹后實際參與運算的卷積大小計算公式:
膨脹后的卷積核尺寸 = 膨脹系數(shù) × (原始卷積核尺寸-1)+ 1
例如對于輸入是19 x 19(暫且不考慮圖像通道數(shù))大小的圖像做膨脹卷積,要使輸出的圖像大小保持不變,即就是仍然為19 x 19,我們要怎樣實現(xiàn)呢?
我們的代碼是基于pytorch實現(xiàn)的,它的卷積參數(shù)中沒有padding='SAME‘的選項,padding的可取值為0,1,2,3等等的值。它的計算方式和tensorflow中的padding='VALID'的計算方式一樣。
Output=(W-F+2P)/S+1
我們?nèi)trides=1,這里的原始卷積核為3 x 3大小,dilation=6,我們可以計算出膨脹后的卷積核大小為6(3-1)+1=13
帶入公式可以求得:
(19-13+2*p)/1+1=19,要使這個式子成立,可以反推出padding=6。
這樣一來,就可以使得輸入輸出的尺寸保持不變。達到了我們想要的效果。
4、膨脹卷積的優(yōu)點
膨脹卷積在保持參數(shù)個數(shù)不變的情況下增大了卷積核的感受野
5、應用領(lǐng)域
圖像修復,圖像分割,語音合成。
以上這篇Pytorch中膨脹卷積的用法詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。