R-CNN算法詳解

論文背景

論文全稱:Rich feature hierarchies for accurate object detection and semantic segmentation(簡稱:R-CNN)
論文鏈接:https://arxiv.org/abs/1311.2524
論文日期:2014.10.22

論文是在2014年發表,在目標檢測算法中,表現效果最好的方法是結合了多種低維圖像特徵和高維上下文環境的複雜融合系統。

R-CNN是基於PASCAL VOC數據集進行訓練與檢測的,相較於之前的算法,圖片mean average precision(mAP)得到了超過30%的提升,尤其在VOC 2012數據集上表現最佳,mAP達到53.3%。

算法主要有兩個突出貢獻:

  1. 有一個大容量的卷積神經網絡(CNNs)自頂向下地進行region proposals(候選區域提取),爲了定位和分割物體。
  2. 當帶有標籤的訓練數據稀缺時,有監督的預訓練進行輔助,接着在特定區域進行微調,檢測準確性會得到顯著提升。

訓練流程:
在這裏插入圖片描述

候選區域

region proposal是採用selective search的方法,進行獨立類別的候選區域提取,基於物體的形狀(shape),顏色(color),紋理(texture)等進行區域選擇,考慮到了圖片中物體的多樣性(diversary)以及層(hierarchies)。

特徵提取

對於每一個proposal都提取了一個4096-d的特徵向量,通過一個包含五層卷積層和兩層全連接層的CNN提取特徵。輸入爲256*256的RGB圖片,所以候選區域圖片需先進行尺寸縮放,通過實驗對比,最終選擇了各向同性的縮放方法,使用padding=16的方式進行填充。

特徵提取的訓練分兩個步驟:

  • 基於大量數據的有監督的預訓練:數據集爲ILSVRC2012,這個數據集只有分類標籤,沒有定位標籤,可直接採用VGG16等神經網絡以及預訓練的參數進行遷移學習。
    預訓練的學習率爲0.01。

  • 特殊範圍內進行微調(fine tuning):基於提取的候選區域,在原始的CNN參數上進行訓練,採用SGD(隨機梯度下降),原始的神經網絡的分類種類是1000,現在對於分類層初始化爲n+1(n爲物體類別數,1爲背景)。
    採用IOU>=0.5的爲正樣本,剩餘的爲負樣本,學習率爲0.001(0.01/10),爲了讓微調不造成預訓練的參數特徵快速消失。mini-batch爲128,其中32個爲正樣本,96個爲負樣本。

檢測測試

這是一個二分類問題,對於每一個類別都訓練一個SVM分類器,對於每一個神經網絡提取出來的特徵向量輸入到SVM中進行評分(score),使用greedy non-maximum suppression(非極大值抑制)得到一個更高分的候選區域。

SVM分類器的尺寸爲4096*n。在測試集設置IOU的閾值爲0.3,負樣本爲IOU<0.3。正樣本爲ground-truth bounding boxes,即bounding box將整個對象包含在內。

由於訓練數據對於內存來說太大,每張圖片有2000個候選區域,負樣本數目太多,我們採用了hard negative mining方法,選擇負樣本爲IOU<0.3,提高了檢測準確性和訓練速度。

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