時間:2020-01-07來源:系統城作者:電腦系統城
卷積和膨脹卷積
在深度學習中,我們會碰到卷積的概念,我們知道卷積簡單來理解就是累乘和累加,普通的卷積我們在此不做贅述,大家可以翻看相關書籍很好的理解。
最近在做項目過程中,碰到Pytorch中使用膨脹卷積的情況,想要的輸入輸出是圖像經過四層膨脹卷積后圖像的寬高尺寸不發生變化。
開始我的思路是padding='SAME'結合strides=1來實現輸入輸出尺寸不變,試列好多次還是有問題,報了張量錯誤的提示,想了好久也沒找到解決方法,上網搜了下,有些人的博客說經過膨脹卷積之后圖像的尺寸不發生變化,有些人又說發生變化,甚至還給出了公式,按著他們的方法修改后還是有問題,報的錯誤還是沒有變。一時不知道怎樣解決,網上關于膨脹卷積輸出尺寸的大小相關的知識也很少。
終于......,經過自己的研究,發現了問題所在。好啦!我們先從膨脹卷積的概念開始。
1、膨脹卷積的概念
Dilated Convolutions,翻譯為擴張卷積或空洞卷積。擴張卷積與普通的卷積相比,除了卷積核的大小以外,還有一個擴張率(dilation rate)參數,主要用來表示擴張的大小。擴張卷積與普通卷積的相同點在于,卷積核的大小是一樣的,在神經網絡中即參數數量不變,區別在于擴張卷積具有更大的感受野。感受野是卷積核在圖像上看到的大小,例如5x5的卷積核的感受野大小為25。
2、示意圖
a.普通卷積,dilation=1,感受野為3x3=9
b.膨脹卷積,dilation=2,感受野為7x7=49
c.膨脹卷積,dilation=4,感受野為16x16 = 256
3、感受野的概念
在卷積神經網絡中,感受野的定義是 卷積神經網絡每一層輸出的特征圖(feature map)上的像素點在原始圖像上映射的區域大小
重點來啦
卷積核經過膨脹后實際參與運算的卷積大小計算公式:
膨脹后的卷積核尺寸 = 膨脹系數 × (原始卷積核尺寸-1)+ 1
例如對于輸入是19 x 19(暫且不考慮圖像通道數)大小的圖像做膨脹卷積,要使輸出的圖像大小保持不變,即就是仍然為19 x 19,我們要怎樣實現呢?
我們的代碼是基于pytorch實現的,它的卷積參數中沒有padding='SAME‘的選項,padding的可取值為0,1,2,3等等的值。它的計算方式和tensorflow中的padding='VALID'的計算方式一樣。
Output=(W-F+2P)/S+1
我們取strides=1,這里的原始卷積核為3 x 3大小,dilation=6,我們可以計算出膨脹后的卷積核大小為6(3-1)+1=13
帶入公式可以求得:
(19-13+2*p)/1+1=19,要使這個式子成立,可以反推出padding=6。
這樣一來,就可以使得輸入輸出的尺寸保持不變。達到了我們想要的效果。
4、膨脹卷積的優點
膨脹卷積在保持參數個數不變的情況下增大了卷積核的感受野
5、應用領域
圖像修復,圖像分割,語音合成。
以上這篇Pytorch中膨脹卷積的用法詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持我們。
2022-03-01
PHP如何從txt文件中讀取數據詳解2022-03-01
分享5個方便好用的Python自動化腳本2021-03-29
Python中pycharm編輯器界面風格修改方法