卷積
說到卷積,就不得不提互相關\(cross-orrelation\)。卷積實質就是一種互相關運算,只不過要在進行互相關運算前,要把\(kernal\)上下左右進行翻轉。即\(cross-correlation\)的計算順序是從左到右,從上到下,而\(convolution\)的順序是從右到左,從下到上。
卷積在數字圖像處理中最重要的作用是進行特征提取。對原始圖像,設計相應的核,進行卷積運算,得到特征圖。
卷積神經網絡
卷積神經網絡是一類包含卷積計算且具有深度結構的前饋神經網絡。
在進一步介紹CNN之前,介紹兩個概念。
特征圖
在CNN中,二維卷積層輸出的二維數組可以看作是輸入在空間維度(寬和高)上某一級的表征,也叫特征圖(feature map)。
感受野
影響元素\(x\)的前向計算的所有可能輸入區域(可能大於輸入的實際尺寸)叫做\(x\)的感受野(receptive field)。
我們可以通過卷積神經網絡的深度使特征圖中單個元素的感受野變得更加廣闊,從而捕捉輸入上更大尺寸的特征。
CNN特點
局部卷積
假如采用全連接網絡進行圖像分類,那么涉及到的運算量大,效率十分低。
而卷積網絡的特點就是局部感知。特征圖只需要和原始輸入圖像中的局部像素連接即可。
為什么可以使用局部感知呢?因為在圖像中有一個很重要的point:在一個小范圍內,圖像的特征分布變化是很小的。即局部像素,距離越近,聯系也就越密切,距離較遠的像素,相關性較低。
因此,每一個神經元只需要對局部的像素進行感知,再在更高層對局部信息進行綜合,就可以得到全局的信息。
對於局部感知這個特點,可以聯系數字圖像處理中學習的Filter。可以把卷積想象成作用於矩陣的一個滑動窗口函數。對於給定的輸入圖像,輸出的特征圖中的每個像素實際上是輸入圖像中局部區域中像素的加權平均。其權值由卷積核定義。
參數共享
每個神經元都對應着卷積核大小(長*寬)個參數,那么這些參數是共享的,其被看成是卷積提取特征的方式,該方式與位置無關。
多卷積核
為了充分提取特征,CNN中可以使用多個卷積核,這些卷積核的尺寸、參數可以不同。
每個卷積核都會對輸入圖像進行卷積處理,生成一幅圖像。不同卷積核生成的不同圖像可以理解為是該輸入圖像的不同通道。
當輸入數據含多個通道時,我們需要構造一個輸入通道數與輸入數據的通道數相同的卷積核,從而能夠與含多通道的輸入數據做互相關運算。假設輸入數據的通道數為\(c_i\) ,那么卷積核的輸入通道數同樣為\(c_i\)。設卷積核窗口形狀為\(k_h\times k_w\) 。當\(c_i=1\)時,我們知道卷積核只包含一個形狀為\(k_h \times k_w\)的二維數組。當\(c_i>1\)時,我們將會為每個輸入通道各分配一個形狀為\(k_h \times k_w\)的核數組。把這\(c_i\)個數組在輸入通道維上連結,即得到一個形狀為 \(c_i\times k_h \times k_w\)的卷積核。由於輸入和卷積核各有\(c_i\)個通道,我們可以在各個通道上對輸入的二維數組和卷積核的二維核數組做互相關運算,再將這 \(c_i\)個互相關運算的二維輸出按通道相加,得到一個二維數組。這就是含多個通道的輸入數據與多輸入通道的卷積核做二維互相關運算的輸出。
如下圖,是含兩個輸入通道的互相關計算:
池化處理
通過卷積層輸出的特征圖直接來進行訓練(如使用softmax分類器),那么計算量會很大。因而在卷積層之后,一般會進行池化處理。
如果我們構造的卷積核輸出\(Y[i, j]=1\),那么說明輸入中\(X[i, j]\)和\(X[i, j+1]\)數值不一樣。這可能意味着物體邊緣通過這兩個元素之間。但實際圖像里,我們感興趣的物體不會總出現在固定位置:即使我們連續拍攝同一個物體也極有可能出現像素位置上的偏移。這會導致同一個邊緣對應的輸出可能出現在卷積輸出\(Y\)中的不同位置,進而對后面的模式識別造成不便。
池化處理的提出可以緩解卷積層對位置的過度敏感性。
池化的優點:
- 降維
- 克服過擬合
- 在圖像識別領域,池化還能提供平移和旋轉不變性
池化處理:也叫作降采樣處理(down-pooling),是對不同位置的特征進行聚合統計。相應的層就叫做池化層或者降采樣層。
同卷積層一樣,池化層每次對輸入數據的一個固定形狀窗口(又稱池化窗口)中的元素計算輸出。不同於卷積層里計算輸入和核的互相關性,池化層直接計算池化窗口內元素的最大值或者平均值。該運算也分別叫做最大池化或平均池化。在二維最大池化中,池化窗口從輸入數組的最左上方開始,按從左往右、從上往下的順序,依次在輸入數組上滑動。當池化窗口滑動到某一位置時,窗口中的輸入子數組的最大值即輸出數組中相應位置的元素。
如下圖,是池化窗口形狀為\(2\times2\)的最大池化:
最大池化:提取圖片的紋理
平均池化:保留圖片的背景特征
多通道
池化層和卷積層一樣,都可以手動指定填充和步幅。
在處理多通道輸入數據時,池化層對輸入通道分別進行池化,而不是像卷積層那樣將各通道的輸入按通道相加。這意味着池化層的輸出通道數與輸入通道數相等。
多層處理
一般而言,在圖像處理中,一層卷積及降采樣往往只學到了局部的特征。層數越多,學到的特征越全局化。因此通過多層處理,低級的特征組合形成更高級的特征表示。