【論文解讀】特徵金字塔網絡-FPN

題目:《Feature Pyramid Networks for Object Detection》

介紹

        

圖1(a)表示使用圖像金字塔來構造特徵金字塔,每一張圖像都會獨立地計算出它的特徵。(b)表示利用單一尺度的特徵圖做目標檢測,典型的是SPP-Net、Fast R-CNN和Faster R-CNN等,這些網絡將原圖通過卷積神經網絡生不同層次的特徵圖,但是檢測系統基於最後一層特徵圖。(c)是利用了原圖經過卷積神經網絡在不同層次生成的特徵圖進行預測,而不僅限於最後一層。(d)是作者在論文中提出的特徵金字塔網絡即FPN(Feature Pyramid Network)。   

深度卷積神經網絡天然地就能計算出金字塔特徵結構,作者正是要利用這一點來構造一個在所有層級上都能有強語義的特徵金字塔結構。 具體說來是要通過自頂向下(top-down)的通路以及橫向連接將低分辨率、強語義特徵和高分辨率、弱語義特徵進行有機的結合,與其它相似結構不同之處在於FPN會在所有層級的特徵圖上進行預測,而不是某一個單一的層次。下圖描述了這兩類網絡的不同。

FPN

    FPN結構包含三大要素:從底向上的通路(bottom-up pathway)、從頂向下的通路(top-down pathway)和橫向連接(lateral connection)。下圖中放大的區域就是橫向連接,這裏1*1的卷積核的主要作用是減少卷積核的個數,也就是減少了feature map的個數,並不改變feature map的尺寸大小。

     從底向上的路徑,也就是前向傳播的計算路徑。把產生相同大小特徵圖的幾個層稱之爲一個網絡階段(stage),每個階段的最後一層特徵圖作爲參考。舉一個resnet-50的例子,resnet-50的conv2、conv3、conv4、conv5內含多個"bottleblock"結構,那麼把conv2至conv5中最後一個block輸出特徵圖稱作{C2,C3,C4,C5},並且它們相對輸入圖象的步長依次爲{4,8,16,32}像素。

    特徵金字塔高層特徵圖分辨率相比較低,但語義性更強,對高層特徵圖進行從頂向下的上採樣,並和從底向上的特徵圖進行合併(lateral connection),從底向上的特徵圖要能夠合併的話需要經過1x1的卷積層以減少通道數,因爲這裏的合併是元素的相加,所以要保證要合併的特徵圖尺寸是一致的,無論是大小還是通道數。合併後的特徵圖還要再經過一個3x3的卷積操作來生成最終的特徵圖,這麼做是爲了減少混疊效應(什麼東東?)。所以最終的特徵圖集合稱爲{P2,P3,P4,P5},對應到{C2,C3,C4,C5},它們對應的尺寸是相同的。

應用

    這裏着重講FPN在兩個方面的應用:一個是用於RPN進行候選區域的提取,另一個是用於Fast R-CNN用於目標檢測。

    傳統的RPN是使用一個窗口大小爲3x3的滑動窗口網絡作用於最後一層特徵圖,做目標和非目標的二分類,以及候選框的迴歸。現在使用FPN也就是特徵金字塔替代單一的特徵圖。要注意的是,在Anchor的設定上與傳統的RPN有所不同,在特徵金字塔的每一個層級只設定一種大小的Anchor,具體來說{P2,P3,P4,P5,P6}上Anchor的面積分別爲{32^2,64^2,128^2,256^2,512^2}像素。但是Anchor的比例仍然是{1:2,1:1,2:1}。這樣一算的話特徵金字塔總共就有15種Anchor。

    Fast R-CNN是一個典型的兩階段的目標檢測器,它基於候選區域進行目標檢測,FPN又是如何應用到Fast R-CNN上面呢?要在Fast R-CNN中使用FPN需要將不同大小的RoI分配到特徵金字塔的各個層級上,而不是像傳統的映射到單一尺度的特徵圖(往往就是最後一層的特徵圖)上。現在就一個問題,某個尺寸的RoI具體分配給哪一個層級呢?這是由下面這個公式進行量化的。

w,h分別是指的RoI的寬和高,224是ImageNet預訓練中約定的圖像的大小,K0的意思就是說當RoI大小爲w x h = 224 x 224時,理應被映射到的層級。拿骨幹網爲ResNet的Faster R-CNN系統來說,它就是使用的C4作爲單一尺度的特徵圖,因此k0就設置爲4。說到底就是,如果RoI的大小變得更小(例如 224的1/2),那麼它就應該映射到分辨率更高的層級上(也就k=3),這個看上去挺合理的,小目標映射到高分辨的層級。

實驗

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