|
@@ -28,8 +28,10 @@ def main():
|
|
|
os.makedirs(args.out_dir)
|
|
|
os.makedirs(osp.join(args.out_dir, 'JPEGImages'))
|
|
|
os.makedirs(osp.join(args.out_dir, 'SegmentationClass'))
|
|
|
+ os.makedirs(osp.join(args.out_dir, 'SegmentationClassPNG'))
|
|
|
os.makedirs(osp.join(args.out_dir, 'SegmentationClassVisualization'))
|
|
|
os.makedirs(osp.join(args.out_dir, 'SegmentationObject'))
|
|
|
+ os.makedirs(osp.join(args.out_dir, 'SegmentationObjectPNG'))
|
|
|
os.makedirs(osp.join(args.out_dir, 'SegmentationObjectVisualization'))
|
|
|
print('Creating dataset:', args.out_dir)
|
|
|
|
|
@@ -62,10 +64,14 @@ def main():
|
|
|
args.out_dir, 'JPEGImages', base + '.jpg')
|
|
|
out_cls_file = osp.join(
|
|
|
args.out_dir, 'SegmentationClass', base + '.npy')
|
|
|
+ out_clsp_file = osp.join(
|
|
|
+ args.out_dir, 'SegmentationClassPNG', base + '.png')
|
|
|
out_clsv_file = osp.join(
|
|
|
args.out_dir, 'SegmentationClassVisualization', base + '.jpg')
|
|
|
out_ins_file = osp.join(
|
|
|
args.out_dir, 'SegmentationObject', base + '.npy')
|
|
|
+ out_insp_file = osp.join(
|
|
|
+ args.out_dir, 'SegmentationObjectPNG', base + '.png')
|
|
|
out_insv_file = osp.join(
|
|
|
args.out_dir, 'SegmentationObjectVisualization', base + '.jpg')
|
|
|
|
|
@@ -83,6 +89,20 @@ def main():
|
|
|
)
|
|
|
ins[cls == -1] = 0 # ignore it.
|
|
|
|
|
|
+ # class label
|
|
|
+
|
|
|
+ # Assume class label ranses [-1, 254] for int32,
|
|
|
+ # and [0, 255] for uint8 as VOC.
|
|
|
+ if cls.min() >= -1 and cls.max() < 255:
|
|
|
+ cls_pil = PIL.Image.fromarray(cls.astype(np.uint8), mode='P')
|
|
|
+ cls_pil.putpalette((colormap * 255).astype(np.uint8).flatten())
|
|
|
+ cls_pil.save(out_clsp_file)
|
|
|
+ else:
|
|
|
+ labelme.logger.warn(
|
|
|
+ '[%s] Cannot save the pixel-wise class label as PNG, '
|
|
|
+ 'so please use the npy file.' % label_file
|
|
|
+ )
|
|
|
+
|
|
|
np.save(out_cls_file, cls)
|
|
|
label_names = ['%d: %s' % (cls_id, cls_name)
|
|
|
for cls_id, cls_name in enumerate(class_names)]
|
|
@@ -90,6 +110,20 @@ def main():
|
|
|
cls, img, label_names, colormap=colormap)
|
|
|
PIL.Image.fromarray(clsv).save(out_clsv_file)
|
|
|
|
|
|
+ # instance label
|
|
|
+
|
|
|
+ # Assume instance label ranses [-1, 254] for int32,
|
|
|
+ # and [0, 255] for uint8 as VOC.
|
|
|
+ if ins.min() >= -1 and ins.max() < 255:
|
|
|
+ ins_pil = PIL.Image.fromarray(ins.astype(np.uint8), mode='P')
|
|
|
+ ins_pil.putpalette((colormap * 255).astype(np.uint8).flatten())
|
|
|
+ ins_pil.save(out_insp_file)
|
|
|
+ else:
|
|
|
+ labelme.logger.warn(
|
|
|
+ '[%s] Cannot save the pixel-wise instance label as PNG, '
|
|
|
+ 'so please use the npy file.' % label_file
|
|
|
+ )
|
|
|
+
|
|
|
np.save(out_ins_file, ins)
|
|
|
instance_ids = np.unique(ins)
|
|
|
instance_names = [str(i) for i in range(max(instance_ids) + 1)]
|