分割掩码 RCNN 和 FPN

Segmentation Mask RCNN and FPN

我正在阅读来自 Facebook Research 的论文 https://research.fb.com/wp-content/uploads/2017/08/maskrcnn.pdf

Mask RCNN 基于检测器 Faster RCNN,但有一些改进,例如 FPN(特征金字塔网络)、ROI 对齐,这似乎比 ROI 池更准确。但是,我不了解 Mask RCNN 中关于 FPN 和掩码的架构。事实上,FPN 允许获得不同比例的特征图,但是看论文上的图像我不明白他们是否只使用了 FPN 上的最后一个特征图。

所以,问题是:我们是只使用 RPN 的最后一个特征图,然后使用一些 conv 层来预测掩码(用于分割),还是我们也使用 RPN 的中间层?

mask R-CNN中mask分支中的FCN使用了FPN产生的所有feature maps。
Here is Mask R-CNN 的一个这样的实现。 这是代码片段:

# Attach 3x3 conv to all P layers to get the final feature maps.
P2 = KL.Conv2D(256, (3, 3), padding="SAME", name="fpn_p2")(P2)
P3 = KL.Conv2D(256, (3, 3), padding="SAME", name="fpn_p3")(P3)
P4 = KL.Conv2D(256, (3, 3), padding="SAME", name="fpn_p4")(P4)
P5 = KL.Conv2D(256, (3, 3), padding="SAME", name="fpn_p5")(P5)
# P6 is used for the 5th anchor scale in RPN. Generated by
# subsampling from P5 with stride of 2.
P6 = KL.MaxPooling2D(pool_size=(1, 1), strides=2, name="fpn_p6")(P5)

# Note that P6 is used in RPN, but not in the classifier heads.
rpn_feature_maps = [P2, P3, P4, P5, P6]
mrcnn_feature_maps = [P2, P3, P4, P5]  <--------------


This是作者使用FPN的feature maps的那一行