RCNN算法詳解

Region CNN(RCNN)可以說是利用深度學習進行目標檢測的開山之作。作者Ross Girshick多次在PASCAL VOC的目標檢測競賽中折桂,2010年更帶領團隊獲得終身成就獎,如今供職於Facebook旗下的FAIR。 
這篇文章思路簡潔,在DPM方法多年平臺期後,效果提高顯著。包括本文在內的一系列目標檢測算法:RCNNFast RCNNFaster RCNN代表當下目標檢測的前沿水平,在github都給出了基於Caffe的源碼

思想

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

問題一:速度

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

問題二:訓練集

經典的目標檢測算法在區域中提取人工設定的特徵(Haar,HOG)。本文則需要訓練深度網絡進行特徵提取。可供使用的有兩個數據庫: 
一個較大的識別庫(ImageNet ILSVC 2012):標定每張圖片中物體的類別。一千萬圖像,1000類。 
一個較小的檢測庫(PASCAL VOC 2007):標定每張圖片中,物體的類別和位置。一萬圖像,20類。 
本文使用識別庫進行預訓練,而後用檢測庫調優參數。最後在檢測庫上評測。

流程

RCNN算法分爲4個步驟 
- 一張圖像生成1K~2K個候選區域 
- 對每個候選區域,使用深度網絡提取特徵 
- 特徵送入每一類的SVM 分類器,判別是否屬於該類 
- 使用迴歸器精細修正候選框位置 
這裏寫圖片描述

候選區域生成

使用了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。

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

例:左圖適於合併,右圖不適於合併。 
這裏寫圖片描述

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

多樣化與後處理

爲儘可能不遺漏候選區域,上述操作在多個顏色空間中同時進行(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秒。

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