經典論文重讀---目標檢測篇(二):Fast RCNN
核心思想
RCNN的缺點
R-CNN is slow because it performs a ConvNet forward pass for each object proposal, without sharing computation.
SPPnet的缺點
SPPnet also has notable drawbacks. Like R-CNN, training is a multi-stage pipeline that involves extracting features, fine-tuning a network with log loss, training SVMs, and finally fitting bounding-box regressors. Features are also written to disk
FAST RCNN貢獻
The Fast R-CNN method has several advantages:
- Higher detection quality (mAP) than R-CNN, SPPnet
- Training is single-stage, using a multi-task loss
- Training can update all network layers
- No disk storage is required for feature caching
引言部分
深度卷積網路在影象識別和目標檢測領域取得了很大的成功。目前的方法:RCNN、SPPnet、overfeat、segDeepM都有一定的侷限性,他們都是多階段的pipline,速度慢,結果不精確。
模型與網路越來越複雜是因為對物體定位的準確性要求越來越高,由此帶來的兩大挑戰:
- 要產生大量的候選框
- 候選框只是一個粗略的定位,還需要進一步調整才能達到精確定位
由此作者提出了Fast RCNN,採用的是VGG16網路架構,並在當時取得了state-of-the-art的效果。
之後作者詳細解釋了下RCNN與sppnet的缺點,對於RCNN來說,主要有:
- Training is a multi-stage pipeline.首先對卷積網路進行fine-tune,之後訓練SVM分類器來代替採用softmax啟用函式的全連線層,在之後訓練一個邊框迴歸器
- Training is expensive in space and time.訓練時間空間的複雜度都很高
- Object detection is slow.檢測速度慢
作者一針見血的指出,RCNN比較慢的原因在於:它對每一個proposal都過了一遍卷積網路,而SPPnet就沒有采用這種策略,作者總結了下SPPnet的優點與缺點:
- 優點在於:SPPnet計算出整個影象的feature map,然後為每個候選區域從feature map中提取出相應的feature vector(通過max pooling得到)
- 缺點在於:SPPnet也是一個multi-stage pipeline,並且無法更新卷積層的引數
FAST RCNN
模型結構如下:
其中roi pooling層的引入對與速度的提升起到了至關重要的作用,作者對ROI pooling層進行了詳解。roi pooling layer會通過max pooling的方式一個region proposal對應的feature map變為一個小型的feature map(在原文中是7x7的feature map)。根據原文可得具體操作如下:
- 根據輸入的image得到對應的feature map,找到roi在feature map上對應的區域位置。
- 將roi在feature map上對應的區域位置劃分成大小相同的 個section(原文中是 )
- 對每一塊section採用max pooling得到該roi最終的feature map
具體例子如下,來源於deepsense:
FAST RCNN論文細節
rcnn,sppnet與FRCN在fine-tune上的差異
首先sppnet不能夠通過 spatial pyramid pooling layer更新權值,而FRCN則可以通過反向傳播更新權值。因為與RCNN一樣,SPPnet每個ROI都來自不同的圖片。並且每個ROI都有著非常大的感受野,而前向傳導處理的是整個感受野,故訓練的輸入非常大。而對於FRCN,SGD minibatch是通過先隨機取樣N張圖片,再從每張圖片隨機取樣R/N個ROI作為一個minibatch的。(原文中 )
除了以上的hierarchical sampling策略,FRCN並沒有分階段訓練,而是採用streamlined training process直接對 softmax classifier and bounding-box regressors進行fine-tune和優化。
loss函式的設計
FAST RCNN有兩個輸出層:
- 第一個輸出: ,對於 類物體每個的可能性大小, 由softmax層計算得出
- 第二個輸出: ,即對於所有K種物體來說,他們的邊框位置
文中使用聯合了分類損失和邊框迴歸損失作為多工損失函式:
其中每個RoI區域都有 ground-truth class u和ground-truth bounding-box regression target v。即 ,當 時 取值為1,否則為0(即為背景)。超引數 是用來調整兩個任務的損失權重的,在文中設定為 .
通過RoI池化層的反向傳播
普通的max pooling層的反向傳播示意圖如下,參考部落格:
通過反向傳播求出梯度,對於輸入層節點
和輸出層節點
: