目标检测算法之——FPN(Feature Pyramid Networks)

CVPR2017的目标检测文章Feature Pyramid Networks for Object Detection 

        以往多数的object detection算法都是只采用顶层特征做预测,但我们知道低层的特征语义信息比较少,但是目标位置准确;高层的特征语义信息比较丰富,但是目标位置比较粗略。另外虽然也有些算法采用多尺度特征融合的方式,但是一般是采用融合后的特征做预测,而本文不一样的地方在于预测是在不同特征层独立进行的。这篇文章,作者利用了深度卷积神经网络固有的多尺度、多层级的金字塔结构去构建特征金字塔网络,使用一种自上而下的侧边连接,在所有尺度构建了高级语义特征图,这种结构就叫特征金字塔网络(FPN)。其在特征提取上改进明显,把FPN用在Faster R-CNN上,在COCO数据集上,一举超过了目前所有的单模型(single-model)检测方法。


4种特征map的使用形式: 
(a)图像金字塔,即将图像做成不同的scale,然后不同scale的图像生成对应的不同scale的特征。这种方法的缺点在于增加了时间成本。有些算法会在测试时候采用图像金字塔。 
(b)像SPP net,Fast RCNN,Faster RCNN是采用这种方式,即仅采用网络最后一层的特征。 
(c)像SSD(Single Shot Detector)采用这种多尺度特征融合的方式,没有上采样过程,即从网络不同层抽取不同尺度的特征做预测,这种方式不会增加额外的计算量。作者认为SSD算法中没有用到足够低层的特征(在SSD中,最低层的特征是VGG网络的conv4_3),而在作者看来足够低层的特征对于检测小物体是很有帮助的。 
(d)本文作者是采用这种方式,顶层特征通过上采样和低层特征做融合,而且每层都是独立预测的。
                  
上面一个带有skip connection的网络结构在预测的时候是在finest level(自顶向下的最后一层)进行的,简单讲就是经过多次上采样并融合特征到最后一步,拿最后一步生成的特征做预测。而下面一个网络结构和上面的类似,区别在于预测是在每一层中独立进行的。 主网络采用ResNet。 一个自底向上的线路,一个自顶向下的线路,横向连接(lateral connection)。图中放大的区域就是横向连接,这里1*1的卷积核的主要作用是减少卷积核的个数,也就是减少了feature map的个数,并不改变feature map的尺寸大小。
整个特征图包含两个过程:
自底向上前向传播过程:在前向过程中,feature map的大小在经过某些层后会改变,而在经过其他一些层的时候不会改变,作者将不改变feature map大小的层归为一个stage,因此每次抽取的特征都是每个stage的最后一个层输出,这样就能构成特征金字塔。 
自顶向下上采样(upsampling):而横向连接则是将上采样的结果和自底向上生成的相同大小的feature map进行融合。在融合之后还会再采用3*3的卷积核对每个融合结果进行卷积,目的是消除上采样的混叠效应(aliasing effect)。并假设上采样生成的特征图是P2,P3,P4,P5,和原来自底向上的卷积特征图C2,C3,C4,C5之间一一对应对应。

Faster R-CNN+Resnet-101

把Faster-RCNN中原有的VGG网络换成ResNet-101



Faster R-CNN with FPN


猜你喜欢

转载自blog.csdn.net/xyj1536214199/article/details/80895716