【目标检测】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)可以說是利用深度學(xué)習(xí)進(jìn)行目標(biāo)檢測(cè)的開山之作。作者Ross Girshick多次在PASCAL VOC的目標(biāo)檢測(cè)競賽中折桂,2010年更帶領(lǐng)團(tuán)隊(duì)獲得終身成就獎(jiǎng),如今供職于Facebook旗下的FAIR。
這篇文章思路簡潔,在DPM方法多年平臺(tái)期后,效果提高顯著。包括本文在內(nèi)的一系列目標(biāo)檢測(cè)算法:RCNN,Fast RCNN, Faster RCNN代表當(dāng)下目標(biāo)檢測(cè)的前沿水平,在github都給出了基于Caffe的源碼。
思想
本文解決了目標(biāo)檢測(cè)中的兩個(gè)關(guān)鍵問題。
問題一:速度
經(jīng)典的目標(biāo)檢測(cè)算法使用滑動(dòng)窗法依次判斷所有可能的區(qū)域。本文則預(yù)先提取一系列較可能是物體的候選區(qū)域,之后僅在這些候選區(qū)域上提取特征,進(jìn)行判斷。
問題二:訓(xùn)練集
經(jīng)典的目標(biāo)檢測(cè)算法在區(qū)域中提取人工設(shè)定的特征(Haar,HOG)。本文則需要訓(xùn)練深度網(wǎng)絡(luò)進(jìn)行特征提取。可供使用的有兩個(gè)數(shù)據(jù)庫:
一個(gè)較大的識(shí)別庫(ImageNet ILSVC 2012):標(biāo)定每張圖片中物體的類別。一千萬圖像,1000類。
一個(gè)較小的檢測(cè)庫(PASCAL VOC 2007):標(biāo)定每張圖片中,物體的類別和位置。一萬圖像,20類。
本文使用識(shí)別庫進(jìn)行預(yù)訓(xùn)練,而后用檢測(cè)庫調(diào)優(yōu)參數(shù)。最后在檢測(cè)庫上評(píng)測(cè)。
流程
RCNN算法分為4個(gè)步驟
- 一張圖像生成1K~2K個(gè)候選區(qū)域
- 對(duì)每個(gè)候選區(qū)域,使用深度網(wǎng)絡(luò)提取特征
- 特征送入每一類的SVM 分類器,判別是否屬于該類
- 使用回歸器精細(xì)修正候選框位置
候選區(qū)域生成
使用了Selective Search1方法從一張圖像生成約2000-3000個(gè)候選區(qū)域。基本思路如下:
- 使用一種過分割手段,將圖像分割成小區(qū)域
- 查看現(xiàn)有小區(qū)域,合并可能性最高的兩個(gè)區(qū)域。重復(fù)直到整張圖像合并成一個(gè)區(qū)域位置
- 輸出所有曾經(jīng)存在過的區(qū)域,所謂候選區(qū)域
候選區(qū)域生成和后續(xù)步驟相對(duì)獨(dú)立,實(shí)際可以使用任意算法進(jìn)行。
合并規(guī)則
優(yōu)先合并以下四種區(qū)域:
- 顏色(顏色直方圖)相近的
- 紋理(梯度直方圖)相近的
- 合并后總面積小的
- 合并后,總面積在其BBOX中所占比例大的
第三條,保證合并操作的尺度較為均勻,避免一個(gè)大區(qū)域陸續(xù)“吃掉”其他小區(qū)域。
例:設(shè)有區(qū)域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。
第四條,保證合并后形狀規(guī)則。
例:左圖適于合并,右圖不適于合并。
上述四條規(guī)則只涉及區(qū)域的顏色直方圖、紋理直方圖、面積和位置。合并后的區(qū)域特征可以直接由子區(qū)域特征計(jì)算而來,速度較快。
多樣化與后處理
為盡可能不遺漏候選區(qū)域,上述操作在多個(gè)顏色空間中同時(shí)進(jìn)行(RGB,HSV,Lab等)。在一個(gè)顏色空間中,使用上述四條規(guī)則的不同組合進(jìn)行合并。所有顏色空間與所有規(guī)則的全部結(jié)果,在去除重復(fù)后,都作為候選區(qū)域輸出。
作者提供了Selective Search的源碼,內(nèi)含較多.p文件和.mex文件,難以細(xì)查具體實(shí)現(xiàn)。
特征提取
預(yù)處理
使用深度網(wǎng)絡(luò)提取特征之前,首先把候選區(qū)域歸一化成同一尺寸227×227。
此處有一些細(xì)節(jié)可做變化:外擴(kuò)的尺寸大小,形變時(shí)是否保持原比例,對(duì)框外區(qū)域直接截取還是補(bǔ)灰。會(huì)輕微影響性能。
預(yù)訓(xùn)練
網(wǎng)絡(luò)結(jié)構(gòu)
基本借鑒Hinton 2012年在Image Net上的分類網(wǎng)絡(luò)2,略作簡化3。
此網(wǎng)絡(luò)提取的特征為4096維,之后送入一個(gè)4096->1000的全連接(fc)層進(jìn)行分類。
學(xué)習(xí)率0.01。
訓(xùn)練數(shù)據(jù)
使用ILVCR 2012的全部數(shù)據(jù)進(jìn)行訓(xùn)練,輸入一張圖片,輸出1000維的類別標(biāo)號(hào)。
調(diào)優(yōu)訓(xùn)練
網(wǎng)絡(luò)結(jié)構(gòu)
同樣使用上述網(wǎng)絡(luò),最后一層換成4096->21的全連接網(wǎng)絡(luò)。
學(xué)習(xí)率0.001,每一個(gè)batch包含32個(gè)正樣本(屬于20類)和96個(gè)背景。
訓(xùn)練數(shù)據(jù)
使用PASCAL VOC 2007的訓(xùn)練集,輸入一張圖片,輸出21維的類別標(biāo)號(hào),表示20類+背景。
考察一個(gè)候選框和當(dāng)前圖像上所有標(biāo)定框重疊面積最大的一個(gè)。如果重疊比例大于0.5,則認(rèn)為此候選框?yàn)榇藰?biāo)定的類別;否則認(rèn)為此候選框?yàn)楸尘啊?/p>
類別判斷
分類器
對(duì)每一類目標(biāo),使用一個(gè)線性SVM二類分類器進(jìn)行判別。輸入為深度網(wǎng)絡(luò)輸出的4096維特征,輸出是否屬于此類。
由于負(fù)樣本很多,使用hard negative mining方法。
正樣本
本類的真值標(biāo)定框。
負(fù)樣本
考察每一個(gè)候選框,如果和本類所有標(biāo)定框的重疊都小于0.3,認(rèn)定其為負(fù)樣本
位置精修
目標(biāo)檢測(cè)問題的衡量標(biāo)準(zhǔn)是重疊面積:許多看似準(zhǔn)確的檢測(cè)結(jié)果,往往因?yàn)楹蜻x框不夠準(zhǔn)確,重疊面積很小。故需要一個(gè)位置精修步驟。
回歸器
對(duì)每一類目標(biāo),使用一個(gè)線性脊回歸器進(jìn)行精修。正則項(xiàng)λ=10000?。
輸入為深度網(wǎng)絡(luò)pool5層的4096維特征,輸出為xy方向的縮放和平移。
訓(xùn)練樣本
判定為本類的候選框中,和真值重疊面積大于0.6的候選框。
結(jié)果
論文發(fā)表的2014年,DPM已經(jīng)進(jìn)入瓶頸期,即使使用復(fù)雜的特征和結(jié)構(gòu)得到的提升也十分有限。本文將深度學(xué)習(xí)引入檢測(cè)領(lǐng)域,一舉將PASCAL VOC上的檢測(cè)率從35.1%提升到53.7%。
本文的前兩個(gè)步驟(候選區(qū)域提取+特征提取)與待檢測(cè)類別無關(guān),可以在不同類之間共用。這兩步在GPU上約需13秒。
同時(shí)檢測(cè)多類時(shí),需要倍增的只有后兩步驟(判別+精修),都是簡單的線性運(yùn)算,速度很快。這兩步對(duì)于100K類別只需10秒。
以本論文為基礎(chǔ),后續(xù)的fast RCNN4(參看這篇博客)和faster RCNN5(參看這篇博客)在速度上有突飛猛進(jìn)的發(fā)展,基本解決了PASCAL VOC上的目標(biāo)檢測(cè)問題。
總結(jié)
以上是生活随笔為你收集整理的【目标检测】RCNN算法详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Stanford机器学习笔记-6. 学习
- 下一篇: 【目标检测】Fast RCNN算法详解