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、有監督預訓練
資料集為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變換的橫向和縱向平移、放縮這四種線性變換函式的權值。
三、測試流程:
- 輸入一張多目標影象,採用selective search演算法提取約2000個建議框;
- 在每個建議框周圍加上16個畫素值為建議框畫素平均值的邊框,再直接將框變形為227×227的大小;
- 將所有建議框畫素減去該建議框畫素平均值後【預處理操作】,再依次將每個227×227的建議框輸入AlexNet CNN網路獲取4096維的特徵,將CNN的fc7層的輸出作為特徵,2000個建議框的CNN特徵組合成2000×4096維矩陣;
- 將每個region proposal提取到的CNN特徵輸入到每一類的SVM進行分類,判別是否屬於該類:將2000×4096維特徵與20個SVM組成的權值矩陣4096×20相乘【20種分類,SVM是二分類器,則有20個SVM】,獲得2000×20維矩陣表示每個建議框是某個物體類別的得分;
- 分別對上述2000×20維矩陣中每一列即每一類進行非極大值抑制剔除重疊建議框,得到該列即該類中得分最高的一些建議框;
- 分別用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)為每個目標候選框進行卷積神經網路正向傳遞,而不共享計算,導致檢測速度很慢。