“卷積”這一詞在多個領(lǐng)域里都有定義(比如信號處理領(lǐng)域的傅里葉變換中也有卷積)撞蚕。具體在圖像處理領(lǐng)域夷蚊,卷積操作是指使用一個小的“模板窗口”對一個圖片中的所有與模板大小相同的區(qū)域進行“卷積運算”误堡“司疲“卷積運算”其實很簡單嫁怀,就是將模板中的每一個數(shù)字與圖片中相同大小區(qū)域的對應(yīng)數(shù)字(像素值)進行相乘奸绷,再求和梗夸。
“模板窗口”每移動到一個位置,就和圖片中的對應(yīng)元素進行一次卷積運算号醉,注意我們一般把“模板窗口”稱為卷積核(kernel)
卷積核反症,其實是經(jīng)過精心設(shè)置的。觀察被卷積的圖像和卷積結(jié)果你會發(fā)現(xiàn)畔派,該卷積核其實可以用來檢測圖片中的垂直邊緣铅碍。如果卷積后得到的數(shù)字絕對值大,就說明圖片上的對應(yīng)地方有一條垂直方向的邊緣(即像素數(shù)值變化較大)线椰。如果卷積后得到的數(shù)字絕對值很小胞谈,則說明圖片上的對應(yīng)地方像素值變化不大,沒有邊緣存在憨愉。
說到這里烦绳,你也許已經(jīng)能夠體會為什么我們需要卷積神經(jīng)網(wǎng)絡(luò)。對于將整個圖片視為一個向量的全連接層來說配紫,它忽略了圖像本身所具有的的“二維空間特性”径密,或者說局部特性。而卷積操作則十分擅長處理這種局部特性躺孝,能夠更有效地提取出圖片中的更多有用信息(比如圖片中的邊緣)享扔。實際上,卷積神經(jīng)網(wǎng)絡(luò)幾乎已經(jīng)成為了神經(jīng)網(wǎng)絡(luò)中處理圖像的標配
一個卷積核括细,只能檢測一種特征(feature)(比如垂直方向的邊緣)伪很,而圖片中的信息往往很復(fù)雜戚啥,一個卷積核顯然不夠奋单。所以神經(jīng)網(wǎng)絡(luò)中,一個卷積層往往會有多個卷積核猫十,這樣卷積層的輸出就會有多層览濒。
為了簡便,在一些深度學(xué)習(xí)框架(caffe等等)中拖云,在運算時可以將特征個數(shù)與圖像通道數(shù)等同看待贷笛。所以對于一個通道數(shù)為1的圖片,若卷積層特征個數(shù)為3宙项,則可將輸出的卷積結(jié)果視為通道數(shù)為3的圖片乏苦。對于一個通道數(shù)為3的圖片(此時,卷積核是一個三維的“體”),若卷積層特征個數(shù)為16汇荐,則可將輸出的卷積結(jié)果視為通道數(shù)為16的圖片洞就。
卷積核的尺寸是2x2, 但在實際當中,很少見到邊長為偶數(shù)的卷積核掀淘。且一般卷積核的最小邊長為3
卷積操作得到的卷積結(jié)果與原來的圖片相比尺寸變小了旬蟋。這樣會帶來一個問題,有的卷積神經(jīng)網(wǎng)絡(luò)會非掣锫Γ“深”(比如幾十層倾贰,甚至上百上千層)如果每經(jīng)過一個卷積層我們的圖片都變小一點,那到最后拦惋,有可能我們的圖片都沒有卷積核大匆浙,沒辦法繼續(xù)卷積下去了。為了解決這個問題厕妖,人們對卷積層引入了邊緣填充(padding):在卷積前吞彤,先將圖片擴大一點點,然后再進行卷積叹放。對于擴大部分饰恕,一般會填入0值。