Faster R-CNN 解讀:用網絡生成候選區域

Title: Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks(2016)
Link: papercode
Key points:

  1. 理解新概念 RPN(Region Proposal Network) (3.1)
  2. 理解 Fatser R-CNN 架構
  3. RPN 如何與 Fast R-CNN 結合,如何交替訓練(3.2)

Summary:
又是一篇 two-stage 的 detector,全文最核心最難理解的部分是 3.1 PRN 網絡,至於 3.2 的交替訓練還是好理解的。

這裏總結一下 RPN。

PRN 的作用是在檢測前先預選一些區域(框),我們的選擇標準是:

  1. 這些區域包含感興趣的類別(我只想檢測人和動物,包含天空草地的區域就不選)
  2. 預測出來的區域/框和 ground truth 框重疊度高(檢測人只用這個大小和比例的框,太小太大的框我都不要)

基於以上兩點構建損失函數,我們就能先篩選一部分感興趣的區域(候選框)。

但是圖片這麼大,先篩選哪部分呢?拿一個窗口,在圖像經 CNN 得到的特徵圖上從頭開始滑動,這樣就能做到全覆蓋

但是還要注意,滑動窗口,在每個窗口進行選擇時,如果裏面包含你研究類別的物體,你就要先要給物體劃定一片區域,也就是預測包含這個物體的框。物體大小不同,對應的框也不同,到底給這裏的物體預測多大的框,論文的方案是預測幾個不同大小,縱橫比的框(論文是3*3=9,這九個框叫 anchor),這九個框總有幾個和真實框接近的,重疊度高的框就晉級了。

至此,PRN 的使命完成,它經過一系列篩選,給了檢測網絡(Fast R-CNN)一批候選者,檢測網絡只需要判斷這些框中的物體類別,以及進一步選擇與 ground truth 接近的框。

現在你應該明白 PRN 幹了什麼,它乾的工作就是 海選!

那沒有 PRN 就不行了嗎,我直接用滑動窗口在 feature map 上分類、預測位置也行呀。可以的,但這樣網絡就要花大量的精力預測那些我們不研究的物體(一幅圖,你感興趣的物體往往是少數),大量無用的 region 都需要單獨進入分類網絡,耗時還可能不收斂!

Fast R-CNN 問題:

  • 繼Fast R-CNN後,在CPU上實現的區域建議算法 Selective Search、EdgeBoxes等成了物體檢測速度提升上的最大瓶頸。

Faster R-CNN 創新點:

  • 設計Region Proposal Networks(RPN),利用CNN卷積操作後的特徵圖生成region proposals,代替了Selective Search、EdgeBoxes等方法,速度上提升明顯;
  • 訓練Region Proposal Networks與檢測網絡(Fast R-CNN)共享卷積層,大幅提高網絡的檢測速度。

Faster R-CNN 模塊:

  • 用於生成區域的深度全卷積網絡和 Fast R-CNN detector。

相比 Fast R-CNN 模塊的改變:

  • Fast R-CNN 生成區域需要外部的 SS 模塊,而 Faster R-CNN 是一個統一的模塊,生產區域部分由 PRN 完成

Faster R-CNN 交替訓練流程:

  • 訓練PRN:使用 ImageNet-pre-trained model 初始化,針對 region proposal 任務 fine tune
  • 用第一步得到的 PRN 訓練 Fast R-CNN:其中 Fast R-CNN 也用 ImageNet-pre-trained model 初始化(此時兩個網絡還沒有共享特徵)。
  • 用 Fast R-CNN 初始化 PRN:固定共享的卷積層,僅微調 RPN 特有的層(此時兩個網絡開始共享)
  • 在保持共享卷積層固定不變的情況下,微調 Fast R-CNN 的特有層。(兩個網絡共享相同的卷積層並形成統一的網絡)

Faster R-CNN 檢測流程:

  • 輸入一張多目標圖像
  • 圖像經過 CNN 網絡生成 feature map
  • feature map 分兩路,一路經過 PRN 得到候選區域(經過 NMS ),另一路繼續向後傳播。
  • 上一步得到的高維特徵圖和區域建議同時輸入 RoI 池化層,提取對應區域建議的特徵
  • 區域特徵通過全連接層後,輸出該區域的分類得分以及迴歸後的 bounding-box

Abstract

之前的 object detection 方法有 SPPnet 和 Fast R-CNN 已經指出 region proposal 的計算是瓶頸。

在這項工作中,我們引入了一個 Region Proposal Network(RPN),該網絡與檢測網絡共享全圖像卷積特徵,從而實現幾乎免費的區域提議。

關於 PRN:

  • RPN是一個完全卷積的網絡,可以同時預測每個位置的對象範圍和對象得分;
  • 對RPN進行了端到端的訓練,以生成高質量的區域建議,Fast R-CNN將其用於檢測;
  • 通過共享RPN和Fast R-CNN的卷積特徵,我們將RPN和Fast R-CNN進一步合併爲一個網絡。

1 INTRODUCTION

proposals 是當前檢測任務的計算瓶頸,而且考慮到檢測網絡部分,用 GPU 加速 proposals 的計算不太有效。

本文提出一個讓 proposal 計算用時幾乎爲 0 的方法——引入了一個 novel 的網絡 Region Proposal Networks (RPNs)。PRN 通過和 object detection 網絡(SPPnet / Fast R-CNN)共享卷積層,使得 test 階段 proposal 的計算用時幾乎爲0。

  • 想法來源:作者觀察到基於區域的檢測器(如Fast R-CNN )的卷積特徵圖也可以用於生成 region proposals。
  • 與檢測結合:爲了將RPN與快速R-CNN 對象檢測網絡統一起來,提出了一種訓練方案,該方案在對區域建議任務進行微調與對對象檢測進行微調之間交替,同時保持 proposal 不變。
  • 評估:我們在PASCAL VOC檢測基準上全面評估了我們的方法,在該基準上,具有 Fast R-CNN 的 RPN 產生的檢測精度優於具有 Fast R-CNN 的選擇性搜索的 benchmark。
  • 擴展:該模型還可用於 3D object detection , part-based detection , instance segmentation , and image captioning 等任務。

2 RELATED WORK

Object Proposals——
object proposal 產生的方法主要有兩種:一種基於分組超像素(Selective Search, CPMC , MCG),一種基於滑動窗口 (objectness in windows, EdgeBoxes, )

object proposal方法被用作獨立於檢測器的外部模塊(Selective Search object detectors, R- CNN, Fast R-CNN)

Deep Networks for Object Detection——
R-CNN訓練CNN將 proposal 區域分類爲對象類別或背景,但它不預測邊界。

之後有一些論文提出預測邊界的方法,如OverFeat 和 MultiBox (後面會與 Faster R-CNN 比較)

卷積的共享計算一直吸引着越來越多的注意力,以尋求有效而準確的視覺識別,如 OverFeat,SPP,Fast R-CNN。

3 FASTER R-CNN

本文提出的 object detection 系統稱爲 Faster R-CNN,包含兩個模塊:用於生成區域的深度全卷積網絡和 Fast R-CNN detector。

整個系統是統一的,其中的 RPN 模塊提供一些候選區域給 Fast R-CNN 模塊。
在這裏插入圖片描述

3.1 Region Proposal Networks

RPN 接收(任何大小的)圖像作爲輸入,並輸出一組矩形框,每個矩形框都有一個客觀評分(評分表明這個位置有物體的概率)。PRN 用 FCN 實現。

region proposals 的生成過程:在該網絡最後一層輸出的特徵圖(圖 3 最下面的 feature map)上滑動一個小型網絡(圖 3 的 sliding window)。 這個小網絡將特徵圖的 n×n 的這部分區域(圖 3 的紅框)作爲輸入,經過中間層映射成低維特徵(256-d),此特徵被送入兩個同級的全連接層-框迴歸層(reg)和框分類層(cls)。

其中分類層判斷這部分區域有沒有數據集包含的類別(這一層輸出一個分數 1 或 0:有包含的類別纔打 1,其餘情況爲 0。注意不是這片區域有物體就行,我們只關心規定的那幾種類別,比如 COCO 數據集就包含 80 類,這裏有其他任何東西都和我們的任務無關,都是 0 ), 如果有我們感興趣的物體,迴歸層預測一些框。
在這裏插入圖片描述

3.1.1 Anchors

在滑動窗口經過的每個位置,我們需要同時預測/迴歸多個框(爲什麼要多個,因爲物體大小不同,ground truth 的框也不同,一個大小的框框不住所有類型的物體)。其中每個位置輸出的最大可能框數表示爲 k。 因此,reg層有 4k 個輸出,對 k 個框的座標進行編碼,而cls層則輸出 2k 個得分,這些得分估計每個框是對象或非對象的概率。

k個 proposal 相對於k個參考框已參數化,文章稱其爲 anchors。

anchor(錨點)是圖 3 中滑動窗口中心的點,每個錨點都與一個尺寸和一個縱橫比關聯。默認情況下,使用3個尺寸和3個縱橫比,在每個滑動位置產生k = 9個錨點。

我們的方法的一個重要特性是,在錨點和計算相對於錨點的 proposal 的函數方面,它都是平移不變(translation invariant)的。

多尺度預測有兩種流行的方法:第一種方法基於圖像/特徵金字塔,第二種方法是在特徵圖上使用多個比例(和/或縱橫比)的滑動窗口。

相比之下,我們的基於錨的方法是基於錨的金字塔構建的,這種方法更具成本效益。 我們的方法參照多個比例和縱橫比的錨框對邊界框進行分類和迴歸。 它僅依賴單一比例的圖像和特徵圖,並使用單一尺寸的濾波器。

3.1.2 Loss Function

爲了訓練RPN,爲每個錨點分配一個二進制類標籤。

正樣本:與一個 ground truth box 有最高 IoU,或者與任意 ground truth box 的 IoU 都在 0.7 之上的錨點。

負樣本:與所有 GT 的 IoU 都低於 0.3

有了標籤的定義,來看目標函數,涉及分類和迴歸兩個任務,分類是判斷這片區域的物體是否屬於數據集類別, 迴歸是預測物體位置。
在這裏插入圖片描述

3.1.3 Training RPNs

PRN 可以端到端地使用 SGD 訓練。

採樣模式採取了 Fast R-CNN 的 image-centric 方法。

使用 Caffe 實現。

3.2 Sharing Features for RPN and Fast R-CNN

3.1 只是說如何生成 region proposals,還沒有涉及目標檢測如何使用這些框。

目標檢測網絡使用的 Fast R-CNN,接下來講如何把 RPN 和 Fast R-CNN 通過共享卷積層的方式組合成一個統一的網絡。

RPN 和 Fast R-CNN 都是單獨訓練的,因此只需要想如何讓這兩個網絡共享卷積層,而不用訓練兩個不同的網絡。

文章討論了三種特徵共享的訓練方式:

  1. Alternating training:先訓練RPN,然後使用生成的 proposal 訓練 Fast R-CNN,接着,用由Fast R-CNN 調過的網絡初始化 RPN,重複此過程。 這是本文所有實驗中使用的解決方案。
  2. Approximate joint training:把兩部分像圖 2 那樣合併起來,訓練 Fast R-CNN 時把 PRN 當作預先訓練好一樣看待,直接用它生成的 proposal,反向傳播時會同時考慮兩個網絡。這種方式實現起來簡單,但是此解決方案忽略了導數 proposal 的座標也是網絡響應,是一種近似聯合的方式。
  3. Non-approximate joint training:在一個非近似的聯合訓練解決方案中,我們需要一個框的座標,這超出了本文的討論範圍。

總之,文章選的是 4-step 交替訓練的方式——

  • 訓練PRN:使用 ImageNet-pre-trained model 初始化,針對 region proposal 任務 fine tune
  • 用第一步得到的 PRN 訓練 Fast R-CNN:其中 Fast R-CNN 也用 ImageNet-pre-trained model 初始化(此時兩個網絡還沒有共享特徵)。
  • 用 Fast R-CNN 初始化 PRN:固定共享的卷積層,僅微調 RPN 特有的層(此時兩個網絡開始共享)
  • 在保持共享卷積層固定不變的情況下,微調 Fast R-CNN 的特有層。(兩個網絡共享相同的卷積層並形成統一的網絡)

4 EXPERIMENTS

4.1 Experiments on PASCAL VOC

Dataset: PASCAL VOC 2007, PASCAL VOC 2012
Metric: mean Average Precision (mAP)

表 2 的上半部分展示的是 Fast R-CNN 使用不同的 region proposal 生成方法的結果,可以看出 PRN 和 Fast R-CNN 的結合起來,檢測效果最好(59.9),而且只用了 300 個 proposal。
在這裏插入圖片描述
爲了研究RPNs作爲提議方法的行爲,文章進行了一些消融研究,結果是表 2 的下半部分:

  1. 展示了在 RPN 和 Fast R-CNN 檢測網絡之間共享卷積層的效果。
  2. 分離 RPN 對訓練 Fast R-CNN 檢測網絡的影響。通過使用 2000 個 SS proposals 和 ZF net 訓練 Fast R-CNN,通過更改測試時使用的 proposal 評估檢測性能。
  3. 分別調查 RPN 的 cls 和 reg 角色,在測試時通過關閉輸出來關閉它們。移除 cls,N=100,mAP 明顯下降,移除 reg,N=1000 時分數下降,這表明高質量的 proposal 主要源於迴歸框的邊界。
  4. 評估了更強大的網絡對RPN提案質量的影響。從 PRN + ZF 到 PRN + VGG,mAP 從 56.8% 提升到 59.2%。

5 CONCLUSION

  • 本文提出了 PRN 以高效精準地生成 region proposal。
  • PRN 通過與檢測網絡共享權重,region proposal 部分的計算幾乎是免費的。
  • PRN 的引入也提高了 region proposal 的質量和檢測的準確性。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章