《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、特徵分類。如下圖所示:
Region proposal
Region proposal是用來做目標定位,即定位目標在影象中的位置。演算法有很多種,作者使用的是selective search。region在影象中的位置可以表示為
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。
白色框為received field,數值為對應的啟用值。可以看出每一列學到的特徵類似。
分類
這一部分其實包括兩個部分,確定類別以及確定region。
確定類別
通過feature來判斷類別,作者訓練的是binary linear SVM,即one-to-rest。
判斷一個region是否包含目標時,作者使用了greedy non-maximum suppression,如果intersection-over-union(IoU) overlap的分值高於閾值,那麼判斷包含目標,否則作為負樣本。
確定區域
對區域進行迴歸。輸入
這裡的
總結
作者提出演算法在PASCAL VOC 2012上有30%提升。取得這樣的效果主要在於兩點:1、使用CNN提取特徵。2、在樣本稀缺時,先通過在ImageNet上pre-training,在在小樣本集上fine-tuning。