【目標檢測】RCNN算法詳解

 

Girshick, Ross, et al. “Rich feature hierarchies for accurate object detection and semantic segmentation.” 
Proceedings of the IEEE conference on computer vision and pattern recognition. 2014.

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 分類器,判別是否屬於該類
- 使用迴歸器精細修正候選框位置

這裏寫圖片描述


候選區域生成

使用了Selective Search方法從一張圖像生成約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。

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

 

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


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

多樣化與後處理

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

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

特徵提取

預處理

使用深度網絡提取特徵之前,首先把候選區域歸一化成同一尺寸227×227。
此處有一些細節可做變化:外擴的尺寸大小,形變時是否保持原比例,對框外區域直接截取還是補灰。會輕微影響性能。

預訓練

網絡結構

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

此網絡提取的特徵爲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秒。
 

發佈了11 篇原創文章 · 獲贊 6 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章