今年(2017年第一季度),何凱明大神出了一篇文章,叫做fpn,全稱是:feature pyramid network for object Detection,為什么發這篇文章,根據
我現在了解到的是對小目標和大目標識別率都好。為什么?我們來看下面一幅圖:
此處來自:http://blog.csdn.net/u014380165/article/details/72890275
(a)圖像金字塔,即將圖像做成不同的scale,然后不同scale的圖像生成對應的不同scale的特征。這種方法的缺點在於增加了時間成本。有些算法會在測試時候采用圖像金字塔。
(b)像SPP net,Fast RCNN,Faster RCNN是采用這種方式,即僅采用網絡最后一層的特征。
(c)像SSD(Single Shot Detector)采用這種多尺度特征融合的方式,沒有上采樣過程,即從網絡不同層抽取不同尺度的特征做預測,這種方式不會增加額外的計算量。作者認為SSD算法中沒有用到足夠低層的特征(在SSD中,最低層的特征是VGG網絡的conv4_3),而在作者看來足夠低層的特征對於檢測小物體是很有幫助的。
(d)本文作者是采用這種方式,頂層特征通過上采樣和低層特征做融合,而且每層都是獨立預測的。
其中,圖D是fpn網絡的,它采用每一層都預測目標,可以這樣理解,比較高的層是預測大目標,因為經過多幾次的卷積后,
使得我們的“合計感受野”變大了,可以“看到”大目標了。但是,小目標卻因為失去了,因為經過多次卷積、池化后,小目標
的特征一直在損失,最后后面就沒有了,這時候,最底層就預測小目標,因為最底層的最大呀,經過卷積、池化操作較少呀。
就像有兩個攝像頭,焦距不一樣,可以看到遠近的物體。在這片文章中,是使用resnet101網絡,resnet使用4個block,它就是使用
第4個block作為處理,(最近我也在做小目標識別的項目,都是小目標,幸好我rpn是使用conv3,這樣,小目標的特征就損失
不多,運氣好,剛好可以用,要是不work,按之前的,肯定是找不到問題的,不過,現在問題是樣的目標,占圖像面積比大的情況
會漏檢,尷尬!!!)就是如下圖:
如上圖改造,每層anchor的大小都不一樣,但是,從底層往上是變大的,目標就是預測不同尺寸大小的圖片,使得整個算法的大范圍尺度的目標識別適應性更好!!!!
具體可以參考下面博客:
1、http://blog.csdn.net/u014380165/article/details/72890275
2、http://blog.csdn.net/dcxhun3/article/details/59055974
3、http://blog.csdn.net/jesse_mx/article/details/54588085