【发布时间】: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")
我的输出是:
虽然这是分割掩码的形状,并且尺寸与原始图像相同,但输出图像不是原始图像中出现的分割。我正在寻找要输出的提取的蒙版,因为它们覆盖在原始图像上,而不是像当前那样“放大”。我假设是因为掩码数组与原始图像的尺寸相同,因此掩码将保留其位置,但显然不是。如何输出原始图像中出现的分割掩码?
干杯
【问题讨论】:
标签: python computer-vision object-detection faster-rcnn matterport