目標檢測算法之FPN

前言

前面已經講解完了RCNN系列的三篇論文,目標檢測項目也基本能夠跑起來了。今天要講的FPN也是Two Stage目標檢測算法中很是值得推敲的論文,它進一步優化了Faster-RCNN,使得對小目標的檢測效果更好,因此一塊兒來看看吧。node

背景

Faster-RCNN選取一個特徵提取網絡如VGG16作backbone,而後在高層特徵(如VGG16後面的conv4)接RPN和檢測頭進行網絡。正是因爲Faster-RCNN基於圖像的高級特徵,這就致使對小目標的檢測效果不好。而CV領域經常使用的處理尺度問題的辦法就是特徵金字塔,將原圖以不一樣的比例採樣,而後獲得不一樣分辨率的圖像進行訓練和測試,在多數狀況下確實是有效的。可是特徵金字塔的時間開銷很是大,致使在工程中應用是及其困難。FPN重新的角度出發提出了一個獨特的特徵金字塔網絡來避免圖像金字塔產生的超高計算量,同時能夠較好的處理目標檢測中的尺度變化問題,對小目標檢測更魯棒,同時在VOC和COCO數據集上MAP值均超過了Faster-RCNN。git

簡介

咱們使用下圖來闡釋咱們是如何處理尺度變化大的物體檢測的。github

在這裏插入圖片描述
  • 上圖(a)是處理這類問題最經常使用的方法,即特徵金字塔,這種方法在傳統的手動設計特徵的方法中很是經常使用,例如DPM方法使用了接近10種不一樣的尺度得到了不錯的效果。
  • 上圖(b)是在CNN提出以後出現的,由於神經網絡模型對物體尺度自己有必定的魯棒性,因此也取得了不錯的性能,但最近的研究代表將特徵金字塔和CNN結合仍能夠提高性能,這說明基於單層特徵的檢測系統仍存在對尺度變化敏感的缺點。
  • 上圖(c)表示除了使用圖像金字塔,咱們可使用深度學習自己的多層次結構來提取多尺度特徵。最多見的就是SSD算法中利用多個特徵層來分別作預測。但這種方式也有一些缺點就是淺層的語義特徵比較弱,在處理小物體時表現得不夠好。
  • 上圖(d)表示本文提出的FPN(Feature Pyramid Network ),它它能較好的讓各個不一樣尺度的特徵都具備較強的語義信息。FPN結合Faster RCNN能夠在COCO物體檢測比賽中取得當前單模型的最佳性能(SOTA)。另外,經過對比實驗發現,FPN能讓Faster RCNN中的RPN網絡的召回率提升8個點;而且它也能使Fast RCNN的檢測性能提高2.3個點(COCO)和3.8個點(VOC)。

FPN結構

下圖表示FPN的總體結構:咱們能夠看到FPN的總體結構分爲自底向上自頂向下和側向鏈接的過程。接下來咱們分別解釋一下這兩個關鍵部分。算法

自底向上

這一部分就是普通的特徵提取網絡,特徵分辨率不斷縮小,容易想到這個特徵提取網絡能夠換成任意Backbone,而且CNN網絡通常都是按照特徵圖大小分爲不一樣的stage,每一個stage的特徵圖長寬差距爲2倍。在這個自底向上的結構中,一個stage對應特徵金字塔的一個level。以咱們要用的ResNet爲例,選取conv二、conv三、conv四、conv5層的最後一個殘差block層特徵做爲FPN的特徵,記爲{C二、C三、C四、C5},也便是FPN網絡的4個級別。這幾個特徵層相對於原圖的步長分別爲四、八、1六、32。微信

自上向下和側向鏈接

自上向下是特徵圖放大的過程,咱們通常採用上採樣來實現。FPN的巧妙之處就在於從高層特徵上採樣既能夠利用頂層的高級語義特徵(有助於分類)又能夠利用底層的高分辨率信息(有助於定位)。上採樣可使用插值的方式實現。爲了將高層語義特徵和底層的精肯定位能力結合,論文提出了相似於殘差結構的側向鏈接。向鏈接將上一層通過上採樣後和當前層分辨率一致的特徵,經過相加的方法進行融合。同時爲了保持全部級別的特徵層通道數都保持一致,這裏使用1*1卷積來實現。在網上看到一張圖,比較好的解釋了這個過程:FPN只是一個特徵金字塔結構,須要配合其餘目標檢測算法才能使用。網絡

實驗

1.FPN對RPN網絡的影響

以下表所示,論文作了6個實驗。app

  • (a)基於conv4的RPN,原始原始的RPN。
  • (b)基於conv5的RPN。
  • (c) 完整FPN。
  • (d)只用了自底向上的多層特徵,沒有自頂向下的特徵。
  • (e)用了自頂向下的特徵,但不用側向鏈接。
  • (f)用了自頂向下的特徵,也用了橫向特徵融合,但只用最後的P2作預測。(完整的預測是使用每個level的特徵 作預測)

分析表格可知,自頂向下的特徵、橫向鏈接、尺度分離、多個層次的預測是提高FPN性能的關鍵。爲了更好的理解,放一張Faster-RCNN結合FPN的細緻結構圖以下,圖能夠在最下方的github工程找到:svg

在這裏插入圖片描述

2.FPN對Fast RCNN的影響

使用和實驗1相同的規則對Fast RCNN作了實驗,結果以下表所示。性能

在這裏插入圖片描述

結論

本文提出了一種簡單、有效的創建特徵金字塔的方式。它的使用對RPN方法和Fast/Faster RCNN方法都有極大的性能提高。另外,它的訓練和測試時間和普通的Faster RCNN方法相差很小。所以,它能夠做爲圖像特徵金字塔的一種較好的替代。學習

源碼

https://github.com/unsky/FPN


本文分享自微信公衆號 - GiantPandaCV(BBuf233)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索