首頁>其它>

深度學習能在計算機視覺中取得突破性的發展,要歸功於卷積神經網絡(convolutional neural network, CNN),而卷積神經網絡的核心是卷積層(convolutional layer)。

1.為什麼卷積神經網絡可用於深度學習圖像領域?

因為用傳統全連接神經網絡處理圖像存在明顯的缺點:

a.圖像展開為向量會丟失空間信息;

b.參數過多,效率低下,難以訓練;

c.大量的參數會導致網絡過擬合。

而CNN可以很好的解決上述問題。

2.卷積神經網絡的組成有哪些?

CNN的各層中的神經元是3維排列的:寬度、高度和深度。比如一張32x32大小的彩色圖像可表示為32x32x3(分別對應寬高深)。

CNN主要組成部分:輸入層、卷積層、激活層、池化層和全連接層。

3.卷積層為何能使用互相關運算替代卷積運算?

在深度學習的圖像領域中,卷積的主要作用是在一個圖像(特徵)上滑動一個卷積核(濾波器),通過卷積操作得到一組新的特徵。由於計算卷積的過程中,需要進行卷積核翻轉等操作,所以實際實現上,常會用更加直觀的互相關(cross-correlation)運算來代替卷積操作,從而減少一些不必要的操作。

互相關運算順序:從左至右、從上至下。

如上圖所示,對圖像中的藍色區域進行cross-correlation運算,有:

output=a*A+b*B+c*C+d*D+e*E+f*F+g*G+h*H+i*I

卷積運算順序:從右至左、從下至上。

如上圖所示,對圖像中的藍色區域進行convolution運算,有:

output = i*A+h*B+g*C+f*D+e*E+d*F+c*G+b*H+a*I

由上述公式可知,卷積運算相當於對filter進行了翻轉(從左往右,從上往下),但是在深度學習中,filter是訓練學習得到的,所以兩種運算方式都不影響模型預測輸出。

因此卷積層雖然得名於卷積運算,但實際使用還是用更加直觀的互相關運算。

4.二維互相關運算

在二維卷積層中,一個二維輸數組和一個二維核(kernel)數組通過互相關運算輸出一個二維數組。

如下圖所示:輸入是一個高和寬均為 3 的二維數組,我們將該數組的形狀記為 3X3 或(3,3)。核數組的高和寬分別為 2,該數組在卷積計算中又稱卷積核或過濾器(filter),卷積核窗口(又稱卷積窗口)的形狀取決於卷積核的高和寬,即 2X2。

陰影部分為第一個輸出元素及其計算所使用的輸入和核數組元素:0x0+1x1+3x2+4x3=19.

在互相關運算過程中,卷積窗口從輸入數組的左上方開始,按從左往右、從上到下的順序滑動,每次滑動都會將窗口中的輸入子數組與核數組按元素相乘再求和,得到輸出數組中相應位置的元素。

上述運算過程代碼實現如下:

5.CNN簡單應用演示——圖像中物體邊緣檢測

下我們來看個卷積層的簡單應用:檢測圖像中物體的邊緣,即找到像素變化的位置。

先我們構造一張6x8的圖像(即高和寬分別為6像素和8像素的圖像)。它中間4列為黑(0),其餘為(1)。

我們將從白到黑的邊緣和從黑到白的邊緣分別檢測成了1 和 -1,其餘部分的輸出全是 0,即檢測到了給定圖像的邊緣特徵。

由此可知,卷積層可通過重複使用卷積核有效地表徵局部空間。

6.二維卷積層

實際應用中,二維卷積層是將輸入和卷積核做互相關運算,然後再加上一個標量偏差來得到輸出。即卷積層的模型參數包括:卷積核和標量偏差。在訓練模型的時候,通常先對卷積核隨機初始化,然後不斷迭代卷積核和偏差,對應於我們之前學的神經網絡中的權重w和偏置b。

下面我們根據前面自定義的互相關運算函數corr2d再自定義一個二維卷積層:

卷積窗形狀為 pxq的卷積層稱為 pxq卷積層。

同樣, pxq卷積或 pxq卷積核說明卷積核的和寬分別為 p和 q。

7.通過數據學習核數組

我們使用上面物體邊緣檢測中的輸入數據X和輸出數據Y來訓練學習我們構造的核數組K。

首先基於互相關運算構造一個卷積層,將其卷積核初始化為隨機數組,然後在每一次迭代訓練中,使用平方誤差作為損失函數來比較Y和卷積層的輸出,然後計算梯度來更新權重參數。

*下面的演示很好的詮釋了CNN模型訓練*

總結

卷積神經網絡的核心作用是提取特徵,主要應用於提取圖像特徵;

二維卷積層的核心計算是二維互相關運算,即對二維輸入數據和卷積核做互相關運算再加上偏差;

基於CNN模型的訓練實際上是通過數據來學習卷積核。

1
最新評論
  • 康明斯6bt發動機
  • 如果曹操沒有關羽,還能戰勝顏良文丑嗎?