1. 程式人生 > >論文閱讀 | FPN:Feature Pyramid Networks for Object Detection

論文閱讀 | FPN:Feature Pyramid Networks for Object Detection

語義 alt bubuko 獨立 margin dual eat 方法 神經網絡

論文地址:https://arxiv.org/pdf/1612.03144v2.pdf

代碼地址:https://github.com/unsky/FPN

概述

FPN是FAIR發表在CVPR 2017上的一篇文章,采用特征金字塔的方法進行目標檢測。文中利用深層卷積網絡固有的多尺度金字塔層次結構,高效地構造特征金字塔。文章提出了FPN——一種具有橫向連接的自頂向下的結構,來構建所有尺度上的高級語義特征映射。

網絡結構

下圖展示了幾種不同的利用特征的方式:(a)為圖像金字塔,就是對圖像resize成不同大小,然後在不同大小的圖像上生成feature map,在不同大小的feature map上分別進行預測,這種方法很耗時間;(b)是只在最後一層的feature map上進行預測,如SPPNet、Faster RCNN等等;(c)是多尺度的特征融合,也就是利用網絡的不同層的feature map做預測,融合多個尺度特征層的預測結果,代表算法是SSD。(c)對feature map的利用仍然不夠充分,註意到低層的目標位置信息比較準確,而高層的特征語義信息很豐富,進行多尺度特征的融合,每層對融合後的特征做獨立預測的效果更好,也就是圖(d)。

技術分享圖片

實際上,采用自頂向下以及跳躍連接結構的網絡並不少,不過他們的目標是產生一個單一的、高分辨率的高層特征圖,然後對其進行預測,如圖2上半部分所示。而作者提出的網絡則是在每一層中獨立進行預測(圖2下半部分)。

技術分享圖片

文中使用ResNet作為基礎網絡,特征金字塔的構造包括一個自底向上的路徑,一個自頂向下的路徑,以及橫向連接,如圖3所示。

技術分享圖片

自底向上的過程實際上就是前饋神經網絡的計算過程。以ResNet為例,對每個階段提取最後一個residual block的輸出(conv2,conv3,conv4和conv5)來構成特征金字塔,相對於輸入圖像,步長分別為4、8、16、32像素(不使用conv1是因為它占內存太大)。自頂向下的過程通過上采樣完成,也就是把高層的feature map通過最近鄰上采樣使其尺寸*2。橫向連接就是將上采樣的高層feature map和自底向上產生的feature map(通過1*1的卷積操作來減少feature map的通道數)融合(元素加)。通過上述過程不斷叠代產生最好的feature map,即C2。在每個合並的map上附加一個3*3卷積產生最終特征映射,以降低上采樣的混疊效應。

應用

1、FPN用於RPN

通過用FPN代替單尺度特征映射來改進RPN,也就是用FPN生成不同尺度的特征然後融合作為RPN的輸入。在特征金字塔的每層都附加了一個相同設計的network head(3*3 conv和兩個兄弟1*1卷積),為每一層設計了單尺度的anchors(P2、P3、P4、P5、P6的anchor尺度分別為32*32、64*64、128*128、256*256、512*512),而且anchors使用多種寬高比(1:2、1:1和2:1)。整個特征金字塔一共有15種anchor。

2、FPN用於Fast R-CNN

為了將FPN用於Fast R-CNN,需要給金字塔的各層分配不同尺度的RoIs。第Pk層分配策略如下:

技術分享圖片

其中,224是ImageNet預訓練的標準尺寸,k0是w*h=224^2的RoI應該映射到的目標層。文中k0設置為4。

實驗結果

作者分別在Fast R-CNN和Faster R-CNN上做了對比實驗,結果如下表2和表3所示,可以看出FPN的效果比單尺度特征更好,而且在小目標的檢測中具有良好的表現。

技術分享圖片

在COCO比賽上的檢測結果:

技術分享圖片

此外,將FPN用於實例分割也具有很好的效果,其結構及結果對比如下:

技術分享圖片

技術分享圖片

論文閱讀 | FPN:Feature Pyramid Networks for Object Detection