0

I am working on semantic segmentation and I came across Instance Segmentation Using Mask R-CNN on Custom Dataset by Code With Aarohi. I met an error.

This is the snippet of the code related to the error:

def load_mask(self, image_id):
    """Generate instance masks for an image.
   Returns:
    masks: A bool array of shape [height, width, instance count] with
        one mask per instance.
    class_ids: a 1D array of class IDs of the instance masks.
    """
    # If not a Dog-Cat dataset image, delegate to parent class.
    image_info = self.image_info[image_id]
    if image_info["source"] != "object":
        return super(self.__class__, self).load_mask(image_id)

    # Convert polygons to a bitmap mask of shape
    # [height, width, instance_count]
    info = self.image_info[image_id]
    if info["source"] != "object":
        return super(self.__class__, self).load_mask(image_id)
    num_ids = info['num_ids']
    mask = np.zeros([info["height"], info["width"], len(info["polygons"])],
                    dtype=np.uint8)
    for i, p in enumerate(info["polygons"]):
        # Get indexes of pixels inside the polygon and set them to 1
        rr, cc = skimage.draw.polygon(p['all_points_y'], p['all_points_x'])

        mask[rr, cc, i] = 1

    # Return mask, and array of class IDs of each instance. Since we have
    # one class ID only, we return an array of 1s
    # Map class names to class IDs.
    num_ids = np.array(num_ids, dtype=np.int32)
    return mask, num_ids #np.ones([mask.shape[-1]], dtype=np.int32)

The error message:

line 159, in load_mask
    mask[rr, cc, i] = 1
IndexError: index 512 is out of bounds for axis 1 with size 512

512 comes from my image size of 512 by 512.

Please assist me, many thanks.

1 Answers1

0

mask[rr-1, cc-1, i] = 1

just subtracting 1 from rr and cc should solve it for you without compromising much on performance

Sid
  • 1