特征金字塔網絡Feature Pyramid Networks


小目標檢測很難,為什么難.想象一下,兩幅圖片,尺寸一樣,都是拍的紅綠燈,但是一副圖是離得很近的拍的,一幅圖是離得很遠的拍的,紅綠燈在圖片里只占了很小的一個角落,即便是對人眼而言,后者圖片中的紅綠燈也更難識別.

說回到cnn,不斷地卷積以后,feature map的尺寸變小.這時候feature map所代表的語義信息已經很豐富了,如果繪圖繪制出來,可能會看見代表的是某種形狀,顏色,或更高級的更抽象的概念了.但是由於feature map尺寸減小,所以檢測小目標困難.

我們可以用同一圖片,不同尺寸內容相同的同一幅圖分別訓練多個feature map,但是這么搞會及其耗時,並且需要大量內存.在實時性要求高的場景下是不能這么搞的.這就引入了FPN的概念

Feature Pyramid Networks (FPN)

特征金字塔網絡(FPN)是根據特征金字塔概念設計的特征提取器,目的是提高精度和速度.它替代了類如Faster R-CNN中的特征提取器,並且生成更高質量的特征圖金字塔.

經過一系列的卷積以后得到了feature map,我們通過上采樣,再一步步還原回去,在保證高級語義信息沒丟的情況下,還把feature map的size搞大了.然后用大size的feature map去檢測小目標.從而解決小目標難以檢測的問題.

FPN由自下而上和自上而下兩部分構成.自下而上的就是傳統的卷積網絡做特征提取,隨着卷積的深入,空間分辨率減少,空間信息丟失.但是高級語義信息被更多地檢測到.

ssd從依據多個feature map來做預測,但是底層的layer並沒有選中做object detetion.底層的具有high resolution,但是不具備高級語義high semantic.ssd為了提高速度,在predict的時候不用比較底層的feature map.這一點也導致了它對小目標的檢測效果不好.

FPN提供了一種自上而下的路徑,去構建higher resolution layer from a semantic rich layer.

這樣構建出來的層具有high resolution的同時又有豐富的語義rich semantic.但是由於經過了不斷地上采樣下采樣,object的位置已經不准確了.

所以我們在重新構建出來的層和相應的feature map之間構建橫向連接,以使得檢測器可以更好地預測location.

下面是自下而上和自上而下的路徑圖.P2,P3,P4,P5是object detection所需的金字塔feature map.

FPN with RPN

FPN本身並不是object detetcor.它只是一個feature detetor.下圖顯示FPN在一個object detector中的位置和作用. 每一個feature map(P2到P5)被獨立地送到后續的流程完成object detection.

FPN with Fast R-CNN or Faster R-CNN

通過FPN,生成了feature map的金字塔(也就是一堆不同尺寸的特征圖,都具有高級語義).然后用RPN生成ROI.然后對不同尺寸的目標,選用不同尺寸的特征圖去做識別.小目標要用大尺寸的feature map. 大目標用小尺寸的feature map.很好理解,目標很小,你再用小尺寸(低分辨率)的feature map,肯定更難看清目標了.

參考:https://medium.com/@jonathan_hui/what-do-we-learn-from-single-shot-object-detectors-ssd-yolo-fpn-focal-loss-3888677c5f4d


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM