1. 程式人生 > >經典論文重讀---目標檢測篇(一):RCNN

經典論文重讀---目標檢測篇(一):RCNN


核心思想

Since we combine region proposals with CNNs, we call our method R-CNN: Regions with CNN features.

即將生成proposal的方法與cnn提取特徵進行結合

引言部分

首先,作者提出,在深度學習之前,過去十多年在各種識別與檢測的任務都是基於SIFT和HOG特徵,SIFT與HOG特徵都是通過基於塊的直方圖提取的,雖然可以提取很多特徵,然而在實際中這些特徵數量仍然不夠。因為識別(recognition)是一個層次性的多階段的計算特徵的過程,它需要更多的資訊。

緊接著作者回顧了2012年ImageNet Large Scale Visual Recognition Challenge (ILSVRC)的冠軍團隊Krizhevsky的CNN模型,也就是我們所說的Alexnet.然後提出了一個疑問:對於較小的資料集PASCAL VOC,基於CNN的分類模型是否也可以取得很好的效果呢,因為Imagenet的資料集相當龐大,可以訓練很好的模型,但是對於小型資料集怎麼解決呢?

當然可以,作者在接下來幾段回答了這個問題,作者首先說了如何解決localization的問題,通過框迴歸(bounding box regression)的方法進行localization。在過去,通常都採用滑動視窗策略(sliding-window approach),但是由於CNN網路的卷積層的感受野太大,因此使得滑動視窗比較耗時。

因此作者採用基於proposal的策略(本文核心之一),即預先產生若干個候選框(原文中說產生2000個proposal),然後用CNN提取每個proposal的特徵,再採用SVM進行分類。

之後作者如何用稀疏的資料訓練一個好的CNN模型(本文核心之二):

supervised pre-training on a large auxiliary dataset (ILSVRC), followed by domain-specific fine-tuning on a small dataset (PASCAL), is an effective paradigm for learning high-capacity CNNs when data is scarce.

最後作者關於模型的效率問題做了些解釋與描述,模型的主要計算在於矩陣向量乘積的運算(CNN卷積層、全連線層運算)以及NMS(非極大值抑制)兩部分。

RCNN細節

整個pipline如下

這裡寫圖片描述
檢測系統的大致流程如下:

  1. 對於一副輸入的影象,通過一些region proposal方法(原文采用的是selective search)產生2000個proposal.

  2. 用CNN提取每一個proposal的特徵

  3. 將這些特徵送入SVM進行分類

細節一:特徵提取

對於所有的proposal,作者都將它們warp到227x227的大小(由於輸入到網路中的圖片大小必須一致),其中warp有一些小的技巧可以減少warp造成影象資訊的丟失(例如對於比較扁的影象):

Regardless of the size or aspect ratio of the candidate region, we warp all pixels in a tight bounding box around it to the required size. Prior to warping, we dilate the tight bounding box so that at the warped size there are exactly p pixels of warped image context around the original box (we use p = 16)

在warp之前,先對bounding box裡的影象進行膨脹擴大,先向外擴充套件p=16個畫素, 得到一個比較方的Region後,在進行放縮。得到標準的227x228 RGB圖後送入5個卷積層接兩個全連線層的網路提取特徵,最終提取到一個維度為4096的向量。
這裡寫圖片描述

細節二:檢測測試

將提取到的特徵用SVM進行訓練,利用訓練好的SVM對產生的2000個候選框進行打分,然後使用NMS非極大值抑制,NMS原理如下

這裡寫圖片描述

就像上面的圖片一樣,定位一個車輛,最後演算法就找出了一堆的方框,我們需要判別哪些矩形框是沒用的。非極大值抑制的方法是:先假設有6個矩形框,根據分類器的類別分類概率做排序,假設從小到大屬於車輛的概率 分別為A、B、C、D、E、F。

  • 從最大概率矩形框F開始,分別判斷A~E與F的重疊度IOU是否大於某個設定的閾值;
  • 假設B、D與F的重疊度超過閾值(IoU),那麼就扔掉B、D;並標記第一個矩形框F,是我們保留下來的。
  • 從剩下的矩形框A、C、E中,選擇概率最大的E,然後判斷E與A、C的重疊度,重疊度大於一定的閾值,那麼就扔掉;並標記E是我們保留下來的第二個矩形框。

就這樣一直重複,找到所有被保留下來的矩形框。

細節三:執行時間分析

RCNN有兩個特性使得檢測非常有效:

  • CNN 的引數對於所有要檢測的物體種類是共享的
  • 提取到的特徵向量比起其他模型提取到的特徵向量維度較低

因此與其他模型相比,計算速度較快

訓練

真實的RCNN實際上是由三個模型組合在一起的:

Our object detection system consists of three modules. The first generates category-independent region proposals. These proposals define the set of candidate detections available to our detector. The second module is a large convolutional neural network that extracts a fixed-length feature vector from each region. The third module is a set of class- specific linear SVMs

訓練步驟一:Supervised pre-training,利用caffee在imagenet的資料集上預訓練

訓練步驟二:在VOC資料集上訓練(依舊採用隨機梯度下降法),fine-tuning。只不過將原先的1000類分類的網路層換為21類分類的網路層。