論文筆記之Faster R-CNN

1.回顧

1.1 RCNN

算法流程:

  • 使用Selective Search方法在輸入的每一張圖片上生成2000個左右的候選區域;
  • 對每個候選區域,使用深度卷積網絡提取特徵;
  • 特徵送入每一類的SVM分類器,判別是否屬於該類;
  • 使用迴歸器進一步修正候選框位置。
    在這裏插入圖片描述

1.2 Fast RCNN

1.2.1 改進之處:

  • 卷積不再是對每個候選區域做,而是對整張圖片,減少了重複計算。
  • 使用ROI pooling進行特徵的尺寸變換,將候選區域變換爲一樣大小,這樣纔可以輸入全連接層。
  • 將分類器放進網絡裏面一起進行訓練,用softmax代替SVM。

1.2.2.算法流程

  • 深度卷積網絡提取圖像特徵;
  • 使用Selective Search方法在輸入的每一張圖片上生成2000個左右的候選區域;
  • 將以上兩部分送入ROI Pooling層,使候選區域大小一樣,然後傳入全卷積層;
  • 分爲兩個輸出層,其中一個使用softmax進行分類,另一個輸出四個值(邊框迴歸)。

在這裏插入圖片描述

2. Faster R-CNN

2.1 改進之處

(1)使用RPN網絡生成候選區域
(2)將候選區域生成,特徵提取,分類器分類,迴歸器迴歸這四步全都交給深度神經網絡來做,大大提高了操作的效率。

2.2 總體結構

在這裏插入圖片描述

  • 首先,輸入圖片統一縮放到固定大小;
  • 接着深度卷積網絡提取圖像特徵;
  • 接着圖像特徵傳入RPN網絡;
  • 接着是ROI Pooling層,傳入的是圖片特徵和proposal,輸出的是proposal feature maps;
  • 最後是全連接層進行分類和再一次迴歸。

2.3 anchors

對於卷積特徵圖,每個點生成k(9)個不同大小的anchor作爲初始的檢測框,寬高比分別爲1:1、1:2、2:1三種,其實就是多尺度操作。

2.4 RPN 網絡

1)首先經過3×3卷積(輸入的M×N大小經過一系列卷積(不考慮池化層)操作後變爲(M+2)×(N+2)(卷積的填充P=1),再經過3×3卷積就可以變爲M×N大小。總體來說(池化層考慮進來)最終的特徵圖大小爲(M/16)×(N/16)(4個池化層,每個池化縮小兩倍));
2)兩條線路,上面的通過softmax生成正例和負例的分類;下面的計算對應的邊界框迴歸偏移量;
3)最後的proposal層綜合正例以及偏移量獲取精確的proposal,同時剔除太小和超出邊界的proposals。

2.5 損失函數

在這裏插入圖片描述
其中,i是mini-batch中的anchor的索引,pi是第i個anchor作爲object的預測概率。如果anchor爲正,則ground-truth標籤在這裏插入圖片描述爲1,如果anchor爲負,則ground-truth標籤在這裏插入圖片描述爲0。 ti是代表預測邊界框的4個參數化座標的向量,ti是與正anchor關聯的ground-truth的4個參數化座標。分類損失Lcls是兩個類別(object與非object)之間的對數損失。對於迴歸損失,使用Lreg(ti; t i)= R(ti􀀀t i),其中R是smooth L1損失函數。p i Lreg表示僅對正anchor(p i = 1)激活迴歸損失,否則不計算迴歸損失(p i = 0)。cls和reg層的輸出分別由fpigftig組成。
這兩項通過Ncls和Nreg歸一化,並通過平衡參數λ加權。在當前的實現中,等式(1)中的Ncls項數值等於mini-batch大小,而Nreg項的數值等於anchor的數量。默認情況下,設置λ= 10。

2.6 訓練

在這裏插入圖片描述
第一步,訓練RPN。該網絡使用ImageNet預訓練的模型初始化,並針對region proposal任務端到端進行了微調。在第二步中,使用步驟1 RPN生成的proposal,通過Fast R-CNN訓練一個單獨的檢測網絡。該檢測網絡也由ImageNet預訓練模型初始化。此時,兩個網絡不共享卷積層。在第三步中,使用檢測網絡初始化RPN訓練,但是調整了共享卷積層,並且僅微調了RPN唯一的層。現在,這兩個網絡共享卷積層。最後,保持共享卷積層固定不變,對Fast R-CNN的唯一層進行微調。這樣,兩個網絡共享相同的卷積層並形成統一的網絡。可以進行類似的交替訓練進行更多迭代,但是觀察到這樣做的提升很小。

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