1. 程式人生 > >深度學習經典目標檢測例項分割語義分割網路的理解之二 RCNN

深度學習經典目標檢測例項分割語義分割網路的理解之二 RCNN

本篇主要剖析R-CNN網路架構,參考了幾篇優秀的博文!特別是@shenxiaolu1984 的目標檢測系列博文。

流程:

RCNN演算法分為4個步驟 

- 一張影象生成1K~2K個候選區域
- 對每個候選區域,使用深度網路提取特徵
- 特徵送入每一類的SVM 分類器,判別是否屬於該類 
- 使用迴歸器精細修正候選框位置 

這裡寫圖片描述

候選區域生成

這部分還參考了@guoyunfei20的一篇專門介紹selective search 的博文,非常棒:

使用了Selective Search1方法從一張影象生成約2000-3000個候選區域。

其步驟如下:


step1:計算區域集R裡每個相鄰區域的相似度S={s1,s2,…} 
step2:找出相似度最高的兩個區域,將其合併為新集,新增進R 
step3:從S中移除所有與step2中有關的子集 
step4:計算新集與所有子集的相似度 

step5:跳至step2,直至S為空

換句話說就是先使用一種過分割手段將影象分割成小區域,再合併可能性最高的兩個區域。重複直到整張影象合併成一個區域位置 輸出所有曾經存在過的區域,所謂候選區域候選區域生成和後續步驟相對獨立,實際可以使用任意演算法進行。

相似度計算

顏色、紋理、尺寸和空間交疊這4個引數。

顏色相似度(color similarity)
將色彩空間轉為HSV,每個通道下以bins=25計算直方圖,這樣每個區域的顏色直方圖有25*3=75個區間。 對直方圖除以區域尺寸做歸一化後使用下式計算相似度:


紋理相似度(texture similarity)

論文采用方差為1的高斯分佈在8個方向做梯度統計,然後將統計結果(尺寸與區域大小一致)以bins=10計算直方圖。直方圖區間數為8*3*10=240(使用RGB色彩空間)。


其中,是直方圖中第個bin的值。

尺寸相似度(size similarity)


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

例:設有區域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。

交疊相似度(shape compatibility measure)



3.5、最終的相似度


多樣化與後處理

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

作者提供了Selective Search的原始碼,內含較多.p檔案和.mex檔案,難以細查具體實現。

最後的資料結構

一張輸入圖片,得到大概2K個候選框,有重疊的情況。結構維度(2000,x,y,w,h)

特徵提取

候選樣本預處理

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

預訓練

網路結構 
基本借鑑Hinton 2012年在Image Net上的分類網路2,略作簡化3。 
這裡寫圖片描述 
此網路提取的特徵為4096維,之後送入一個4096->1000的全連線(fc)層進行分類。 
學習率0.01。

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

調優訓練(fine turning)

網路結構 
同樣使用上述網路,最後一層換成4096->21的全連線網路。 
學習率0.001,每一個batch包含32個正樣本(屬於20類)和96個背景。

訓練資料 
使用PASCAL VOC 2007的訓練集,輸入一張圖片,輸出21維的類別標號,表示20類+背景。 
考察一個候選框和當前影象上所有標定框重疊面積最大的一個。如果重疊比例大於0.5,則認為此候選框為此標定的類別;否則認為此候選框為背景。

類別判斷

分類器 
對每一類目標,使用一個線性SVM二類分類器進行判別。輸入為深度網路輸出的4096維特徵,輸出是否屬於此類。 
由於負樣本很多,使用hard negative mining方法。 即大多數選擇出來的候選框都是背景其實。
正樣本 
本類的真值標定框。 
負樣本 
考察每一個候選框,如果和本類所有標定框的重疊都小於0.3,認定其為負樣本

位置精修

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

對每一類目標,使用一個線性脊迴歸器進行精修。加入一個l2_norm的懲罰項(這部分我也不確定。。。正則項λ=10000λ=10000。 )

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

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

這裡找到一個github的程式碼:https://github.com/broadinstitute/keras-rcnn 用Keras復現的。

參考文獻:
  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.