1. R-CNN:Rich feature hierarchies for accurate object detection and semantic segmentation
技術路線:selective search + CNN + SVMs
Step1:候選框提取(selective search)
訓練:給定一張圖片,利用seletive search方法從中提取出2000個候選框。由於候選框大小不一,考慮到后續CNN要求輸入的圖片大小統一,將2000個候選框全部resize到227*227分辨率(為了避免圖像扭曲嚴重,中間可以采取一些技巧減少圖像扭曲)。
測試:給定一張圖片,利用seletive search方法從中提取出2000個候選框。由於候選框大小不一,考慮到后續CNN要求輸入的圖片大小統一,將2000個候選框全部resize到227*227分辨率(為了避免圖像扭曲嚴重,中間可以采取一些技巧減少圖像扭曲)。
Step2:特征提取(CNN)
訓練:提取特征的CNN模型需要預先訓練得到。訓練CNN模型時,對訓練數據標定要求比較寬松,即SS方法提取的proposal只包含部分目標區域時,我們也將該proposal標定為特定物體類別。這樣做的主要原因在於,CNN訓練需要大規模的數據,如果標定要求極其嚴格(即只有完全包含目標區域且不屬於目標的區域不能超過一個小的閾值),那么用於CNN訓練的樣本數量會很少。因此,寬松標定條件下訓練得到的CNN模型只能用於特征提取。
測試:得到統一分辨率227*227的proposal后,帶入訓練得到的CNN模型,最后一個全連接層的輸出結果---4096*1維度向量即用於最終測試的特征。
Step3:分類器(SVMs)
訓練:對於所有proposal進行嚴格的標定(可以這樣理解,當且僅當一個候選框完全包含ground truth區域且不屬於ground truth部分不超過e.g,候選框區域的5%時認為該候選框標定結果為目標,否則位背景),然后將所有proposal經過CNN處理得到的特征和SVM新標定結果輸入到SVMs分類器進行訓練得到分類器預測模型。
測試:對於一副測試圖像,提取得到的2000個proposal經過CNN特征提取后輸入到SVM分類器預測模型中,可以給出特定類別評分結果。
結果生成:得到SVMs對於所有Proposal的評分結果,將一些分數較低的proposal去掉后,剩下的proposal中會出現候選框相交的情況。采用非極大值抑制技術,對於相交的兩個框或若干個框,找到最能代表最終檢測結果的候選框(非極大值抑制方法可以參考:http://blog.csdn.net/pb09013037/article/details/45477591)
R-CNN需要對SS提取得到的每個proposal進行一次前向CNN實現特征提取,因此計算量很大,無法實時。此外,由於全連接層的存在,需要嚴格保證輸入的proposal最終resize到相同尺度大小,這在一定程度造成圖像畸變,影響最終結果。