def test_can_write_and_parse_dataset_meta_file(self): src_label_map = Cityscapes.CITYSCAPES_LABEL_MAP with TestDir() as test_dir: source_dataset = Dataset.from_iterable([], categories=Cityscapes.make_cityscapes_categories(src_label_map)) CityscapesConverter.convert(source_dataset, test_dir, save_dataset_meta=True) dst_label_map = parse_meta_file(test_dir) self.assertEqual(src_label_map, dst_label_map)
def test_can_import(self): # is_crowd marks labels allowing to specify instance id source_dataset = Dataset.from_iterable([ DatasetItem(id='defaultcity/defaultcity_000001_000031', subset='test', image=np.ones((1, 5, 3)), annotations=[ Mask(np.array([[1, 1, 0, 0, 0]]), label=3, attributes={'is_crowd': True}), Mask(np.array([[0, 0, 1, 0, 0]]), id=1, label=27, attributes={'is_crowd': False}), Mask(np.array([[0, 0, 0, 1, 1]]), id=2, label=27, attributes={'is_crowd': False}), ] ), DatasetItem(id='defaultcity/defaultcity_000001_000032', subset='test', image=np.ones((1, 5, 3)), annotations=[ Mask(np.array([[1, 1, 0, 0, 0]]), id=1, label=31, attributes={'is_crowd': False}), Mask(np.array([[0, 0, 1, 0, 0]]), label=12, attributes={'is_crowd': True}), Mask(np.array([[0, 0, 0, 1, 1]]), label=3, attributes={'is_crowd': True}), ] ), DatasetItem(id='defaultcity/defaultcity_000002_000045', subset='train', image=np.ones((1, 5, 3)), annotations=[ Mask(np.array([[1, 1, 0, 1, 1]]), label=3, attributes={'is_crowd': True}), Mask(np.array([[0, 0, 1, 0, 0]]), id=1, label=24, attributes={'is_crowd': False}), ] ), DatasetItem(id='defaultcity/defaultcity_000001_000019', subset = 'val', image=np.ones((1, 5, 3)), annotations=[ Mask(np.array([[1, 0, 0, 1, 1]]), label=3, attributes={'is_crowd': True}), Mask(np.array([[0, 1, 1, 0, 0]]), id=24, label=1, attributes={'is_crowd': False}), ] ), ], categories=Cityscapes.make_cityscapes_categories()) parsed_dataset = Dataset.import_from(DUMMY_DATASET_DIR, 'cityscapes') compare_datasets(self, source_dataset, parsed_dataset)
def test_can_import_with_train_label_map(self): source_dataset = Dataset.from_iterable([ DatasetItem(id='defaultcity/defaultcity_000001_000031', subset='test', image=np.ones((1, 5, 3)), annotations=[ Mask(np.array([[1, 1, 0, 0, 0]]), label=19, attributes={'is_crowd': True}), Mask(np.array([[0, 0, 1, 1, 1]]), label=14, attributes={'is_crowd': True}), ] ), DatasetItem(id='defaultcity/defaultcity_000001_000032', subset='test', image=np.ones((1, 5, 3)), annotations=[ Mask(np.array([[1, 1, 0, 0, 0]]), label=16, attributes={'is_crowd': True}), Mask(np.array([[0, 0, 1, 0, 0]]), label=3, attributes={'is_crowd': True}), Mask(np.array([[0, 0, 0, 1, 1]]), label=19, attributes={'is_crowd': True}), ] ), DatasetItem(id='defaultcity/defaultcity_000002_000045', subset='train', image=np.ones((1, 5, 3)), annotations=[ Mask(np.array([[1, 1, 0, 1, 1]]), label=19, attributes={'is_crowd': True}), Mask(np.array([[0, 0, 1, 0, 0]]), label=11, attributes={'is_crowd': True}), ] ), DatasetItem(id='defaultcity/defaultcity_000001_000019', subset = 'val', image=np.ones((1, 5, 3)), annotations=[ Mask(np.array([[1, 1, 1, 1, 1]]), label=19, attributes={'is_crowd': True}), ] ), ], categories=Cityscapes.make_cityscapes_categories( label_map=TRAIN_CITYSCAPES_LABEL_MAP)) parsed_dataset = Dataset.import_from(DUMMY_TRAIN_DATASET_DIR, 'cityscapes') compare_datasets(self, source_dataset, parsed_dataset)
def test_inplace_save_writes_only_updated_data(self): src_mask_cat = MaskCategories.generate(2, include_background=False) expected = Dataset.from_iterable([ DatasetItem(1, subset='a', image=np.ones((2, 1, 3)), annotations=[ Mask(np.ones((2, 1)), label=2, id=1) ]), DatasetItem(2, subset='a', image=np.ones((3, 2, 3))), DatasetItem(2, subset='b', image=np.ones((2, 2, 3)), annotations=[ Mask(np.ones((2, 2)), label=1, id=1) ]), ], categories=Cityscapes.make_cityscapes_categories(OrderedDict([ ('a', src_mask_cat.colormap[0]), ('b', src_mask_cat.colormap[1]), ]))) with TestDir() as path: dataset = Dataset.from_iterable([ DatasetItem(1, subset='a', image=np.ones((2, 1, 3)), annotations=[ Mask(np.ones((2, 1)), label=1) ]), DatasetItem(2, subset='b', image=np.ones((2, 2, 3)), annotations=[ Mask(np.ones((2, 2)), label=0) ]), DatasetItem(3, subset='c', image=np.ones((2, 3, 3)), annotations=[ Mask(np.ones((2, 2)), label=0) ]), ], categories={ AnnotationType.label: LabelCategories.from_iterable(['a', 'b']), AnnotationType.mask: src_mask_cat }) dataset.export(path, 'cityscapes', save_images=True) dataset.put(DatasetItem(2, subset='a', image=np.ones((3, 2, 3)))) dataset.remove(3, 'c') dataset.save(save_images=True) self.assertEqual({'a', 'b'}, set(os.listdir(osp.join(path, 'gtFine')))) self.assertEqual({ '1_gtFine_color.png', '1_gtFine_instanceIds.png', '1_gtFine_labelIds.png' }, set(os.listdir(osp.join(path, 'gtFine', 'a')))) self.assertEqual({ '2_gtFine_color.png', '2_gtFine_instanceIds.png', '2_gtFine_labelIds.png' }, set(os.listdir(osp.join(path, 'gtFine', 'b')))) self.assertEqual({'a', 'b'}, set(os.listdir(osp.join(path, 'imgsFine', 'leftImg8bit')))) self.assertEqual({'1_leftImg8bit.png', '2_leftImg8bit.png'}, set(os.listdir(osp.join(path, 'imgsFine', 'leftImg8bit', 'a')))) self.assertEqual({'2_leftImg8bit.png'}, set(os.listdir(osp.join(path, 'imgsFine', 'leftImg8bit', 'b')))) compare_datasets(self, expected, Dataset.import_from(path, 'cityscapes'), require_images=True, ignored_attrs=IGNORE_ALL)
def categories(self): label_map = OrderedDict() label_map['a'] = None label_map['b'] = None return Cityscapes.make_cityscapes_categories(label_map)
def categories(self): label_map = OrderedDict() label_map['background'] = (0, 0, 0) label_map['label_1'] = (1, 2, 3) label_map['label_2'] = (3, 2, 1) return Cityscapes.make_cityscapes_categories(label_map)
def categories(self): return Cityscapes.make_cityscapes_categories()