1. 程式人生 > >《Rich feature hierarchies for accurate object detection and semantic segmentation》筆記

《Rich feature hierarchies for accurate object detection and semantic segmentation》筆記

傳統目標檢測基本都是特徵工程,通過low-level feature,各種methods做ensemble。這篇文章將CNN和目標檢測結合在一起,提出了R-CNN(Regions with CNN features)。

作者提出的方法,主要包括三個模組:1、region proposal,2、CNN提取特徵,3、特徵分類。如下圖所示:

RCNN_01.jpg

Region proposal

Region proposal是用來做目標定位,即定位目標在影象中的位置。演算法有很多種,作者使用的是selective search。region在影象中的位置可以表示為P=(Px,Py,Pw,Ph)

CNN輸入影象的size都是固定大小的,region區域size可能不符合CNN對輸入要求,這時要wrap image。

CNN提取特徵

CNN網路使用了AlexNet,輸入為224
x224。特徵用的是最後一個全連線層的輸出,4096維的向量。

因為標記樣本稀缺,作者首先在大的資料集(ImageNet)進行pre-training,之後再在小的資料集(PASCAL)上fine-tuning,這樣可以提升準確率。

網路第一層都是在學習邊緣和顏色等資訊,後面層學到的資訊難以視覺化。但是可以通過判斷啟用值的大小,確定輸入哪些區域能“啟用”feature map的值。最後一個pooling層的輸出為6x6x256=9216。每個啟用值對應到輸入上的區域是195x195。下圖每一行是每一類別,top 16啟用值對應的region。

RCNN_02.jpg

白色框為received field,數值為對應的啟用值。可以看出每一列學到的特徵類似。

分類

這一部分其實包括兩個部分,確定類別以及確定region。

確定類別

通過feature來判斷類別,作者訓練的是binary linear SVM,即one-to-rest。

判斷一個region是否包含目標時,作者使用了greedy non-maximum suppression,如果intersection-over-union(IoU) overlap的分值高於閾值,那麼判斷包含目標,否則作為負樣本。

確定區域

對區域進行迴歸。輸入(Pi,Gi),這裡Pi=(Pix

,Piy,Piw,Pih)是候選的region, G=(Gx,Gy,Gw,Gh)是標記正確的region。學習的目的是把proposed box P對映到真實regionG,前兩個引數是位置座標,即region的中心,影象縮放,中心的不變;後兩個是width和height,對映到log空間,預測真實regionG^

R_CNN_03.jpg

這裡的d(P)是最後一個pool層輸出特徵的線性函式。

總結

作者提出演算法在PASCAL VOC 2012上有30%提升。取得這樣的效果主要在於兩點:1、使用CNN提取特徵。2、在樣本稀缺時,先通過在ImageNet上pre-training,在在小樣本集上fine-tuning。