Feature Pyramid Networks for Object Detection
(a)是特征图像金字塔结构,针对不同尺度的目标的时候,将图片缩放到不同的尺度。针对每个不同的尺度的图片依次通过算法进行预测。缺点是效率低,根据不同尺度目标的数量越多,效率就会越低。
(b)faster-rcnn经典的结构,通过一个backbone得到最终的一个特征图,然后利用这最后的特征图进行预测。缺点:针对小目标效果较差。
(c)该图的结构与 ssd算法 很类似,同样的把图片输入到一个backbone,通过backbone正向传播过程当中得到的不同的特征图分别进行预测。
(d)该图就是FPN结构,将不同尺寸的特征图经过上采样处理后融合。这样不仅保留了低层次的特征信息也保留了高层次的语义信息。再在融合后的特征图上再进行预测。
针对每一个backbone上的特征图都会进行 1×1的卷积层 是为了调整backbone上不同特征图的channel。因为在backbone上不同层次的特征图的channel是不一样的。一般情况下是越来越多的。所以为了使得不同层次上的特征图进行融合,我们必须要保持相同的shape。
一般来说上一个层次是特征图是下一个层次的特征图大小的1/2,所以在融合之前需要对上面的特征图进行上采样.
上图中的 2* up 原文是由一个简单的临近插值算法实现的。
通过 RPN 生成 porpsal 的时候,会在 P2-P6 五个特征图上进行预测。
但是针对我们的 Fast-RCNN 的时候,它只会在 P2-P5 四个特征图上进行预测。Fast-RCNN是通过我们的RPN网络生成一系列的 proposal,然后将我们的 proposal 映射到我们的特征图上,然后将我们映射的部分输入到我们的 Fast-RCNN 上,得到我们的最终预测结果。
这里就存在了一个问题,我们通过 RPN网络生成 proposal 怎么映射到特征图上呢?
这里的 2-5 的 k 对应我们的特征层 P2-P5。