一文讀懂 R-CNN,Fast R-CNN,Faster R-CNN 發展史

帶你由易到難理解目標檢測算法,點贊收藏不迷路~

一、任務描述

目標檢測是爲了解決圖像裏的物體是什麼,在哪裏的問題。輸入一幅圖像,輸出的是圖像裏每個物體的類別和位置,其中位置用一個包含物體的框表示。
查看源圖像

需要注意,我們的目標,同時也是論文中常說的感興趣的物體,指我們關心的類別(行人檢測只檢測人,交通檢測只關心交通工具等),或者數據集包含的類別,並不是圖像裏所有的物體都是目標,比如建築,草坪也是物體,但他們常常是背景。

從計算機視覺的角度看,目標檢測是分類+定位,從機器學習的角度看,目標檢測是分類+迴歸

二、設計思路

今天介紹的這幾個算法,都基於深度學習,它們把目標檢測大致分爲四部分完成:

  • 先從整幅圖裏選取最可能有物體的一些候選區域,這些區域一般用長方形框表示,這一步能縮小尋找範圍
  • 既然用到深度學習,那就需要學習圖像的深層特徵,這裏我們只關心上一步選出區域的圖像特徵,提取的特徵可用於分類迴歸任務
  • 分類就是常規的分類方法,不過這裏是多分類
  • 第一步給的候選框經過篩選後,不一定精準,還需要根據 ground truth 作調整
  • 分類和定位任務可以同時訓練,也可以依次訓練

在這裏插入圖片描述

三、名詞解釋

  • Selective Search:一種產生候選區的方法,沒有用到深度學習,需要在 CPU 上訓練,比較耗時,簡稱 SS。

  • Region proposal:直譯爲成區域建議(有些彆扭),就是生成候選區的過程,類似於比賽前的海選,其中的 region 是矩形區。方法有 Selective Search,論文中產生 2000 個候選區,下面簡稱這部分產生的區域爲候選區。

  • Bounding box:直譯爲邊界框,就是最後輸出定位的那個矩形框。嚴格來說,分爲人工標註的 ground truth 和 predicted 兩種類型。有時候簡稱爲 BB。

  • Region of interest(ROI):感興趣的區域,有時候論文把 region proposal 產生的區域叫 ROI。

  • Non maximum suppression(NMS):非極大值抑制,簡稱爲 NMS 算法,其思想是搜素局部最大值,抑制極大值,在目標檢測的目的是輸出最合適的邊界框。

  • Fully connected layer:全連接層,我下面簡寫爲 FC 層。

  • Feature map:卷積層的輸出,可翻譯爲特徵圖。

四、比較說明

下面我將從問題背景,創新點,框架模塊,訓練流程,檢測流程五個方面比較介紹他們的發展過程。我更側重它們的宏觀思路,而沒有介紹具體細節,也沒有涉及實驗和代碼。

五、發展歷程

首先用一張圖說明三個架構的區別。
在這裏插入圖片描述
可以看出,他們的發展是從訓練分散到統一的過程,開始還需要藉助外部的模塊 SS,後來可以構造一個聯合框架,開始的檢測是多階段的(multi-satge:生成候選區→提取特徵→分類→定位),後來的檢測是兩階段的(two-satge:生成候選區→提取特徵+分類+定位一次性完成)

1. R-CNN

問題背景——

  • 傳統視覺特徵 SIFT 和 HOG 用於檢測系統,性能提升緩慢
  • CNN 用於分類效果好,能否提升檢測性能

創新點——

  • 把 CNN 用於生成 region proposal,用 CNN 提取的特徵代替 SIFT 和 HOG 這些傳統特徵;
  • 採用大樣本下有監督預訓練+小樣本微調的方式解決小樣本難以訓練甚至過擬合等問題。

框架模塊——

  • 生成候選區模塊
  • 提取特徵的 CNN 模塊
  • 用於分類的 SVM 模塊
  • 修正邊界框模塊

訓練流程——

  • 有監督的預訓練:在大型輔助數據集(ILSVRC2012 classification)上進行 CNN 預訓練,得到一個分類器(CNN)
  • 特定領域的微調:根據檢測任務微調 CNN,把最後 1000 維的分類層替換成 N+1 維的分類層(N 是檢測數據集的類別數,1 是背景)
  • SVM 分類器訓練:由於SVM是二分類器,需要爲每個類別訓練單獨的SVM。對於某一類,一片區域包含該類物體爲正樣本,不包含爲負樣本。如何判斷是否爲正?設定 IOU 閾值,低於閾值的爲負樣本
  • 邊界框迴歸訓練:提高定位精度

檢測流程——

  • 輸入一張多目標圖像
  • 採用 selective search 算法提取約 2000 個建議框,對區域 / 框變形
  • 處理後的區域/框輸入 CNN 提取特徵
  • 對區域進行分類,用非極大抑制提取分數最高(最可能的類)的框
  • 對框進行迴歸修正,選擇分數最高的框

2. Fast R-CNN

問題背景——

  • R-CNN 的訓練是多階段的(multi-stage):預訓練 CNN→針對檢測微調→訓練分類器→訓練邊界框迴歸器

  • R-CNN 的時間空間消耗大:爲了訓練 SVM 分類器和邊界框迴歸器,每個區域的特徵都要提取出來,並且存到磁盤上

  • R-CNN 檢測慢:檢測時需要提取每個區域的特徵,但生成的區域有重疊,所以計算也有重疊。

創新點——

  • 與 R-CNN、SPPnet 相比有更高的檢測精度(mAP)
  • 訓練是單階段的(single-stage),損失是多任務的(multi-task),指把預訓練的 CNN 針對檢測任務微調後,分類和迴歸任務能一起完成
  • 訓練可以更新所有網絡層
  • 特徵緩存不需要磁盤存儲

框架模塊——

與R-CNN 模塊大致相同,相比 R-CNN 模塊有一些改變。

  • 網絡輸入:圖片組以及每幅圖片的一組 RoI
  • CNN 模塊:最後一個最大池化層由 RoI 池化層代替
  • 分類模塊:Fast R-CNN 使用 softmax classifier,R-CNN 和 SPPnet 使用 one-vs-rest linear SVMs。
  • 分類和定位:CNN 網絡的最後一個全連接層和 softmax 替換爲兩個同級層,R-CNN 是獨立的兩個模塊,需要單獨訓練

訓練流程——

  • 有監督的預訓練,得到 CNN
  • 特定領域的微調:首先改變模型,就是上面提到的輸入改變,CNN 的 ROI 池化引入,還有分類迴歸模塊的改變;
  • 接着,輸入圖片和區域後,就能實現端到端的多任務訓練,不需要單獨訓練分類和迴歸模塊。

檢測流程——

  • 輸入一張多目標圖像
  • 採用 selective search 得到的預選區域
  • 用卷積層和池化層處理這幅圖片,生成 feature map;
  • 對於每個候選區域,用一個 RoI 池化層從上一層的 feature map 中提取定長的特徵向量;
  • 同時完成分類迴歸任務:每個 feature vector 送入一系列全連接層,這些全連接層最後會分支成 two sibling output layers: 一個可以在K個對象類以及一個籠統的“背景”類上生成 softmax 概率估計;另一層爲 K 個對象類中的每一個輸出四個實數值(編碼精確的邊界框位置)。

與 R-CNN 相比

  • R-CNN 先用 SS 從圖片生成候選區(然後圖片就不用了),把候選區輸入CNN 提取特徵,因爲生成的區域有重疊,所以計算重複;Fast R-CNN 先用 SS 從圖片生成 候選區,兵分兩路,先把整幅圖輸入 CNN 一次性提取特徵生成特徵圖,對於每個候選區,用一個 RoI 池化層從上一層的 特徵圖中提取定長的特徵向量。
  • R-CNN 對分類和迴歸模塊分別訓練,Fast R-CNN 網絡末尾採用並行的兩個全連接層,可同時輸出分類結果和邊界框的迴歸結果,實現了端到端的多任務訓練。

3. Faster R-CNN

問題背景——

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

創新點——

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

框架模塊——

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

訓練流程——

四步交替訓練:

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

檢測流程——

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

五、總結
在這裏插入圖片描述

推薦:
R-CNN 解讀:CNN 從分類到檢測
Fast R-CNN解讀:單階段,多任務完成檢測
Faster R-CNN 解讀:用網絡生成候選區域
R-CNN 系列詳解

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