这篇论文是CVPR2016年的文章,采用特征金字塔做目标检测。针对目标检测任务在cocoAP上提升了2.3个点,pascalAP上提升3.8个点。还是提升比较明显的。
上面四个图是论文给出的四幅图。
图a是常见的特征图像金字塔结构,在早起被广泛的使用。将图片缩放到不同的尺度,依次经过算法来进行预测,他的缺点也是比较显而易见的这样会造成大量的计算效率低下(我们生成多少个尺度就需要进行多少次预测)。
图b就是比较标准的CNN经过特征提取网络得到最后的特征图,最后用特征图进行预测。他的缺点是对小目标不太友好。
图c比较类似于SSD。输入给特征提取网络,对其不同的特征图进行预测。
图d就是FPN结构,对比图c不是简单的直接预测增加了多特征融合。
FPN结构
这里的特征图都是以2的整数倍进行选取的加入最下面一层是40*40那么上面的一层就是20*20。可以看到在进行特征融合之前要先进行1*1的卷积,这里1*1的卷积的目的就是调整特征图的通道数(原论文的卷积核个数为256)。
高层次的特征图经过两倍的上采样(近邻差值算法)与下一层的特征图进行add
这里以ResNet50为例绘制FPN结构。(注意:针对不同的预测特征层,RPN和Fast RCNN的权重共享(作者试过权重共享和分开发现两者基本上没有什么差别)。P6只用于RPN部分,不在Fast-RCNN部分使用)
在FPN网络生成了多个不同的特征层,那么我们可以在不同的特征层来分别针对不用尺度的特征层来预测。比如在P2这种浅层网络会包含更多的纹理信息那么就对于预测面积为32的平方比例为{1:2, 1:1, 2:1}的anchor,P3为面积为64的平方,以此类推。
最后对于RPN生成的proposal如何映射到对应的特征图上。原文有一个公式。
这里的k就是经过计算得到的他应该在哪个预测特征层上,对应的就是P2~P5数值就是2,3,4,5。这这里的K0就是4,wh是RPN预测得到的proposal在原图上对应的宽度和高度。假如这里的宽高都为112的话那么计算完k=3,再向下取整。也就是说如果宽高都为112那么预测特征层就是在P3上。