Faster R-CNN - 目標檢測詳解

[轉載申明]
作者:AIHGF
鏈接:https://blog.csdn.net/zziahgf/article/details/79311275#comments
鏈接:https://www.aiuai.cn/aifarm192.html
已獲權轉載。
———————————————————————————————————————————
《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》收錄於Neural Information Processing Systems (NIPS), 2015( Meachine Learning領域的頂會)。

相關參考文獻如下:
【1】R-CNN: Girshick R, Donahue J, Darrell T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation[C], CVPR, 2014.
【2】SPPNET: He K, Zhang X, Ren S, et al. Spatial pyramid pooling in deep convolutional networks for visual recognition[C], ECCV, 2014.
【3】Fast-RCNN: Girshick R. Fast R-CNN[C]. ICCV, 2015.
———————————————————————————————————————————
以下爲轉載內容
———————————————————————————————————————————

Object detection: an overview in the age of Deep Learning 已經對基於深度學習的目標檢測進行了概述. 推薦先進行閱讀.

通過對 Faster R-CNN 及相關論文的閱讀理解,以深入理解了其工作方式以及具體實現.

Luminoth 上對 Faster R-CNN 進行了實現,Luminoth 是基於 TensorFlow 的計算機視覺工具包,其易於模型訓練與使用. Luminoth 已經引起了廣泛的關注,ODSC EuropeODSC West 作了相關成果分享.

因此,這裏對 Faster R-CNN 的所有細節進行總結,以供有興趣的讀者作爲參考.

目標檢測的一般結構:

[From Deep Residual Networks - ICML2016 Tourial]

1. 背景

Faster R-CNN 發表於 NIPS 2015,其後出現了很多改進版本,後面會進行介紹.

R-CNN - Rich feature hierarchies for accurate object detection and semantic segmentation 是 Faster R-CNN 的啓發版本. R-CNN 是採用 Selective Search 算法來提取(propose)可能的 RoIs(regions of interest) 區域,然後對每個提取區域採用標準 CNN 進行分類.

出現於 2015 年早期的 Fast R-CNN 是 R-CNN 的改進,其採用興趣區域池化(Region of Interest Pooling,RoI Pooling) 來共享計算量較大的部分,提高模型的效率.

Faster R-CNN 隨後被提出,其是第一個完全可微分的模型. Faster R-CNN 是 R-CNN 論文的第三個版本.

R-CNNFast R-CNNFaster R-CNN 作者都有 Ross Girshick.

2. 網絡結構

Faster R-CNN 的結構是複雜的,因爲其有幾個移動部件. 這裏先對整體框架宏觀介紹,然後再對每個部分的細節分析.

問題描述:

針對一張圖片,需要獲得的輸出有:

  • 邊界框(bounding boxes) 列表;
  • 每個邊界框的類別標籤;
  • 每個邊界框和類別標籤的概率.

Figure 1. Faster R-CNN 結構

首先,輸入圖片表示爲 Height × Width × Depth 的張量(多維數組)形式,經過預訓練 CNN 模型的處理,得到卷積特徵圖(conv feature map). 即,將 CNN 作爲特徵提取器,送入下一個部分.

這種技術在遷移學習(Transfer Learning)中比較普遍,尤其是,採用在大規模數據集訓練的網絡權重,來對小規模數據集訓練分類器. 後面會詳細介紹.

然後,RPN(Region Propose Network) 對提取的卷積特徵圖進行處理. RPN 用於尋找可能包含 objects 的預定義數量的區域(regions,邊界框).

基於深度學習的目標檢測中,可能最難的問題就是生成長度不定(variable-length)的邊界框列表. 在構建深度神經網絡時,最後的網絡輸出一般是固定尺寸的張量輸出(採用RNN的除外). 例如,在圖片分類中,網絡輸出是 (N, ) 的張量,N 是類別標籤數,張量的每個位置的標量值表示圖片是類別 labelilabelilabelilabelilabeli { label_i }Δcenterx,Δcentery,Δwidth,Δheight.

Figure 9. R-CNN 結構

6.1. 訓練和目標

R-CNN 的目標基本上是與 RPN 目標的計算是一致的,但需要考慮不同的可能的 object 類別 classes.

根據 proposals 和 ground-truth boxes,計算其 IoU.

與任何一個 ground-truth box 的 IoU 大於 0.5 的 proposals 被設爲正確的 boxes. IoU 在 0.1 到 0.5 之間時設爲 background.

與 RPN 中目標組裝相關,這裏忽略沒有任何交叉的 proposals. 這是因爲,在此階段,假設已經獲得良好的 proposals,主要關注於解決難例. 當然,所有的這些超參數都是可以用於調整以更好的擬合 objects.

邊界框迴歸的目標計算的是 proposal 與其對應的 ground-truth間的偏移量,只對基於 IoU 閾值設定類別class 後的 proposals 進行計算.

隨機採用一個平衡化的 mini-batch=64,其中,25% 的 foreground proposals(具有類別class) 和 75% 的background proposals.

類似於 RPNs 的 losses,對於選定的 proposals,分類 loss 採用 multiclass entropy loss;對於 25% 的 foreground proposals 採用 SmoothL1 loss 計算其與 groundtruth box 的匹配.

由於 R-CNN 全連接網絡對每個類別class 僅輸出一個預測值,當計算邊框迴歸loss 時需謹慎. 當計算 loss 時,只需考慮正確的類別.

6.2. 後處理

類似於 RPN,R-CNN 最終輸出一堆帶有類別 class 的objects,在返回結果前,再進一步進行處理.

爲了調整邊界框,需要考慮概率最大的類別的 proposals. 忽略概率最大值爲 background class 的proposals.

當得到最終的 objects 時,並忽略被預測爲 background 的結果,採用 class-based NMS. 主要是通過對 objects 根據類別class 分組,然後根據概率排序,並對每個獨立的分組採用 NMS 處理,最後再放在一起.

最終得到的 objects 列表,仍可繼續通過設定概率閾值的方式,來限制每個類的 objects 數量.

7. Faster R-CNN 訓練

Faster R-CNN 在論文中是採用分步 multi-step 方法,對每個模塊分別訓練再合併訓練的權重. 自此,End-to-end 的聯合訓練被發現能夠得到更好的結果.

當將完整的模型合併後,得到 4 個不同的 losses,2 個用於 RPN,2 個用於 R-CNN. RPN 和 R-CNN 的base基礎網絡可以是可訓練(fine-tune)的,也可以是不能訓練的.

base基礎網絡的訓練與否,取決於待學習的objects與可用的計算力. 如果新數據與 base基礎網絡訓練的原始數據集相似,則不必進行訓練,除非是想嘗試其不同的表現. base基礎網絡的訓練是比較時間與硬件消耗較高,需要適應梯度計算.

4 種不同的 losses 以加權和的形式組織. 可以根據需要對分類 loss 和迴歸 loss 設置權重,或者對 R-CNN 和 RPNs 設置不同權重.

採用 SGD 訓練,momentum=0.9. 學習率初始值爲 0.001,50K 次迭代後衰減爲 0.0001. 這是一組常用參數設置

採用 Luminoth 訓練時,直接採用默認值開始.

8. 評價 Evaluation

評價準則:指定 IoU 閾值對應的 Mean Average Precision (mAP),如 [email protected].

mAP 來自信息檢索,常用與計算 ranking 問題的誤差計算,以及評估目標檢測結果.

9. 總結

至此,對 Faster R-CNN 的處理方式有了清晰的理解,可以根據實際應用場合來做一些應用.

如果想進一步深入理解,可以參考 Luminoth Faster R-CNN 實現.

Faster R-CNN 可以用於解決複雜的計算機視覺問題,並取得很好的效果. 雖然這裏模型是目標檢測,但對於語義分割,3D目標檢測等,都可以基於以上模型. 或借鑑於 RPN,或借鑑於 R-CNN,或兩者都有. 因此,能夠深度理解其工作原理,對於更好的解決其它問題很有幫助.

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