faster rcnn新的理解

本篇文章結合了源碼解讀記憶對於faster rcnn進行一些新的看法
精髓就是:使用深度卷積網絡選出候選框,fast rcnn選出候選區域,attention,RPN告訴fast rcnn
到底應該關注哪裏。
首先faster rcnn在定義網絡結構的時候,是在原來的特徵提取網絡的基礎上進行微調的,所以網絡結構主要分爲

  • Extrator:利用CNN進行特徵提取,網路結構可以採用VGG16也可以採用resnext,或者直接使用與訓練模型,可以將conv5-3的輸出作爲圖片的特徵輸入到RPN中,因爲這一層的感受野爲16,相當於原始圖片的大小。
  • RPN。候選區域網絡,爲ROIhead模塊提取候選區域,是一個完全的卷積網絡,可端到端的訓練,產生檢測區域,anchor就是多尺度寬高比
  • ROIhead:負責ROI的微調

RPN可以使用反向傳播算法和SGD進行端到端的訓練,作者遵循image-centric採樣原則,訓練網絡,每個mini-batch都是從一個image中產生,包含很多正anchor和負anchor的例子。這樣優化損失函數是可能的,但是由於負anchor按主導地位,可能會產生偏差。因此,一個mini-batch中隨機抽選了一個image中的256個anchor來計算損失函數,其中正負比爲1:1,如果一個image中正樣本少於128,則使用負樣本補足。

新的層權重都使用均值0,標準差0.01的高斯分佈初始化,其它層(共享卷積)使用在ImageNet上預訓練的網絡進行初始化。

Sharing Features for RPN and Fast RCNN
如何使RPN和fast RCNN共享卷積層,一起訓練。文中討論了三種方法:
交替訓練:首先訓練RPN,然後使用proposal訓練fast rcnn。然後用fast rcnn微調好的網絡來初始化RPN,重複進行這個過程。論文中的實驗也是採用這個方法。
近似聯合訓練:RPN和fast rcnn合併到一個網絡中訓練。在每個SGD迭代中,前向傳播產生region proposal,然後用來訓練fast rcnn。反向傳播則跟以前一樣,在fast rcnn和RPN的共享卷積層的損失中傳播信號。
非近似聯合訓練
:上述討論的RPN預測的bounding box也是輸入函數。fast rcnn中的RoI pooling層接收這些卷積層,將預測的bounding box作爲輸入。

  • Step Alternating Training

實際採用4步訓練算法,通過交替優化學習共享特徵。
第一步,訓練RPN,由ImageNet預訓練的模型初始化,由端到端訓練的網絡微調。
第二步,使用第一步中的region proposal訓練一個單獨的fast rcnn檢測網絡。目前爲止這兩個網絡並沒有共享卷積層。
第三步,使用檢測網絡來初始化RPN訓練,但是凍結共享卷積層,只訓練RPN中獨有的層。現在這兩個網絡共享卷積層,
第四步,凍結共享卷積層,微調fast rcnn中獨有的層。如此,兩個網絡來自一個統一的網絡,並且共享卷積層。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章