FPN網絡介紹

這篇論文是CVPR2017年的文章,採用特徵金字塔做目標檢測
論文:feature pyramid networks for object detection
論文鏈接:https://arxiv.org/abs/1612.03144
FPN:feature pyramid networks 特徵金字塔網絡
論文概述:
object detection算法都是隻採用頂層特徵做預測,但我們知道低層的特徵語義信息比較少,但是位置準確;高層的特徵語義信息比較豐富,但是目標位置比較粗略。另外雖然也有些算法如SSD,yolov3採用多尺度特徵的方式,但是一般是採用多尺度特徵單獨做預測,但缺少高底層融合,而FPN不一樣的地方在於預測是在不同特徵層獨立進行的同時有平行層的特徵融合。

4種利用特徵的形式:

(a)圖像金字塔,即將圖像做成不同的scale,然後不同scale的圖像生成對應的不同scale的特徵。這種方法的缺點在於增加了時間成本。有些算法會在測試時候採用圖像金字塔。

(b)像SPP net,Fast RCNN,Faster RCNN是採用這種方式,即僅採用網絡最後一層的特徵。

(c)像SSD(Single Shot Detector)採用這種多尺度特徵融合的方式,沒有上採樣過程,即從網絡不同層抽取不同尺度的特徵做預測,這種方式不會增加額外的計算量。作者認爲SSD算法中沒有用到足夠低層的特徵(在SSD中,最低層的特徵是VGG網絡的conv4_3),而在作者看來足夠低層的特徵對於檢測小物體是很有幫助的。

(d)FPN是採用這種方式,頂層特徵通過上採樣和低層特徵做融合,而且每層都是獨立預測的。
在這裏插入圖片描述
2.FPN bankbone net採用resnet,bottom-up結構採用resnet。
算法大致結構如下圖:一個自底向上的線路,一個自頂向下(top -down)的線路,橫向連接(lateral connection)。圖中放大的區域就是橫向連接,這裏1*1的卷積核的主要作用是減少卷積核的個數,也就是減少了feature map的個數,並不改變feature map的尺寸大小。
在這裏插入圖片描述
自底向上其實就是網絡的前向過程。在前向過程中,feature map的大小在經過某些層後會改變,而在經過其他一些層的時候不會改變,作者將不改變feature map大小的層歸爲一個stage,因此每次抽取的特徵都是每個stage的最後一個層輸出,這樣就能構成特徵金字塔。

自頂向下的過程採用上採樣(upsampling)進行,而橫向連接則是將上採樣的結果和自底向上生成的相同大小的feature map進行融合(merge)。在融合之後還會再採用3*3的卷積覈對每個融合結果進行卷積,目的是消除上採樣的混疊效應(aliasing effect)。並假設生成的feature map結果是P2,P3,P4,P5,和原來自底向上的卷積結果C2,C3,C4,C5一一對應。

作者一方面將FPN放在RPN網絡中用於生成proposal,原來的RPN網絡是以主網絡的某個卷積層輸出的feature map作爲輸入,簡單講就是隻用這一個尺度的feature map。但是現在要將FPN嵌在RPN網絡中,生成不同尺度特徵並融合作爲RPN網絡的輸入。在每一個scale層,都定義了不同大小的anchor,對於P2,P3,P4,P5,P6這些層,定義anchor的大小爲32,64,128,256,另外每個scale層都有3個長寬對比度:1:2,1:1,2:1。所以整個特徵金字塔有15種anchor。

正負樣本的界定和Faster RCNN差不多:如果某個anchor和一個給定的ground truth有最高的IOU或者和任意一個Ground truth的IOU都大於0.7,則是正樣本。如果一個anchor和任意一個ground truth的IOU都小於0.3,則爲負樣本。

總結 作者提出的FPN(Feature Pyramid Network)算法同時利用低層特徵高分辨率和高層特徵的高語義信息,通過融合這些不同層的特徵達到預測的效果。並且預測是在每個融合後的特徵層上單獨進行的,這和常規的特徵融合方式不同。