感受野大小計算、卷積參數量與計算量、空洞卷積計算量與參數量

感受野大小計算

這是 自頂向下方法,也就是從後面向前面計算,初始rf=1
比如conv1(f=3x3,s=2),  conv2(f=3x3,s=2),  conv3(f=3x3,s=1),從後向前
最後一層每個點rf=1,(1-1)x1+3=3,也就是最後一層結束每個點的感受野是3
倒數第二層 ,  (3-1)x2+3=7, 最後一個點映射到第二層是7的感受野
底數第三層,(7-1)x2+3=15,最後一個點映射到第一層是15的感受野
 

空洞卷積的計算過程

空洞卷積(Dilated convolutions)在卷積的時候,會在卷積核元素之間塞入空格,如下圖所示:

這裏引入了一個新的超參數 d,(d - 1) 的值則爲塞入的空格數,假定原來的卷積核大小爲 k,那麼塞入了 (d - 1) 個空格後的卷積核大小 n 爲:

進而,假定輸入空洞卷積的大小爲 i,步長 爲 s ,空洞卷積後特徵圖大小 o 的計算公式爲:

空洞卷積好處

感受野爲: 感受野= k+(k+1)(d-1)

空洞卷積的感受野計算,從後向前,初始rf=1

(a)圖對應3x3的1-dilated conv,和普通的卷積操作一樣,(b)圖對應3x3的2-dilated conv,實際的卷積kernel size還是3x3,但是空洞爲1,也就是對於一個7x7的圖像patch,只有9個紅色的點和3x3的kernel發生卷積操作,其餘的點略過。也可以理解爲kernel的size爲7x7,但是隻有圖中的9個點的權重不爲0,其餘都爲0。 可以看到雖然kernel size只有3x3,但是這個卷積的感受野已經增大到了7x7(如果考慮到這個2-dilated conv的前一層是一個1-dilated conv的話,那麼每個紅點就是1-dilated的卷積輸出,所以感受野爲3x3,所以1-dilated和2-dilated合起來就能達到7x7的conv),(c)圖是4-dilated conv操作,同理跟在兩個1-dilated和2-dilated conv的後面,能達到15x15的感受野。對比傳統的conv操作,3層3x3的卷積加起來,stride爲1的話,只能達到(kernel-1)*layer+1=7的感受野,也就是和層數layer成線性關係,而dilated conv的感受野是指數級的增長。

dilated的好處是不做pooling損失信息的情況下,加大了感受野,讓每個卷積輸出都包含較大範圍的信息。在圖像需要全局信息或者語音文本需要較長的sequence信息依賴的問題中,都能很好的應用dilated conv,比如圖像分割[3]、語音合成WaveNet[2]、機器翻譯ByteNet[1]中。簡單貼下ByteNet和WaveNet用到的dilated conv結構,可以更形象的瞭解dilated conv本身。

 

卷積過程的參數量計算

假定:
M:每個卷積核輸出特徵圖(Feature Map)的邊長
K:每個卷積核(Kernel)的邊長
Cin:每個卷積核的通道數,也即輸入通道數,也即上一層的輸出通道數
Cout:本卷積層具有的卷積核個數,也即輸出通道數
可見:每個卷積層的時間複雜度由輸出特徵圖面積M2,卷積核面積K2,輸入Cin和輸出通道Cout完全決定。
其中,輸出特徵圖尺寸本身又由輸入矩陣尺寸X,卷積核尺寸K,Padding,Stride這四個參數所決定,表示如下:
M = (X - K + 2 × Padding)/ Stride + 1
注1:爲了簡化表達式中的變量個數,這裏統一假設輸入和卷積核的形狀都是正方形。
注2:嚴格來講每一層應該還包含1個Bias參數,這裏爲了簡潔就省略了
這裏舉個例子,假設一個卷積層:輸入224×224×3,輸出224×224×64,卷積核大小爲3×3。
計算量: Times = 224 × 224 × 3 × 3 × 3 × 64 = 8.7 × 10^7
參數量: Space = 3 × 3 × 3 × 64 = 1728
 
 
 
深度分離卷積的參數量爲:M*K*K+N*M    ,M是輸入特徵圖通道數,K爲卷積核大小,N爲輸出特徵通道數(也就是卷積核的通道數)
深度分離卷積示例:
輸入圖片大小(6,6,3),原卷積操作用(4,4,3,5)的卷積(卷積核大小爲4x4,卷積核通道爲3,卷積核數量爲5),stride=1,padding=0。輸出的特徵尺寸爲(6-4)/1+1=3,即輸出的特徵映射爲(3,3,5)
將標準卷積中選取序號爲n的卷積核,大小爲(4,4,3),標準卷積過程示意圖如下(省略bias):
黑色的輸入爲(6,6,3) 與第n個卷積覈對應,每個通道對應每個卷積核通道卷積得到輸出,最終輸出爲2+0+1=3(這是常見的卷積操作,注意這裏卷積核要和輸入的通道數相同,即圖中表示的3個通道~)
 
對於深度分離卷積,把標準卷積(4,4,3,5)分解爲:
 
  • 深度卷積部分:大小爲(4,4,1,3) ,作用在輸入的每個通道上,輸出特徵映射爲(3,3,3)
  • 逐點卷積部分:大小爲(1,1,3,5),作用在深度卷積的輸出特徵映射上,得到最終輸出爲(3,3,5)
例中深度卷積卷積過程示意圖如下:
 
輸入有3個通道,對應着有3個大小爲(4,4,1) 的深度卷積核,卷積結果共有3個大小爲(3,3,1) ,我們按順序將這卷積按通道排列得到輸出卷積結果(3,3,3) 。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章