1. 程式人生 > >基於CNN的常見深度學習網路總結歸納

基於CNN的常見深度學習網路總結歸納

本文主要是對前一段時間的深度學習進行歸納總結,其中有參考幾位主要博主的理解,也有自己對大神論文的一些翻譯及看法,如有問題,歡迎大家指正;


深度學習

     深度學習主要是對人工神經網路的延伸,它的目的主要是模擬人腦的機制來解釋影象,深度學習通過組織底層特徵來形成更加高階的高層特徵來表示屬性和類別,深度學習演算法包括限制波爾茲曼機和CNN網路等,本文主要講解CNN網路,其實就是在看完個博主文章後還有很多不懂的地方的進一步梳理。


1. CNN 網路


CNN即convolutional Neutral Network, 也叫卷積神經網路,類似於認得神經元,不同神經元有不同的功能,卷積神經網路中主要有兩類神經元,一類是C元,一類是S元,C代表convolution, 即卷積,

卷積操作主要用於特徵提取,S代表subsampling,就是下采樣,也叫特徵對映,其實就是池化操作;因此卷積神經網路也主要由C層和S層組成,C層為特徵提取層,每個神經元的輸入與前一層的區域性感受野相連,並提取該區域性的特徵,一旦該區域性特徵被提取後,它與其他特徵間的位置關係也隨之確定下來;S層是特徵對映層,網路的每個計算層由多個特徵對映組成,每個特徵對映為一個平面,平面上所有神經元的權值相等。同時,也包括一個啟用函式,主要就是將特徵進行分類,可以為sigmoid啟用函式或RELU函式,Sigmoid的優點是輸出範圍有限,所以資料在傳輸過程中不易發散。


卷積神經網路概論圖

卷積神經網路中卷積和下采樣都是通過視窗實現的,卷積層一幫為3*3或5*5的視窗,依次劃過原圖,從而產生一系列特徵圖,下采樣層一般為2*2的視窗,可以進行均值取樣或者最大值取樣等,下面就已LeNet為力,重點說一下卷積神經網路,我可能更加註重那些沒有在其他自己很容易糊塗的細節。


INPUT:輸入圖片,32*32畫素;

C1 65*5的卷積核,產生628*28的特徵圖;

S2:用2*2的視窗進行下采樣,產生614*14的特徵圖;

C3:用165*5的卷積核,每層以不定個數S2層特徵圖為輸入,產生1610*10的特徵圖;(這裡的不定個數指的是可能是兩個如1,3,也3個,1,3,5)

S4:用2*2的視窗進行下采樣,產生165*5的特徵圖;

C5:用1205*5的卷積核,每層以S4層全部16個特徵圖為輸入,產生1201*1的特徵圖;(這裡全部的特徵圖作為輸入不是必須,如果特徵圖過多,也可以選擇部                                                        分作為輸入,所以C5層不是全連結層)

F6:用841*1的卷積核,每層以C5全部120特徵圖為輸入,產生841*1的特徵圖;

         (這裡才是必須適用上一層所有的圖作為輸入,故稱為全連線層,用來把前面提取到的特徵綜合起來,需要固定大小的輸入)


這裡說到以部分或者全部的卷積特徵圖作為輸入,那麼具體過程是什麼呢,以C3層的產生為例子,假設現在以S2的3個特徵圖作為輸入,那我們就可以進行選擇,比如選擇特徵圖1,3,5;那麼現在你就拿著這16個卷積核中其中一個分別對特徵圖1,3,5進行卷積,這樣就可以得到三個結果,其實就是三個矩陣,然後對這些矩陣分配權值,就是分配他們所佔的比重,加入偏置後得到一個矩陣,這個矩陣就是C3的一個特徵圖;


一直提到權值和偏置,這裡插入一張自己總結的圖片,同時也奉上一個講解很清楚的連結:



由於CNN是針對於整個圖片進行滑動卷積,沒有針對性,因此就誕生了RCNN,即基於Region的CNN,它的原理主要是先用selective search的方法選取出可能的區域,就是有關鍵資訊的區域進行裁剪或者拉伸,這裡裁剪和拉伸的目的主要是生成固定大小的圖片用於全連結層的輸入,為了方便計算,全連結層處需要每個區域都是固定大小的圖片,但是實際上裁剪和拉伸都會造成圖片資訊的流失,這裡先大概介紹RCNN的過程:


•步驟: •1. 用selectivesearch 將一張影象生成1K~2K個 候選區域 
2. 對每個候選區域, wrap crop成固定大小(227*227)的影象輸入到CNN中,使用深度網路提取特徵 (因為FC層的輸入需要固定的大小,因此預處理是必須的)
3. 特徵送入每一類的 SVM  分類器,判別是否屬於該類 
4. 使用 迴歸器(bounding-box regression)精細修正候選框位置,即對於SVM分好類的RegionProposal做邊框迴歸
這裡我在學習的時候遇到的問題是如何定位,其實這就是邊框迴歸的作用,在selective search時會保留圖片的座標,在分好類後,又會利用邊框迴歸返回區域的精確位置,從而從原圖中圈出,具體如下:
bounding box 用於對前期選定的region proposal做微調,雖然圖中region proposal 圈定了目標,但如果跟ground truth的對比IOU小於0.5, 也是屬於錯誤圈定,因此會根據ground truth做出調整。   
假設藍色為之前圈定的region proposal,粉色為手動標註的ground truth(因為CNN為監督學習的深度網路,所以需要手動輸入參考資料,這個手動輸入的資料就是ground truth),黑色為最後修訂的結果, 則設劃定的region proposal P 座標為(Px,Py,Pw,Ph),x,y代表視窗中心點座標,w,h表示舉行的長和寬,   手動標定的Ground Truth G 座標為(Gx,Gy,Gw,Gh),則邊框迴歸幾位找到黑色的框G',   根據給定的P,求取函式對映使得f(P)=G'約等於G;更詳細的講解參見