CVPR 2017論文解讀:特徵金字塔網路FPN

機器之心發表於2017-07-25
近日,CVPR 2017獲獎論文公佈,引起了業內極大的關注。但除了這些獲獎論文,還有眾多精彩的論文值得一讀。因此在大會期間,國內自動駕駛創業公司 Momenta 聯合機器之心推出 CVPR 2017 精彩論文解讀專欄,本文是此係列專欄的第二篇,作者為 Momenta 高階研發工程師李俊。

論文:Feature Pyramid Networks for Object Detection

CVPR 2017論文解讀:特徵金字塔網路FPN

論文地址:https://arxiv.org/abs/1612.03144

這裡介紹的文章是來自 Facebook 的特徵金字塔網路 Feature Pyramid Networks(FPN)。FPN 主要解決的是物體檢測中的多尺度問題,通過簡單的網路連線改變,在基本不增加原有模型計算量情況下,大幅度提升了小物體檢測的效能。我們將從論文背景,論文思想,結果與結論幾方面探討此論文。

在物體檢測裡面,有限計算量情況下,網路的深度(對應到感受野)與 stride 通常是一對矛盾的東西,常用的網路結構對應的 stride 一般會比較大(如 32),而影象中的小物體甚至會小於 stride 的大小,造成的結果就是小物體的檢測效能急劇下降。傳統解決這個問題的思路包括:(1)多尺度訓練和測試,又稱影象金字塔,如圖 1(a) 所示。目前幾乎所有在 ImageNet 和 COCO 檢測任務上取得好成績的方法都使用了影象金字塔方法。然而這樣的方法由於很高的時間及計算量消耗,難以在實際中應用。(2)特徵分層,即每層分別預測對應的 scale 解析度的檢測結果。如圖 1(c) 所示。SSD 檢測框架採用了類似的思想。這樣的方法問題在於直接強行讓不同層學習同樣的語義資訊。而對於卷積神經網路而言,不同深度對應著不同層次的語義特徵,淺層網路解析度高,學的更多是細節特徵,深層網路解析度低,學的更多是語義特徵。

CVPR 2017論文解讀:特徵金字塔網路FPN

圖1

因而,目前多尺度的物體檢測主要面臨的挑戰為:

  1. 如何學習具有強語義資訊的多尺度特徵表示?
  2. 如何設計通用的特徵表示來解決物體檢測中的多個子問題?如 object proposal, box localization, instance segmentation. 
  3. 如何高效計算多尺度的特徵表示?

本文針對這些問題,提出了特徵金字塔網路 FPN,如圖 1(d) 所示,網路直接在原來的單網路上做修改,每個解析度的 feature map 引入後一解析度縮放兩倍的 feature map 做 element-wise 相加的操作。通過這樣的連線,每一層預測所用的 feature map 都融合了不同解析度、不同語義強度的特徵,融合的不同解析度的 feature map 分別做對應解析度大小的物體檢測。這樣保證了每一層都有合適的解析度以及強語義特徵。同時,由於此方法只是在原網路基礎上加上了額外的跨層連線,在實際應用中幾乎不增加額外的時間和計算量。作者接下來實驗了將 FPN 應用在 Faster RCNN 上的效能,在 COCO 上達到了 state-of-the-art 的單模型精度。

具體而言,FPN 分別在 RPN 和 Fast RCNN 兩步中起到作用。其中 RPN 和 Fast RCNN 分別關注的是召回率和正檢率,在這裡對比的指標分別為 Average Recall(AR) 和 Average Precision(AP)。分別對比了不同尺度物體檢測情況,小中大物體分別用 s,m,l 表示。

在 RPN 中,區別於原論文直接在最後的 feature map 上設定不同尺度和比例的 anchor,本文的尺度資訊對應於相應的 feature map(分別設定面積為 32^2, 64^2, 128^2, 256^2, 512^2),比例用類似於原來的方式設定 {1:2, 1:1,, 2:1} 三種。與 RPN 一樣,FPN 每層 feature map 加入 3*3 的卷積及兩個相鄰的 1*1 卷積分別做分類和迴歸的預測。在 RPN 中,實驗對比了 FPN 不同層 feature map 卷積引數共享與否,發現共享仍然能達到很好效能,說明特徵金字塔使得不同層學到了相同層次的語義特徵。RPN 網路的實驗結果為:

 

CVPR 2017論文解讀:特徵金字塔網路FPN

這裡 FPN 對比原來取自 conv4 和 conv5 的 RPN 網路 (a)(b),召回率得到了大幅度提升,尤其在中物體和小物體上 (c)。另外,作者做了變數對比實驗,比如只保留橫向連線 (d),即特徵分層網路,效能僅與原 RPN 差不多,原因就在於不同層之間的語義特徵差距較大。另外,試驗了砍掉橫向連線,只保留自上而下放大 feature map 做預測結果 (e),以及只用最終得到的 feature map 層 (f),均比完整的 FPN 網路小物體檢測 AR 低 10 個點左右。說明金字塔特徵表示與橫向連線都起了很大作用。

實驗 Fast RCNN 時,需要固定 FPN+RPN 提取的 proposal 結果。在 Fast RCNN 裡,FPN 主要應用於選擇提取哪一層的 feature map 來做 ROI pooling。假設特徵金字塔結果對應到影象金字塔結果。定義不同 feature map 集合為 {P2, P3, P4, P5},對於輸入網路的原圖上 w*h 的 ROI,選擇的 feature map 為 Pk,其中(224 為 ImageNet 輸入影象大小):

CVPR 2017論文解讀:特徵金字塔網路FPN

類似於 RPN 的實驗,對比了原有網路,以及不同改變 FPN 結構的 Fast RCNN 實驗,實驗結果為:

 CVPR 2017論文解讀:特徵金字塔網路FPN

實驗發現 FPN 篩選 ROI 區域,同樣對於 Fast RCNN 的小物體檢測精度有大幅提升。同時,FPN 的每一步都必不可少。

最後,FPN 對比整個 Faster RCNN 的實驗結果如下: 

CVPR 2017論文解讀:特徵金字塔網路FPN

對比其他單模型方法結果為:

 

CVPR 2017論文解讀:特徵金字塔網路FPN

最後是在 FPN 基礎上,將 RPN 和 Fast RCNN 的特徵共享,與原 Faster CNN 一樣,精度得到了小幅提升。

 

CVPR 2017論文解讀:特徵金字塔網路FPN

FPN+Faster RCNN 的方法在 COCO 資料集上最終達到了最高的單模型精度。

總結起來,本文提出了一種巧妙的特徵金字塔連線方法,實驗驗證對於物體檢測非常有效,極大提高了小物體檢測效能,同時由於相比於原來的影象金字塔多尺度檢測演算法速度也得到了很大提升。


CVPR 現場 QA:


1. 不同深度的 feature map 為什麼可以經過 upsample 後直接相加?

A:作者解釋說這個原因在於我們做了 end-to-end 的 training,因為不同層的引數不是固定的,不同層同時給監督做 end-to-end training,所以相加訓練出來的東西能夠更有效地融合淺層和深層的資訊。

2. 為什麼 FPN 相比去掉深層特徵 upsample(bottom-up pyramid) 對於小物體檢測提升明顯?(RPN 步驟 AR 從 30.5 到 44.9,Fast RCNN 步驟 AP 從 24.9 到 33.9)

A:作者在 poster 裡給出了這個問題的答案

CVPR 2017論文解讀:特徵金字塔網路FPN

對於小物體,一方面我們需要高解析度的 feature map 更多關注小區域資訊,另一方面,如圖中的挎包一樣,需要更全域性的資訊更準確判斷挎包的存在及位置。

3. 如果不考慮時間情況下,image pyramid 是否可能會比 feature pyramid 的效能更高?

A:作者覺得經過精細調整訓練是可能的,但是 image pyramid 主要的問題在於時間和空間佔用太大,而 feature pyramid 可以在幾乎不增加額外計算量情況下解決多尺度檢測問題。

相關文章