Object Detection -- 論文FPN(Feature Pyramid Networks for Object Detection)解讀

FPN

FPN(Feature Pyramid Networks)是Kaiming He男神和Rgb大神聯手的又一力作。主要使用特徵金字塔網絡來融合多層特徵,將底層和高層的特徵融合,再利用融合後的特徵進行分類和定位。FPN曾在COCO數據集上測試結果排名第一。

原論文地址: Feature Pyramid Networks for Object Detection

Introduction

In Computer Vision中,利用不同尺度來做目標識別一直是個大坑(fundamental challenge)。

Featureized image pyramids

featureized image pyramids(Feature pyramids built upon image pyramids)是一個基本處理方法。示意圖如下:

這裏寫圖片描述

Featureized image pyramids需要以下操作:

  • 先做image pyramid,展成不同尺度的image
  • 提取不同尺寸的image的feature map

知道如何整Featureized image pyramids,也就很明白這個方法的問題所在:慢!

提取不同尺寸的feature map需要大量時間,這也從根本上扼殺了這個方法 不能實用。退一萬步來說,現在我們就要這麼整,如果想訓練一個end-to-end的模型,內存也不支持,總不能再像R-CNN一樣存到disk來整了吧。

Featureized image pyramids不好使,先排除掉。我們就想其他辦法

ConvNet提取feature maps 

在實用ConvNet提取圖片特徵時,每個layer都是在提取feature maps,因爲subsampling的存在,整個ConvNet天生就存在multi-scale的feature maps,也就是我們說的pyramidal shape。

但是這樣的底層和高層的feature maps很難組合到一起用,爲什麼?因爲ConvNet提取過程中,底層高分辨率的feature map和高層的feature maps的通道數(depth)不同,這直接導致了極大的語義間隔(large sementic gaps)。

SSD

SSD是第一個吃螃蟹的,即使用ConvNet’s pyramidal feature hierarchy。SSD複用了不同layer上的feature maps(前饋網絡已經計算了,沒有額外的計算)。但是SSD只是從較爲高層的feature maps開始計算的(論文是Conv4_3 ),並添加了幾個CONV層提取特徵。

SSD與傳統方法的對比如下:

這裏寫圖片描述

SSD的問題在於沒有充分利用不同尺度的feature maps,尤其是底層高分辨率的feature maps,這些high-resolution的feature maps對small objects的檢測尤爲的重要。

FPN的思路

FPN的思路是:ConvNet的多個layer提取出的不同尺度的feature maps,這形成一個pyramid hierarchy,從上到下建立一個top-down pathway and lateral connections。(這個top-down的path就是用高層的特徵來彌補底層的特徵,從而得到高分辨率、強語義的預測,也就是彌補了上面不同尺度feature map之間通道不同存在的large segmantic gaps)

FPN和SSD和一些其他方法[1],[2]的比較如下:

mark

Feature Pyramid Networks

FPN的目標是:ConvNet’s的pyramidal feature hierarchy是有着low to high levels 的語義的,利用這樣的hierarchy構建一個高語義的feature pyramid。

Bottom-up pathway

ConvNet’s的forward計算是自下而上的,特徵圖經過卷積覈計算,會以成倍的比例縮小(pooling layer的原因)。但同時有需多卷積層輸出的feature map的尺寸是一樣的,針對輸出一樣大小的feature map的卷積層我們統稱爲stage

stage爲單位,我們在構建feature pyramid時,以每個’stage’爲一個pyramid level,取每個stage最後layer輸出的feature map作爲pyramid level。至於爲什麼會這麼取?論文說是:這樣取是理所當然的,因爲靠後的layer有着更強壯的feature。

Top-down pathway and lateral connections

如何實現Top-down pathway?

前面我們得到了一個高語義的feature pyramid。 高層的feature map有着強語義,大感受野的的特性,底層的feature map有着high-resolution,並且保留對small object的語義。在構建好的feature pyramid上,要設法連接高層和底層,充分利用不同層feature map的特性。那麼該怎麼連接?

FPN的做法是: 將高層的feature map上採樣得到高分辨率的feature map,再與其在pyramid內下一個level的feature map做橫向連接(lateral connections)。這樣可以讓高層特徵得到加強。同時保證橫向連接的兩層特徵在空間尺寸上要相同。這樣做是爲了利用底層的high-resolution的特性。

mark

上圖是構建top-down pathway的細節:

  • 高層feature上採樣,採用最鄰近上採樣法(用這個方法是圖簡便),spatial resolution放大2倍。處理後的feature map記爲mapup
  • 底層feature經過1×1 的卷積layer,讓feature的通道數和高層的feature map相同。處理後的feature map記爲mapdown (論文中說的是reduce通道數,難道不是增加嗎?)
  • mapupmapdown 做像素相加(element-wise addition),迭代直到產生finest resolution map
  • 迭代後,在每個合併的feature map上使用3×3 卷積得到最終map。(爲了減少上採樣過程中混疊效應)

這裏整Top-down pathway的道理是啥?

這裏直接貼出作者在CVPR上的QA:

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

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

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

這裏寫圖片描述

對於小物體,一方面我們需要高分辨率的 feature map 更多關注小區域信息,另一方面,如圖中的挎包一樣,需要更全局的信息更準確判斷挎包的存在及位置。

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