今年(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