【问题标题】:extract segmentation masks from mask rcnn从掩码 rcnn 中提取分割掩码
【发布时间】:2022-01-13 00:23:44
【问题描述】:

我正在训练一个模型来识别手,并希望在使用 matterport MRCNN (https://github.com/matterport/Mask_RCNN) 检测后提取分割掩码:

model= mrcnn.model.MaskRCNN(mode="inference", 
                             config=SimpleConfig(),
                             model_dir=os.getcwd())



model.load_weights( filepath="mask_rcnn_0028.h5", 
                   by_name=True)


image = cv2.imread("CARDS_COURTYARD.jpg")
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

results = model.detect([image], verbose=0)

r = results[0] 

mrcnn.visualize.display_instances(image=image, 
                                  boxes=r['rois'], 
                                  masks=r['masks'], 
                                  class_ids=r['class_ids'], 
                                  class_names=CLASS_NAMES, 
                                  scores=r['scores'])

这是一个检测示例:

MaskRCNN hands detection output image

检测后,我重塑了掩码布尔数组(在模型中保存为 r['masks']),以便我可以单独访问每个分段掩码(掩码 [0] 是第一类 id 的掩码,在这种情况下' yourright'),并将每个数组保存为图像:

masks=r['masks']

masks = masks.reshape(2, 720, 1280)

im = Image.fromarray(masks[0])
im.save("mask.jpeg")

我的输出是:

'youright' segmentation mask

虽然这是分割掩码的形状,并且尺寸与原始图像相同,但输出图像不是原始图像中出现的分割。我正在寻找要输出的提取的蒙版,因为它们覆盖在原始图像上,而不是像当前那样“放大”。我假设是因为掩码数组与原始图像的尺寸相同,因此掩码将保留其位置,但显然不是。如何输出原始图像中出现的分割掩码?

干杯

【问题讨论】:

    标签: python computer-vision object-detection faster-rcnn matterport


    【解决方案1】:

    自己想出了解决方案——将其发布在这里以防其他人遇到同样的问题...

    问题是我误解了重塑数组的工作原理;将第三个维度重塑为第一个维度并不是表面上的变化,而是完全“重塑”数据,因此任何外推图像都是完全不同的形状,尽管我仍然不确定面具如何保持其一般形状无论如何。正如我所做的那样,完全不需要重塑数据,因为您可以调用每个维度而不管其位置如何。我之前认为,要调用第 3 维,只需将其重塑为第 1 维即可:

    masks = masks.reshape(2, 720, 1280)
    im = Image.fromarray(masks[0])
    

    以这种方式更改形状会重新组织数据并扭曲图像。您可以轻松地指定调用哪个维度:

    im = Image.fromarray(masks[:,:,0])
    

    在这种情况下,我正在访问数组第 3 维的第一 (0) 层。

    将其转换为图像会生成检测图像中所见的掩码:

    [您的正确检测][1] [1]:https://i.stack.imgur.com/ewMY3.jpg

    一个容易犯的错误,尤其是如果你像我一样对 python 非常陌生!

    【讨论】:

      猜你喜欢
      • 2018-10-21
      • 2021-04-24
      • 2018-12-09
      • 2020-09-06
      • 2021-04-08
      • 2020-06-14
      • 2021-05-11
      • 2011-11-30
      • 1970-01-01
      相关资源
      最近更新 更多