Faster R-CNN論文解讀

Faster R-CNN論文解讀

一、相關知識

存在問題:過去的模型在提取proposal時花費時間過多,對於proposal的處理較爲繁瑣。
數據集:PASCAL VOC、 MS COCO

二、論文貢獻

1、創造性的提出了把RPNs與Fast R-CNN相結合的方案,在數據集的目標檢測上結果有了顯著提升。
2、大大地縮短了網絡的運行時間,提高了精度和速度,節省成本。
3、具有很高的使用價值。

三、模型結構

在這裏插入圖片描述
模型主要由兩部分組成,第一部分是一個深度完全卷積網絡(RPN),主要負責提取區域;第二部分是一個Fast R-CNN檢測器,來處理提取的這些區域。
首先介紹RPN:對RPN輸入一張圖片,它會輸出一系列矩形提取區域,每一個都附帶着目標對象的分數,作者通過一個完全卷積神經網絡實現這個過程。要明確作者的最終目標是和Fast R-CNN共享計算,因此設定這兩個模型共享一系列卷積層。
在這裏插入圖片描述
爲了生成區域提議,作者在卷積特徵圖上使用了一個滑動窗口,最後得到的特徵被提供給了兩個全連接層——box-regression layer和box-classification layer,此處的滑動窗口採用3*3的大小。在每個滑窗位置上同時預測多種類型的區域提議(如右側四個方框),把所有可能的提議值記作k。所以對於k個區域,迴歸層有4k個輸出,而對於分類層只有2k個輸出(是或不是)。
作者着重講述了一下多尺度的迴歸參考(Multi-Scale Anchors as Regression References )
對於這種多尺度問題一般有兩種解決方案:一種是重新改變圖片的大小(如下圖),這種方法比較有用但是耗時。
在這裏插入圖片描述
另一種方法則是在特徵圖上採用不同大小的滑窗,這種方法比第一種方法使用範圍更加廣泛,如圖:在這裏插入圖片描述
作者的方法基於金字塔的框形,更節省時間。它只依賴於圖片和單尺度的特徵圖,也只使用一種尺寸的過濾器:在這裏插入圖片描述

  • Loss函數
    爲了訓練RPNs,作者使用了一個二分類標籤(是否是目標)。作者對兩種anchors使用了正確的標籤:一種是和真實框有最高重合的anchor,另一種是IoU重合度大於0.7的anchor。對於IoU小於0.3的框一律採用負標籤。以下是作者的loss函數:
    在這裏插入圖片描述
    在這個loss函數中,i表示框的索引值,p(i)表示第i個框是目標的概率。此外P * i =1 if positive else 0.t(i)表示有四個參數的向量(x,y,w,h),t * i表示有正框的真實區域。λ負責平衡兩個損失函數,以下是關於t的相關計算式:在這裏插入圖片描述

  • 訓練RPNs
    RPN可以通過反向傳播算法和SGD算法進行端到端的訓練,其中採取image-centric的取樣策略來訓練網絡。對於一張圖片中的正負框比例一般爲1:1,當比例失調時,會對其進行相應的填充調整。
    作者從一個0均值化的高斯分佈中隨機初始化所有新的層來獲得權重,同時令偏差爲0.01.其它層(例如共享的卷積層)通過預訓練的ImageNet分類模型來初始化。作者把所有層調爲ZF網絡,對於conv3_1及其以上的採用VGG來存儲記憶。對於前60k次mini-batches採用0.001的學習率,而對於在 PASCAL VOC dataset的20k次mini-batches採用0.0001的學習率。此外,對於權重衰減取值爲0.0005.

  • RPN和Fast R-CNN的特徵共享
    RPN和Fast R-CNN都是獨立訓練的,因此需要用不同方式來調整他們的卷積層。因此需要一種可以共享二者卷積層的技術,作者從以下三點來討論共享特徵:
    (1)Alternating training(交替訓練):首先訓練RPN,然後使用提取的區域訓練Fast R-CNN.這個由Fast R-CNN調整的網絡接下來被用來初始化RPN,這個過程不斷迭代進行。
    (2) Approximate joint training(近似關節訓練):在這個方法中,RPN和Fast R-CNN在訓練過程中被整合成了一個網絡。在每一次SGD的迭代過程中,前向傳播生成的區域用來訓練Fast R-CNN時就像是提前計算好的一樣。這個方法很簡單執行,但是它忽略了提議框也是神經網絡的一個迴應,所以也只是個估計值。
    (3) Non-approximate joint training(非近似關節訓練):如以上所述,由RPN所預測的迴歸框也是輸入,在Fast R-CNN的RoI 池化層中既接收卷積特徵,也接受RPN的預測框,因此對於反向傳播解決方案也應該考慮到預測框的部分。在這個方案中,我們需要一個處理預測框不同的RoI池化層。

4-Step Alternating Training
First step:訓練RPN,對其進行初始化和微調。
Second step:通過使用第一步RPN產生的區域提議,來訓練Fast R-CNN,得到一個獨立的檢測網絡。到目前爲止兩個神經網絡還沒有共享卷積層。
Third step:使用檢測網絡來初始化RPN的訓練,但是增加了共享卷積層,並且只調整獨立於RPN的層。
Forth step:保持共享卷積層固定,再調整Fast R-CNN獨立的層。
這樣,兩個神經網絡既共享了卷積層,也形成了一個統一的神經網絡。
由於一些RPN產生的提議彼此間有高度重合。爲了減輕這種狀況,作者採用了NMS,並且爲NMS設置閾值爲0.7,這樣每張圖片提供了大約2000個區域提議。

由於本論文中的實驗多爲對特定數據集的檢測任務,並且與其他基線作比較,然後進行消融研究,此處不再細講,希望深入瞭解的小夥伴們可以直接閱讀一下原論文。_

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