1. 程式人生 > >【目標檢測】Faster RCNN演算法詳解

【目標檢測】Faster RCNN演算法詳解

Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with region proposal networks.” Advances in Neural Information Processing Systems. 2015.

本文是繼RCNN[1],fast RCNN[2]之後,目標檢測界的領軍人物Ross Girshick團隊在2015年的又一力作。簡單網路目標檢測速度達到17fps,在PASCAL VOC上準確率為59.9%;複雜網路達到5fps,準確率78.8%。

思想

從RCNN到fast RCNN,再到本文的faster RCNN,目標檢測的四個基本步驟(候選區域生成,特徵提取,分類,位置精修)終於被統一到一個深度網路框架之內

。所有計算沒有重複,完全在GPU中完成,大大提高了執行速度。
這裡寫圖片描述

faster RCNN可以簡單地看做“區域生成網路+fast RCNN“的系統,用區域生成網路代替fast RCNN中的Selective Search方法。本篇論文著重解決了這個系統中的三個問題:
1. 如何設計區域生成網路
2. 如何訓練區域生成網路
3. 如何讓區域生成網路和fast RCNN網路共享特徵提取網路

區域生成網路:結構

基本設想是:在提取好的特徵圖上,對所有可能的候選框進行判別。由於後續還有位置精修步驟,所以候選框實際比較稀疏。
這裡寫圖片描述

特徵提取

原始特徵提取(上圖灰色方框)包含若干層conv+relu,直接套用ImageNet上常見的分類網路即可。本文試驗了兩種網路:5層的ZF[

3],16層的VGG-16[4],具體結構不再贅述。
額外新增一個conv+relu層,輸出51*39*256維特徵(feature)。

候選區域(anchor)

特徵可以看做一個尺度51*39的256通道影象,對於該影象的每一個位置,考慮9個可能的候選視窗:三種面積{128 2 ,256 2 ,512 2 }× 三種比例{1:1,1:2,2:1} 。這些候選視窗稱為anchors。下圖示出51*39個anchor中心,以及9種anchor示例。
這裡寫圖片描述

在整個faster RCNN演算法中,有三種尺度。
原圖尺度:原始輸入的大小。不受任何限制,不影響效能。
歸一化尺度:輸入特徵提取網路的大小,在測試時設定,原始碼中opts.test_scale=600。anchor在這個尺度上設定。這個引數和anchor的相對大小決定了想要檢測的目標範圍。
網路輸入尺度

:輸入特徵檢測網路的大小,在訓練時設定,原始碼中為224*224。

視窗分類和位置精修

分類層(cls_score)輸出每一個位置上,9個anchor屬於前景和背景的概率;視窗迴歸層(bbox_pred)輸出每一個位置上,9個anchor對應視窗應該平移縮放的引數。
對於每一個位置來說,分類層從256維特徵中輸出屬於前景和背景的概率;視窗迴歸層從256維特徵中輸出4個平移縮放參數。

就區域性來說,這兩層是全連線網路;就全域性來說,由於網路在所有位置(共51*39個)的引數相同,所以實際用尺寸為1×1的卷積網路實現。

需要注意的是:並沒有顯式地提取任何候選視窗,完全使用網路自身完成判斷和修正。

區域生成網路:訓練

樣本

考察訓練集中的每張影象:
a. 對每個標定的真值候選區域,與其重疊比例最大的anchor記為前景樣本
b. 對a)剩餘的anchor,如果其與某個標定重疊比例大於0.7,記為前景樣本;如果其與任意一個標定的重疊比例都小於0.3,記為背景樣本
c. 對a),b)剩餘的anchor,棄去不用。
d. 跨越影象邊界的anchor棄去不用

代價函式

同時最小化兩種代價:
a. 分類誤差
b. 前景樣本的視窗位置偏差
具體參看fast RCNN中的“分類與位置調整”段落

超引數

原始特徵提取網路使用ImageNet的分類樣本初始化,其餘新增層隨機初始化。
每個mini-batch包含從一張影象中提取的256個anchor,前景背景樣本1:1.
前60K迭代,學習率0.001,後20K迭代,學習率0.0001。
momentum設定為0.9,weight decay設定為0.0005。[5]

共享特徵

區域生成網路(RPN)和fast RCNN都需要一個原始特徵提取網路(下圖灰色方框)。這個網路使用ImageNet的分類庫得到初始引數W 0  ,但要如何精調引數,使其同時滿足兩方的需求呢?本文講解了三種方法。
這裡寫圖片描述

輪流訓練

a. 從W 0  開始,訓練RPN。用RPN提取訓練集上的候選區域
b. 從W 0  開始,用候選區域訓練Fast RCNN,引數記為W 1  
c. 從W 1  開始,訓練RPN…
具體操作時,僅執行兩次迭代,並在訓練時凍結了部分層。論文中的實驗使用此方法。
如Ross Girshick在ICCV 15年的講座Training R-CNNs of various velocities中所述,採用此方法沒有什麼根本原因,主要是因為”實現問題,以及截稿日期“。

近似聯合訓練

直接在上圖結構上訓練。在backward計算梯度時,把提取的ROI區域當做固定值看待;在backward更新引數時,來自RPN和來自Fast RCNN的增量合併輸入原始特徵提取層。
此方法和前方法效果類似,但能將訓練時間減少20%-25%。公佈的python程式碼中包含此方法。

聯合訓練

直接在上圖結構上訓練。但在backward計算梯度時,要考慮ROI區域的變化的影響。推導超出本文範疇,請參看15年NIP論文[6]。

實驗

除了開篇提到的基本效能外,還有一些值得注意的結論

  • 與Selective Search方法(黑)相比,當每張圖生成的候選區域從2000減少到300時,本文RPN方法(紅藍)的召回率下降不大。說明RPN方法的目的性更明確
    這裡寫圖片描述

  • 使用更大的Microsoft COCO庫[7]訓練,直接在PASCAL VOC上測試,準確率提升6%。說明faster RCNN遷移性良好,沒有over fitting。
    這裡寫圖片描述

  1. 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.
  2. Girshick, Ross. “Fast r-cnn.” Proceedings of the IEEE International Conference on Computer Vision. 2015.
  3. M. D. Zeiler and R. Fergus, “Visualizing and understanding convolutional neural networks,” in European Conference on Computer Vision (ECCV), 2014.
  4. K. Simonyan and A. Zisserman, “Very deep convolutional networks for large-scale image recognition,” in International Conference on Learning Representations (ICLR), 2015.
  5. learning rate-控制增量和梯度之間的關係;momentum-保持前次迭代的增量;weight decay-每次迭代縮小引數,相當於正則化。
  6. Jaderberg et al. “Spatial Transformer Networks”
    NIPS 2015