(7)mask-RCNN

   Mask R-CNN是一个实例分割(Instance segmentation)算法,可以用来做“目标检测”、“目标实例分割”、“目标关键点检测”。

    其网络结构如图:


(7)mask-RCNN_第1张图片
MaskRCNN网络结构

    由图中可以看出,其算法步骤为:

(1)生成候选框区域。该流程与Faster R-CNN相同,都是使用的RPN(Region Proposal Network)。

(2)在候选框区域上使用RoIPool来提取特征并进行分类和边界框回归,同时为每个RoI生成了一个二元掩码。

    在RoIPool的处理流程中,需要根据前面提前特征的stride来对ROI进行同样比例的缩放,以便找到在当前的特征图中ROI所对应的区域。在目标检测中,给出的bounding box与原图有一些误差也不影响分类检测的结果;但是在像素级别的图像分割中,这样的空间位置误差,会严重影响分割结果。因此本文提出使用双线性插值来解决这一问题,即RoIAlign。

   假设我们有一个尺寸大小为128x128的图像和大小为25x25的特征图谱。如果我们想要在特征图谱中表示原始图像中左上角15x15像素的区域,该如何从特征图中选择这些像素?

  我们知道原始图像中的每个像素对应于特征图谱中的25/128个像素。要从原始图像中选择15像素,我们就在特征图谱中选择15*(25/128)=2.93个像素。

  在RoIPool中,我们会舍弃小数点后的部分,只选择2个像素,导致轻微的错位。然而,在RoIAlign中,我们避免了这样的舍弃。相反,我们使用双线性插值来精确地得到这2.93像素中的信息。这样子在很大程度上避免了RoIPool方法造成的像素错位。

 Mask R-CNN在生成这些掩码后,将它们与Faster R-CNN输出层的对象类别和边界框组合起来,产生了奇妙的精确分割。

你可能感兴趣的:((7)mask-RCNN)