1. 程式人生 > >R-CNN 目標檢測演算法詳細總結分析(two-stage)(深度學習)(CVPR 2014)

R-CNN 目標檢測演算法詳細總結分析(two-stage)(深度學習)(CVPR 2014)

論文名稱:《 Rich feature hierarchies for accurate object detection and semantic segmentation 》

論文下載:https://arxiv.org/pdf/1311.2524.pdf

論文程式碼:https://github.com/rbgirshick/rcnn


一、 網路結構:

圖1 R-CNN網路結構

二、訓練過程:

    1、有監督預訓練

資料集為ILSVRC2012,ILSVRC樣本集上僅有影象類別標籤,沒有影象物位

置標註; 
採用AlexNet CNN網路進行有監督預訓練,學習率=0.01; 該網路輸入為

227×227的ILSVRC訓練集影象,輸出最後一層為4096維特徵—>1000類的映

射,訓練網路引數。

    2、特定樣本下的微調

PASCAL VOC 2007樣本集上既有影象中物體類別標籤,也有影象中物體位

置標籤; 
採用訓練好的AlexNet CNN網路進行PASCAL VOC 2007樣本集下的微調,

學習率=0.001【0.01/10為了在學習新東西時不至於忘記之前的記憶】; 

mini-batch為32個正樣本和96個負樣本【由於正樣本太少】; 該網路輸入

為候選框【由selective search而來】變形後的227×227的影象,修改了原來的1000為類別輸出,改為21維【20類+背景】輸出,訓練的是網路引數。

正樣本: Ground Truth+與Ground Truth相交IoU>0.5的建議框

負樣本:與Ground Truth相交IoU≤0.5的建議框

    3、SVM訓練

正樣本: Ground Truth

負樣本:與Ground Truth相交IoU≤0.3的建議框
由於SVM是二分類器,需要為每個類別訓練單獨的SVM; 
SVM訓練時輸入正負樣本在AlexNet CNN網路計算下的4096維特徵,輸出為該類的得分,訓練的是SVM權重向量; 
由於負樣本太多,採用hard negative mining的方法在負樣本中選取有代表性的負樣本,該方法具體見。

    4、Bounding-box regression訓練

正樣本:與Ground Truth相交IoU最大的Region Proposal,並且與Ground Truth相交IoU>0.6的建議框

學習從建議框向Ground Truth變換的橫向和縱向平移、放縮這四種線性變換函式的權值。

三、測試流程:

  1. 輸入一張多目標影象,採用selective search演算法提取約2000個建議框;
  2. 在每個建議框周圍加上16個畫素值為建議框畫素平均值的邊框,再直接將框變形為227×227的大小;
  3. 將所有建議框畫素減去該建議框畫素平均值後【預處理操作】,再依次將每個227×227的建議框輸入AlexNet CNN網路獲取4096維的特徵,將CNN的fc7層的輸出作為特徵,2000個建議框的CNN特徵組合成2000×4096維矩陣;
  4. 將每個region proposal提取到的CNN特徵輸入到每一類的SVM進行分類,判別是否屬於該類:將2000×4096維特徵與20個SVM組成的權值矩陣4096×20相乘【20種分類,SVM是二分類器,則有20個SVM】,獲得2000×20維矩陣表示每個建議框是某個物體類別的得分;
  5. 分別對上述2000×20維矩陣中每一列即每一類進行非極大值抑制剔除重疊建議框,得到該列即該類中得分最高的一些建議框;
  6. 分別用20個迴歸器對上述20個類別中剩餘的建議框進行迴歸操作,精細修正候選框位置,最終得到每個類別的修正後的得分最高的bounding box。

四、selective search演算法:

採取過分割手段,將影象分割成小區域,再通過顏色直方圖,梯度直方圖

相近等規則進行合併,最後生成約2000個建議框。

五、非極大值抑制:

(1)對2000×20維矩陣中每列按從大到小進行排序; 
(2)從每列最大的得分建議框開始,分別與該列後面的得分建議框進行IoU計算,若IoU>閾值,則剔除得分較小的建議框,否則認為影象中存在多個同一類物體; 
(3)從每列次大的得分建議框開始,重複步驟(2); 
(4)重複步驟③直到遍歷完該列所有建議框; 
(5)遍歷完2000×20維矩陣所有列,即所有物體種類都做一遍非極大值抑制; 
(6)最後剔除各個類別中剩餘建議框得分少於該類別閾值的建議框。

六、創新點:

(1)採用高容量的CNN進行特徵提取

(2)採用大樣本下有監督預訓練+小樣本微調的方式解決小樣本難以訓練甚至過擬合等問題。小樣本資料訓練很容易造成網路過擬合,但是在大樣本訓練後利用其引數初始化網路可以很好地訓練小樣本,這解決了小樣本訓練的難題。文中利用ILSVRC2012的訓練集先進行有監督預訓練,再利用PASCAL 2007進行微調。

七、存在問題:

(1)需要多級訓練,特徵提取網路,分類器,邊界迴歸需要分別訓練。

(2)計算複雜度高,重複計算。建議框的數量有幾千個,多數都是互相重疊,重疊部分會被多次重複提取特徵,訓練的時間和空間開銷大。

(3)為每個目標候選框進行卷積神經網路正向傳遞,而不共享計算,導致檢測速度很慢。