【論文筆記】物體檢測系列 R-FCN: Object Detection via Region-based Fully Convolutional Networks

論文鏈接:https://arxiv.org/abs/1605.06409

代碼鏈接:https://github.com/daijifeng001/R-FCN


——————————————————————————我是正文的分割線——————————————————————

0. 引言

本文提出了region-based fully convolutional networks(RFCN)用於目標檢測。

在此之前的RCNN系列的目標檢測框架通常包含兩部分:(i)ROI Pooling之前的一個共享的全卷積網絡;(ii)ROI Pooling之後的不共享的ROI-wise的子網絡。這主要是因爲歷史上先驅的分類網絡如AlexNet,VGGNet等都是類似的結構——一個卷積組成的網絡,接pooling層,再接幾個fc層。這樣物體分類網絡中的最後一個pooling層可以方便地替換成ROI Pooling,然後用在物體檢測網絡中。

現在時代已經翻到了新的篇章,現在的state of the art 的物體分類網絡如ResNet,GoogLeNet都是全卷積網絡,我們想在目標檢測方面也全卷積。但是之前的嘗試都精度比較低。爲了解決這一問題,在ResNet的文章裏在兩部分conv層之間插入了RoI Pooling layer,這樣通過加深ROI-wise的子網絡的深度提高了精度,但同時卻降低了速度,因爲在計算每一個RoI時計算不共享。 

前面提到的通過ROI-wise的子網絡提高精度,這主要是解決了圖像分類和物體檢測之間的差異:分類需要特徵具有平移不變性,檢測則要求對目標的平移做出準確響應。現在的大部分CNN在分類上可以做的很好,但用在檢測上效果不佳。SPP,Faster R-CNN類的方法在ROI pooling前都是卷積,是具備平移不變性的,但一旦插入ROI pooling之後,後面的網絡結構就不再具備平移不變性了。這樣就能用於物體檢測。當然這種設計也導致了訓練和測試時更加耗時,因爲ROI pooling後的子網絡在計算每一個RoI時計算不共享。

本文提出了一種Region-based Fully Convolutional Network (R-FCN),其結構是FCN中的一種,爲了將translation variance 包含進FCN,我們用FCN的輸出設計了一組 position sensitive score maps,它包含物體的位置信息,其頂端設有RoI Pooling層來處理位置信息,之後再沒有權重層。這樣,RFCN就將幾乎所有的計算都共享,可以達到比faster rcnn快2.5-20倍。

1. our approach

 

  • Backbone architecture:ResNet 101去掉最後一層全連接層,保留前100層,再接一個1*1*1024的全卷積層(100層輸出是2048d,爲了降維引入了一個1*1的卷積層,則輸出爲1024d)。

  • k^2*(C+1)的conv層:Backbone architecture的輸出是W*H*1024,經過k^2*(C+1)的conv層得到channel=k^2*(C+1),大小爲W*H的position sensitive score map。k = 3表示把一個ROI劃分成3*3,表示分別預測9個位置(上左,上中,上右,中左,中中,中右,下左,下中,下右)包含(C+1)個物體的score。如下圖所示,在3*3的區域內,每一個區域內都預測(C+1)類的得分,比如下圖左上角的bin預測的是可能是人這個類且是人的左上部位的score(也預測是其他C個類且是該類坐上部位的score)
這裏寫圖片描述
  • ROI pooling輸入是k^2*(C+1)*W' *H'(W'和H'是ROI的寬度和高度)的score map,輸出爲(C+1)*k*k大小的score map,然後k*k個bin直接進行求和(每個類單獨做)得到每一類的score,然後進行softmax得到每類的最終得分
  • 損失函數:和faster RCNN類似,由分類loss和迴歸loss組成,分類用交叉熵損失(log loss),迴歸用L1-smooth損失

  • 訓練的樣本選擇策略:online hard example mining。主要思想就是對樣本按loss進行排序,選擇前面loss較小的,這個策略主要用來對負樣本進行篩選,使得正負樣本更加平衡。
  • 訓練細節:
    • decay = 0.0005
    • momentum = 0.9
    • 單尺度訓練:圖片resize到短邊600
    • 使用8個GPU進行訓練,每個GPU 1張圖,選擇B=128個ROIs進行反向傳播
    • fine-tune learning rate = 0.001 for 20k mini-batches,  0.0001 for 10k mini-batches on VOC.
    • the 4-step alternating training between training RPN and training R-FCN.(類似於Faster RCNN)
    • 使用atrous(hole算法)來解決stride reduce的問題

2. experiments

下文選自reference【1】

  • VOC2007和VOC2010上與Faster R-CNN的對比:R-FCN比Faster RCNN好!

  • 深度影響對比:101深度最好!

  • region proposal算法對比:RPN比SS,EB好!

 

  •  COCO庫上與Faster R-CNN的對比:R-FCN比Faster RCNN好!

  • 效果示例:


reference:

1.http://blog.csdn.net/baidu_32173921/article/details/71741970




發佈了53 篇原創文章 · 獲贊 266 · 訪問量 52萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章