|
@@ -119,14 +119,31 @@ def draw_label(label, img, label_names, colormap=None):
|
|
|
|
|
|
|
|
|
def shapes_to_label(img_shape, shapes, label_name_to_value, type='class'):
|
|
|
- lbl = np.zeros(img_shape[:2], dtype=np.int32)
|
|
|
+ assert type in ['class', 'instance']
|
|
|
+
|
|
|
+ cls = np.zeros(img_shape[:2], dtype=np.int32)
|
|
|
+ if type == 'instance':
|
|
|
+ ins = np.zeros(img_shape[:2], dtype=np.int32)
|
|
|
+ instance_names = ['__background__']
|
|
|
for shape in shapes:
|
|
|
polygons = shape['points']
|
|
|
- label_name = shape['label']
|
|
|
- label_value = label_name_to_value[label_name]
|
|
|
+ label = shape['label']
|
|
|
+ if type == 'class':
|
|
|
+ cls_name = label
|
|
|
+ elif type == 'instance':
|
|
|
+ cls_name = label.split('-')[0]
|
|
|
+ if label not in instance_names:
|
|
|
+ instance_names.append(label)
|
|
|
+ ins_id = len(instance_names) - 1
|
|
|
+ cls_id = label_name_to_value[cls_name]
|
|
|
mask = polygons_to_mask(img_shape[:2], polygons)
|
|
|
- lbl[mask] = label_value
|
|
|
- return lbl
|
|
|
+ cls[mask] = cls_id
|
|
|
+ if type == 'instance':
|
|
|
+ ins[mask] = ins_id
|
|
|
+
|
|
|
+ if type == 'instance':
|
|
|
+ return cls, ins
|
|
|
+ return cls
|
|
|
|
|
|
|
|
|
def labelme_shapes_to_label(img_shape, shapes):
|