使用CNN實現圖像分類——理解卷積神經網絡(卷積、池化、全連接)

1. 卷積神經網絡(CNN)簡介

19世紀60年代,科學家通過對貓的視覺皮層細胞研究發現,每一個視覺神經元只會處理一小塊區域的視覺圖像,即感受野(Receptive Field)。卷積神經網絡的概念即出自於此。簡單說這樣做保留了圖像的空間信息。

2012年是卷積神經網絡崛起之年。這一年,Alex Krizhevsky帶着卷積神經網絡參加了ImageNet競賽(其重要程度相當於奧運會)並一鳴驚人,將識別錯誤率從26%降到了15%。

從那開始,很多公司開始使用深度學習作爲他們服務的核心。比如,Facebook在他們的自動標記算法中使用了它,Google在照片搜索中使用了,Amazon在商品推薦中使用,Printerst應用於爲他們的家庭飼養服務提供個性化定製,而Instagram應用於他們的搜索引擎。

爲什麼CNN比普通的神經網絡效果更好呢?

2. 卷積神經網絡的結構

2.1 卷積

卷積是指向圖像應用濾波器(Kernel)的過程,通過在原始圖像上平移來提取特徵。
CNN 卷積神經網絡
以圖片處理爲例子,卷積使得神經網絡不再僅對一個像素點處理,而是對一小塊兒區域進行處理。這種做法,使得神經網絡可以看到圖形,而不是某一個點,從而加深了對圖片的理解。

在卷積神經網絡中,一個卷積層可以有多個不同的卷積核(也可以說是濾波器),而每個卷積核在輸入圖像上滑動且每次只處理一小塊圖像。這樣輸入端的卷積層可以提取到圖像中最基礎的特徵,比如不同方向的直線或者拐角;接着再組合成高階特徵,比如三角形、正方形等;再繼續抽象組合,得到眼睛、鼻子和嘴等五官;最後再將五官組合成一張臉,完成匹配識別。即每個卷積層提取的特徵,在後面的層中都會抽象組合成更高階的特徵。

卷積層有兩個特點:局部連接(Local Connection)和權值共享(Weight Sharing)。局部連接:每個神經元只與上一層的一個局部區域連接,該連接的空間大小叫做神經元的感受野(receptive field)。權值共享:當前層在深度方向上每個channel的神經元都使用同樣的權重和偏差。局部連接和權值共享降低了參數量,使訓練複雜度大大下降,並減輕了過擬合。同時權值共享還賦予了卷積網絡對平移的容忍性。

2.2 池化(降採樣)(子採樣)

池化(pooling)是對圖片進行壓縮(降採樣)的一種方法。
max_pool 最大池化

池化主要的作用是壓縮數據和參數的量(保持最顯著的特徵),通過去掉Feature Map中不重要的樣本,進一步減少參數數量。Pooling的方法很多,通常採用最大池化。

最大池化可以使得CNN具備一定的旋轉不變性。參考:https://www.zhihu.com/question/30817011

2.3 分類/全連接(FC, Full Connection)

前面的卷積和池化相當於做特徵工程,最後的全連接層在整個卷積神經網絡中起到“分類器”的作用。

如果FC層作爲最後一層,再加上softmax或者wx+b,則可以分別作爲分類或迴歸的作用,即“分類器”或“迴歸器”的作用

如果作爲倒數第2,3層的話,FC層的作用是信息融合,增強信息表達。

3. 搭建CNN 結構

CNN NET

比較流行的一種搭建結構是這樣,從下到上的順序:

  1. 首先是輸入的圖片(image)
  2. 經過一層卷積層 (convolution)
  3. 然後在用池化(pooling)方式處理卷積的信息(比如使用max pooling 的方式).
  4. 在經過一次同樣的處理, 把得到的第二次處理的信息傳入兩層全連接的神經層 (fully connected),這也是一般的兩層神經網絡層

4. 參考

卷積神經網絡介紹https://www.cnblogs.com/kongweisi/p/10987870.html

卷積神經網絡提取圖像特徵時具有旋轉不變性嗎?
https://www.zhihu.com/question/30817011

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章