R-CNN
R-CNN
目標檢測+深度學習開山之作
CVPR'14
paper:Rich feature hierarchies for accurate object detection and semantic segmentation
亮點
- 使用selection search(region proposal)生成候選框
- 使用AlexNet提取特徵
- 使用SVM對CNN提取的特徵進行分類
- 使用Bounding box迴歸出更加精確的框
網路結構
整個流程
- 輸入一張圖片(任意大小)
- 在影象上應用selection search方法得到2000個候選框
- 對候選框進行裁剪、縮放得到227*227大小的影象塊
- 使用預訓練好的AlexNet作為特徵提取器
- 使用訓練好的SVM作為分類器
- 使用NMS除去重複的框
- 使用訓練好的bounding box 迴歸修正候選框
Selection search
劃分為小塊,對相鄰的塊計算影象相似度,合併相似的塊,重複這個過程,最後得到候選框。
指標包括顏色、紋理、區域大小和區域的合適度
影象處理
填充後再裁剪
裁剪後再填充
直接縮放到目標尺寸
論文對比發現直接縮放到目標尺寸+在影象周圍填充16個畫素(基於上下文)效果比較好。(也可以根據原始影象的畫素決定填充的畫素數)
特徵提取
使用fine-tune,保留AlexNet前五層。AlexNet在大型的資料集上訓練。
分類器
使用SVM*預測種類數量個分類器。
NMS
按照得分排序,除去和最大得分框IOU大於閾值的框,不斷篩選。
預測框修正
附錄C
輸入\((G, P)\), \(G\)是GT bounding box,\(P\)是predict bounding box。
\(P\)除去了那些和任何GT都不沾邊的框,這些框拿來訓練沒意義。
\(t^i_*\)是由\(G\)和\(P\)計算得到的,包括中心點偏移量和長寬的縮放比例。
hard negative mining
主要由樣本量引起。
方法:把難以訓練的樣本放入訓練集中進行訓練。
在文中特徵提取部分和分類器部分使用有點區別,fine-tunning階段是由於CNN對小樣本容易過擬合,需要大量訓練資料,故對IoU限制寬鬆: IoU>0.5的建議框為正樣本,否則為負樣本; SVM這種機制是由於其適用於小樣本訓練,故對樣本IoU限制嚴格:Ground Truth為正樣本,與Ground Truth相交IoU<0.3的建議框為負樣本。
。
缺點
select search只能在CPU上處理,速度慢
每次輸入2000+個候選框,有大量的重複計算,速度很慢
特徵提取、分類、邊框迴歸是三個部分分別訓練
需要額外的儲存空間