「目標檢測」RCNN算法詳解

Region CNN(RCNN)可以說是利用深度學習進行目標檢測的開山之作

。作者Ross Girshick多次在PASCAL VOC的目標檢測競賽中折桂,2010年更帶領團隊獲得終身成就獎,如今供職於Facebook旗下的FAIR。

這篇文章思路簡潔,在DPM方法多年平臺期後,效果提高顯著。包括本文在內的一系列目標檢測算法:RCNN, Fast RCNN, Faster RCNN代表當下目標檢測的前沿水平,在github都給出了基於Caffe的源碼

思想

本文解決了目標檢測中的兩個關鍵問題。

問題一:速度

經典的目標檢測算法使用滑動窗法依次判斷所有可能的區域。本文則預先提取一系列較可能是物體的候選區域,之後僅在這些候選區域上提取特徵,進行判斷。

問題二:訓練集

經典的目標檢測算法在區域中提取人工設定的特徵(Haar,HOG)。本文則需要訓練深度網絡進行

特徵提取。可供使用的有兩個數據庫:

一個較大的識別庫(ImageNet ILSVC 2012):標定每張圖片中物體的類別。一千萬圖像,1000類。

一個較小的檢測庫(PASCAL VOC 2007):標定每張圖片中,物體的類別和位置。一萬圖像,20類。

本文使用識別庫進行預訓練,而後用檢測庫調優參數。最後在檢測庫上評測。

流程

RCNN算法分為4個步驟

- 一張圖像生成1K~2K個候選區域

- 對每個候選區域,使用深度網絡提取特徵

- 特徵送入每一類的SVM 分類器,判別是否屬於該類

- 使用迴歸器

精細修正候選框位置

「目標檢測」RCNN算法詳解

候選區域生成

使用了Selective Search1方法從一張圖像生成約2000-3000個候選區域。基本思路如下:

- 使用一種過分割手段,將圖像分割成小區域

- 查看現有小區域,合併可能性最高的兩個區域。重複直到整張圖像合併成一個區域位置

- 輸出所有曾經存在過的區域,所謂候選區域

候選區域生成和後續步驟相對獨立,實際可以使用任意算法進行。

合併規則

優先合併以下四種區域:

- 顏色(顏色直方圖)相近的

- 紋理(梯度直方圖)相近的

- 合併後總面積小的

- 合併後,總面積在其BBOX中所佔比例大的

第三條,保證合併操作的尺度較為均勻,避免一個大區域陸續“吃掉”其他小區域。

例:設有區域a-b-c-d-e-f-g-h。較好的合併方式是:ab-cd-ef-gh -> abcd-efgh -> abcdefgh。

不好的合併方法是:ab-c-d-e-f-g-h ->abcd-e-f-g-h ->abcdef-gh -> abcdefgh。

第四條,保證合併後形狀規則。

例:左圖適於合併,右圖不適於合併。

「目標檢測」RCNN算法詳解

上述四條規則只涉及區域的顏色直方圖、紋理直方圖、面積和位置。合併後的區域特徵可以直接由子區域特徵計算而來,速度較快。

多樣化與後處理

為儘可能不遺漏候選區域,上述操作在多個顏色空間中同時進行(RGB,HSV,Lab等)。在一個顏色空間中,使用上述四條規則的不同組合進行合併。所有顏色空間與所有規則的全部結果,在去除重複後,都作為候選區域輸出。

作者提供了Selective Search的源碼,內含較多.p文件和.mex文件,難以細查具體實現。

特徵提取

預處理

使用深度網絡提取特徵之前,首先把候選區域歸一化成同一尺寸227×227。

此處有一些細節可做變化:外擴的尺寸大小,形變時是否保持原比例,對框外區域直接截取還是補灰。會輕微影響性能。

預訓練

網絡結構

基本借鑑Hinton 2012年在Image Net上的分類網絡2,略作簡化3。

「目標檢測」RCNN算法詳解

此網絡提取的特徵為4096維,之後送入一個4096->1000的全連接(fc)層進行分類。

學習率0.01。

訓練數據

使用ILVCR 2012的全部數據進行訓練,輸入一張圖片,輸出1000維的類別標號。

調優訓練

網絡結構

同樣使用上述網絡,最後一層換成4096->21的全連接網絡。

學習率0.001,每一個batch包含32個正樣本(屬於20類)和96個背景。

訓練數據

使用PASCAL VOC 2007的訓練集,輸入一張圖片,輸出21維的類別標號,表示20類+背景。

考察一個候選框和當前圖像上所有標定框重疊面積最大的一個。如果重疊比例大於0.5,則認為此候選框為此標定的類別;否則認為此候選框為背景。

類別判斷

分類器

對每一類目標,使用一個線性SVM二類分類器進行判別。輸入為深度網絡輸出的4096維特徵,輸出是否屬於此類。

由於負樣本很多,使用hard negative mining方法。

正樣本

本類的真值標定框。

負樣本

考察每一個候選框,如果和本類所有標定框的重疊都小於0.3,認定其為負樣本

位置精修

目標檢測問題的衡量標準是重疊面積:許多看似準確的檢測結果,往往因為候選框不夠準確,重疊面積很小。故需要一個位置精修步驟。

迴歸器

對每一類目標,使用一個線性脊迴歸器進行精修。正則項λ=10000

λ=10000。

輸入為深度網絡pool5層的4096維特徵,輸出為xy方向的縮放和平移。

訓練樣本

判定為本類的候選框中,和真值重疊面積大於0.6的候選框。

結果

論文發表的2014年,DPM已經進入瓶頸期,即使使用複雜的特徵和結構得到的提升也十分有限。本文將深度學習引入檢測領域,一舉將PASCAL VOC上的檢測率從35.1%提升到53.7%

本文的前兩個步驟(候選區域提取+特徵提取)與待檢測類別無關,可以在不同類之間共用。這兩步在GPU上約需13秒。

同時檢測多類時,需要倍增的只有後兩步驟(判別+精修),都是簡單的線性運算,速度很快。這兩步對於100K類別只需10秒。

以本論文為基礎,後續的fast RCNN4(參看這篇博客)和faster RCNN5(參看這篇博客)在速度上有突飛猛進的發展,基本解決了PASCAL VOC上的目標檢測問題。


  1. J. Uijlings, K. van de Sande, T. Gevers, and A. Smeulders. Selective search for object recognition. IJCV, 2013. ↩
  2. A. Krizhevsky, I. Sutskever, and G. Hinton. ImageNet classification with deep convolutional neural networks. In NIPS, 2012 ↩
  3. 所有層都是串行的。relu層為in-place操作,偏左繪製。 ↩
  4. Girshick, Ross. “Fast r-cnn.” Proceedings of the IEEE International Conference on Computer Vision. 2015. ↩
  5. Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with region proposal networks.” Advances in Neural Information Processing Systems. 2015. ↩
「目標檢測」RCNN算法詳解


分享到:


相關文章: