FPN就是所謂的金字塔結構的檢測器,(Feature Pyramid Network)html
把FPN融合到Faster rcnn中可以很大程度增長檢測器對全圖信息的認知,網絡
在個人另外一篇博客中對多尺度融合有較爲詳細的介紹,https://www.cnblogs.com/ywheunji/p/11022674.htmlurl
步驟如圖所示:spa
1.先將圖像送入底層網絡中獲得一個feature map,能夠用resnet等 網絡.net
2.圖中的1,2,3層即爲預訓練網絡獲得的特徵,以後採起的操做是對於2層進行1*1的降維操做,而後與3層上採樣以後的結果進行相加,獲得5層,這就是FPN的操做。htm
3.對於6層是同樣的操做,而後對於獲得的4,5,6層(top-down網絡,fpn的核心)進行RPN操做獲得region proposal,以後與原始faster rcnn的操做同樣,經過3*3的卷積以後鏈接分類層和迴歸層。blog
4.獲得的結果進行roi pooling操做,即固定特徵的大小。get
5.最後,鏈接兩個1024層的全鏈接層,而後分兩個支路,鏈接最後對應的分類層和迴歸層博客
使用了更深網絡來構造特徵金字塔,能增長魯棒信息;除此以外,將低層特徵和高層特徵累加,是由於低層特徵能夠提供更加準確的位置信息,而屢次的降採樣和上採樣操做使得深層網絡的定位信息存在偏差,io
淺層的網絡更關注於細節(位置)信息,高層的網絡更關注於語義信息,而高層的語義信息可以幫助咱們準確的檢測出目標。所以咱們將其結合其起來使用,這樣咱們就構建了一個更深的特徵金字塔,融合了多層特徵信息,並在不一樣的特徵進行輸出。
0.淺層的網絡更關注於細節(位置)信息,高層的網絡更關注於語義信息
高層的語義信息可以幫助咱們準確的檢測出目標
1.融合深層特徵適合作複雜任務
圖像中存在不一樣尺寸的目標,而不一樣的目標具備不一樣的特徵,利用淺層的特徵就能夠將簡單的目標的區分開來;利用深層的特徵能夠將複雜的目標區分開來;這樣咱們就須要這樣的一個特徵金字塔來完成這件事。
圖中咱們在第4層輸出較大目標的檢測結果,在第5層輸出次大目標的檢測結果,
在第6層輸出較小目標的檢測結果。由於在大的feature map上進行操做,能夠得到更多關於小目標的有用信息(分辨率有關,第三條);
檢測也是同樣,咱們會在第4層輸出簡單的目標,第5層輸出較複雜的目標,第6層輸出複雜的目標。
2.下采樣倍數小的特徵感覺野小,適合小目標
另外在yolov3中對多尺度檢測的理解是,1/32大小的特徵圖下采樣倍數高,因此具備大的感覺野,適合檢測大目標的物體,1/8的特徵圖具備較小的感覺野,因此適合檢測小目標。
3.小尺度分辨率信息不足不適合小目標
對於小目標,小尺度feature map沒法提供必要的分辨率信息,因此還需結合大尺度的feature map