最近在做姿態(tài)估計(jì)的項(xiàng)目,在定制和實(shí)現(xiàn)卷積網(wǎng)絡(luò)的時候發(fā)現(xiàn)自己對里面的一些計(jì)算細(xì)節(jié)還不夠了解登澜,所以整理了該文章阔挠,內(nèi)容如下:
- 卷積計(jì)算過程(單 / RGB 多通道)
- 特征圖大小計(jì)算公式
- 轉(zhuǎn)置卷積(反卷積)的計(jì)算過程
- 空洞卷積的計(jì)算過程
該文章只單純的講解計(jì)算的細(xì)節(jié),關(guān)于對應(yīng)的原理和證明可以戳尾部的參考文獻(xiàn)脑蠕。
卷積計(jì)算過程(單 / RGB 多通道)
假設(shè)輸入層的大小為 5 x 5谒亦,局部感受野(或稱卷積核)的大小為 3 x 3,那么輸出層一個神經(jīng)元所對應(yīng)的計(jì)算過程(下文簡稱「卷積計(jì)算過程」)如下:
上述計(jì)算對應(yīng)的公式如下:
其中 I 表示輸入空郊,W 表示卷積對應(yīng)的權(quán)重。
每個卷積核對應(yīng)的權(quán)重 W 在計(jì)算卷積過程中切揭,值是固定的狞甚,我們稱為權(quán)重共享。
然后廓旬,將值輸入到激活函數(shù) σ 中獲得輸出值哼审。
如果將輸入層想像成黑板,局部感受野就像是黑板擦孕豹,他會從左往右涩盾,從上至下的滑動,每次滑動 1 個步長(Stride)并且每次滑動都重復(fù)上述的計(jì)算過程励背,我們就可以得到輸出的特征圖(feature map)春霍,如下圖所示:
有時候址儒,按照規(guī)定步數(shù)滑動到黑板邊緣時芹枷,黑板擦一部分會露出在黑板外,這個時候就 不能夠順利執(zhí)行卷積過程了莲趣,解決的方法是填充鸳慈,常見的有兩種填充(Padding)方法,第一種方法為 Valid喧伞,第二種方法為 Same走芋,如下圖所示:
Valid 是丟棄的方法,比如上述的 input_width = 7潘鲫,kernel_width = 5翁逞,stride = 3,只允許滑動 1 次次舌,多余的元素則丟掉熄攘。
Same 是補(bǔ)全的方法,對于上述的情況,允許滑動 3 次,但是需要補(bǔ) 4 個元素,左邊補(bǔ) 2 個 0彼念,右邊補(bǔ) 2 個 0挪圾,這種方法則不會拋棄邊緣的信息,關(guān)于如何計(jì)算填充數(shù)量會在下小節(jié)中講到逐沙。
在實(shí)際應(yīng)用中哲思,輸入的都為彩色圖像(RGB 三通道),也就是說輸入的維度是 [圖片數(shù)吩案,圖片高棚赔,圖片寬,通道數(shù)]徘郭,這個時候靠益,執(zhí)行卷積的過程如下:
特征圖大小的計(jì)算公式
我們在設(shè)計(jì)和調(diào)整網(wǎng)絡(luò)結(jié)構(gòu)的時候,還需要快速知道調(diào)整了卷積核后残揉,輸出特征圖的大小胧后,假定:
- 輸入圖片 i(只考慮輸入寬高相等)
- 卷積核大小 f
- 步長 s
- 填充的像素?cái)?shù) p
那么輸出的特征圖大小 o 的計(jì)算公式則如下:
o 值的大小與 i,f抱环,p壳快,s 這四個變量相關(guān),也和填充的方式有關(guān)镇草。
- 當(dāng)填充方式為 VALID 時眶痰,p 值等于 0,代入相應(yīng)的 i梯啤,f竖伯,p,s 就可以相應(yīng)的計(jì)算出 o 值了。
- 當(dāng)填充方式為 SAME 時黔夭,步長 s 為 1 時宏胯,輸出的 o == i,我們則可以計(jì)算出相應(yīng)的 P 值為 p = (f-1) / 2
轉(zhuǎn)置卷積(反卷積本姥,逆卷積)的計(jì)算過程
在理解轉(zhuǎn)置卷積(Transposed Convolution)計(jì)算過程之前肩袍,先來看一下如何用矩陣相乘的方法代替?zhèn)鹘y(tǒng)的卷積。
假設(shè)一個卷積操作婚惫,它的輸入是 4x4氛赐,卷積核大小是 3x3,步長為 1x1先舷,填充方式為 Valid 的情況下艰管,輸出則為 2x2,如下圖所示:
我們將其從左往右蒋川,從上往下以的方式展開牲芋,
- 輸入矩陣可以展開成維數(shù)為 [16, 1] 的矩陣,記作 x
- 輸出矩陣可以展開成維數(shù)為 [4, 1] 的矩陣捺球,記作 y
- 卷積核可以表示為 [4, 16] 的矩陣缸浦,記作 C,其中非 0 的值表示卷積對應(yīng)的第 i 行 j 列的權(quán)重氮兵。
- 所以卷積可以用 y = C * x ([4, 1] = [4, 16] * [16, 1])來表示
那么裂逐,轉(zhuǎn)置卷積就可以理解為是
空洞卷積的計(jì)算過程
空洞卷積(Dilated convolutions)在卷積的時候,會在卷積核元素之間塞入空格泣栈,如下圖所示:
這里引入了一個新的超參數(shù) d南片,(d - 1) 的值則為塞入的空格數(shù)掺涛,假定原來的卷積核大小為 k,那么塞入了 (d - 1) 個空格后的卷積核大小 n 為:
進(jìn)而疼进,假定輸入空洞卷積的大小為 i薪缆,步長 為 s ,空洞卷積后特征圖大小 o 的計(jì)算公式為: