def find_matches(self, examples):
        """ """
        print(f'Finding matches for {self.dname}')
        save_dir = f'temp_files/target_visual_check_{self.dname}'
        for split in ['train', 'val']:
            split_txt_fpath = f'{_ROOT}/mseg/dataset_lists/{self.dname}/list/{split}.txt'
            pairs = generate_all_img_label_pair_fpaths(self.dataroot,
                                                       split_txt_fpath)

            for (title, annot_fname, data_split) in examples:
                parent, fname_stem, _ = get_unique_mask_identifiers(
                    self.dname, annot_fname, data_split)
                for (rgb_fpath, label_fpath) in pairs:
                    if Path(rgb_fpath).stem == fname_stem and Path(
                            label_fpath).parts[-2] == parent:

                        rgb_img = imageio.imread(rgb_fpath)
                        label_img = imageio.imread(label_fpath)
                        save_fpath = f'{save_dir}/{self.dname}_{title}_{annot_fname}'
                        save_classnames_in_image_maxcardinality(
                            rgb_img,
                            label_img,
                            self.id_to_classname_map,
                            font_color=(255, 255, 255),  # (0,0,0),
                            save_to_disk=True,
                            save_fpath=save_fpath)
示例#2
0
def verify_all_relabeled_dataset_segments(num_processes: int, mld: Any,
                                          dname: str, dataroot: str,
                                          update_records,
                                          require_strict_boundaries: bool):
    """
	By using remap.py, we already have converted label img from original taxonomy, to universal taxonomy.

		Args:
		-	num_processes: number of processes to launch; shouldn't exceed number of cores on machine
		-	mld: Mask Level Dataset
		-	dname: string representing name of a dataset taxonomy
		-	dataroot: string representing path to a file directory
		-	update_records

		Returns:
		-	None
	"""
    classname_to_id_map = get_classname_to_dataloaderid_map(
        dname, include_ignore_idx_cls=True)
    # Check for incorrect class names.
    for rec in update_records:
        valid_orig = rec.orig_class in classname_to_id_map.keys()
        valid_relabeled = rec.relabeled_class in classname_to_id_map.keys()
        if not (valid_orig and valid_relabeled):
            print(rec.__dict__)
            print(
                f'Invalid universal classname: {rec.orig_class}, {rec.relabeled_class}'
            )
            quit()

    for split in ['train', 'val']:
        # Create for each split separately, since SUNRGBD has same file names for different images in train vs. val
        parent_fname_to_updatelist_dict = form_fname_to_updatelist_dict(
            dname, update_records, split)
        split_txt_fpath = f'{_ROOT}/mseg/dataset_lists/{dname}/list/{split}.txt'

        # load up the data root and all absolute paths from the txt file
        img_label_pairs = generate_all_img_label_pair_fpaths(
            data_root=dataroot, split_txt_fpath=split_txt_fpath)

        if num_processes > 1:
            send_list_to_workers(
                num_processes=num_processes,
                list_to_split=img_label_pairs,
                worker_func_ptr=verify_mask_worker,
                parent_fname_to_updatelist_dict=parent_fname_to_updatelist_dict,
                mld=mld,
                classname_to_id_map=classname_to_id_map,
                require_strict_boundaries=require_strict_boundaries,
                split=split)
        elif num_processes == 1:
            # useful for debugging in a single thread
            for (img_fpath, label_img_fpath) in img_label_pairs:
                verify_label_img_masks(img_fpath, label_img_fpath,
                                       parent_fname_to_updatelist_dict, mld,
                                       classname_to_id_map,
                                       require_strict_boundaries, split)
示例#3
0
def visual_sanitychecks():
    """
	Save every 1000th image of each dataset, with classnames embedded.
	"""
    save_dir = 'temp_files/MSeg_verify'

    for dname, d_info in infos.items():
        print(f'Writing visual sanity checks for {dname}...')

        if dname in [
                'coco-panoptic-inst-201', 'mapillary-public66',
                'ade20k-151-inst'
        ]:
            continue  # is in RGB format and not comparable

        id_to_classname_map = get_dataloader_id_to_classname_map(dname)
        splits = ['train', 'val']
        split_lists = [d_info.trainlist, d_info.vallist]

        for split, split_list in zip(splits, split_lists):
            pairs = generate_all_img_label_pair_fpaths(d_info.dataroot,
                                                       split_list)

            # Save 5 examples from each dataset split
            step_sz = math.floor(len(pairs) // 5)
            for i, (rgb_fpath, label_fpath) in enumerate(pairs[::step_sz]):
                print(f'On {i} of {dname}')

                rgb_img = cv2_imread_rgb(rgb_fpath)
                label_img = imageio.imread(label_fpath)

                fname_stem = Path(rgb_fpath).stem
                save_fpath = f'{save_dir}/{dname}_{fname_stem}.jpg'
                blend_save_fpath = f'{save_dir}/{dname}_{fname_stem}_blended.jpg'

                if rgb_img.ndim == 2:
                    # this image was grayscale
                    rgb_img = grayscale_to_color(rgb_img)

                form_mask_triple_embedded_classnames(rgb_img,
                                                     label_img,
                                                     id_to_classname_map,
                                                     save_fpath,
                                                     save_to_disk=True)
                frame_visualizer = Visualizer(rgb_img, metadata=None)
                output_img = frame_visualizer.overlay_instances(
                    label_map=label_img,
                    id_to_class_name_map=id_to_classname_map)
                imageio.imwrite(blend_save_fpath, output_img)
def verify_all_dataset_paths_exist():
    """
	Loop through all of the datasets and ensure that the absolute paths exist
	and are valid.
	"""
    for dname, d_info in infos.items():
        print(f'Verifying {dname}...')

        if dname in ['ade20k-151-inst']:
            # no such explicit list
            continue

        for split_list in [d_info.trainlist, d_info.vallist]:
            pairs = generate_all_img_label_pair_fpaths(d_info.dataroot,
                                                       split_list)
            for (rgb_fpath, label_fpath) in pairs:
                assert Path(rgb_fpath).exists()
                assert Path(label_fpath).exists()
        print(f'Verified {dname}.')
示例#5
0
	def extract_semantic_imgs(self, num_processes: int) -> None:
		"""
			Args:
			-	num_processes: number of workers to exploit

			Returns:
			-	None
		"""
		for split in ['train', 'val']:
			
			split_txt_fpath = f'{ROOT}/dataset_lists/{self.orig_dname}/list/{split}.txt'
			# load up the data root and all absolute paths from the txt file
			img_label_pairs = generate_all_img_label_pair_fpaths(self.orig_dataroot, split_txt_fpath)
			send_list_to_workers(
				num_processes=num_processes, 
				list_to_split=img_label_pairs, 
				worker_func_ptr=semantic_extractor_worker,
				cse=self,
				split=split)
示例#6
0
    def find_matches(self, examples):
        """ """
        print(f'Finding matches for {self.dname}...')
        save_dir = f'temp_files/target_visual_check_{self.dname}'
        for split in ['train', 'val']:
            split_txt_fpath = f'{_ROOT}/mseg/dataset_lists/{self.dname}/list/{split}.txt'
            pairs = generate_all_img_label_pair_fpaths(self.dataroot,
                                                       split_txt_fpath)

            for (title, annot_fname, data_split, coords) in examples:
                parent, fname_stem, _ = get_unique_mask_identifiers(
                    self.dname, annot_fname, data_split)
                for (rgb_fpath, label_fpath) in pairs:
                    if Path(rgb_fpath).stem == fname_stem and Path(
                            label_fpath).parts[-2] == parent:
                        y, x = coords
                        rgb_img = imageio.imread(rgb_fpath)
                        label_img = imageio.imread(label_fpath)
                        assert label_img[
                            y, x] == self.get_classname_to_id_map[title]
示例#7
0
def main():
	"""
	"""
	save_dir = 'temp_files'

	# beforehand
	# orig_dname = 'cityscapes-19'
	# orig_dataroot = '/export/share/Datasets/cityscapes'

	# rel_dname = 'cityscapes-19'
	# rel_dataroot = '/export/share/Datasets/MSeg/mseg_dataset/Cityscapes'

	orig_dname = 'coco-panoptic-133'
	orig_dname_lists = 'coco-panoptic-133-temp'
	orig_dataroot = '/export/share/Datasets/COCO2017'

	rel_dname = 'coco-panoptic-133'
	rel_dataroot = '/export/share/Datasets/MSeg/mseg_dataset/COCOPanoptic'

	orig_id_to_classname_map = get_dataloader_id_to_classname_map(orig_dname)
	rel_id_to_classname_map = get_dataloader_id_to_classname_map(rel_dname)

	for split in ['train', 'val']:
		orig_split_txt_fpath = f'../mseg/dataset_lists/{orig_dname_lists}/list/{split}.txt'
		orig_pairs = generate_all_img_label_pair_fpaths(orig_dataroot, orig_split_txt_fpath)

		rel_split_txt_fpath = f'../mseg/dataset_lists/{rel_dname}/list/{split}.txt'
		rel_pairs = generate_all_img_label_pair_fpaths(rel_dataroot, rel_split_txt_fpath)

		for i in range(len(orig_pairs))[::100]:
			orig_pair = orig_pairs[i]
			orig_rgb_fpath, orig_label_fpath = orig_pair
			orig_rgb_img = imageio.imread(orig_rgb_fpath)
			orig_label_img = imageio.imread(orig_label_fpath)

			rel_pair = rel_pairs[i]
			rel_rgb_fpath, rel_label_fpath = rel_pair
			rel_rgb_img = imageio.imread(rel_rgb_fpath)
			rel_label_img = imageio.imread(rel_label_fpath)

			if not np.allclose(orig_label_img,rel_label_img):
				pdb.set_trace()

			fname_stem = Path(orig_rgb_fpath).stem
			orig_save_fpath = f'{save_dir}/{split}_{i}_noguide_orig_{fname_stem}.png'
			orig_guide_save_fpath = f'{save_dir}/{split}_{i}_guide_orig_{fname_stem}.png'

			rel_save_fpath = f'{save_dir}/{split}_{i}_noguide_rel_{fname_stem}.png'
			rel_guide_save_fpath = f'{save_dir}/{split}_{i}_guide_rel_{fname_stem}.png'

			if orig_rgb_img.ndim == 2:
				# this image was grayscale
				orig_rgb_img = grayscale_to_color(orig_rgb_img)
			
			if rel_rgb_img.ndim == 2:
				# this image was grayscale
				rel_rgb_img = grayscale_to_color(rel_rgb_img)

			#save_classnames_in_image(img_rgb, label_img, id_to_class_name_map, save_to_disk=True, save_fpath=save_fpath)
			form_mask_triple_embedded_classnames(orig_rgb_img, orig_label_img, orig_id_to_classname_map, orig_save_fpath, save_to_disk=True)
			save_mask_triple_with_color_guide(orig_rgb_img, orig_label_img, orig_id_to_classname_map,fname_stem,save_dir, orig_guide_save_fpath)

			form_mask_triple_embedded_classnames(rel_rgb_img, rel_label_img, rel_id_to_classname_map, rel_save_fpath, save_to_disk=True)
			save_mask_triple_with_color_guide(rel_rgb_img, rel_label_img, rel_id_to_classname_map,fname_stem,save_dir, rel_guide_save_fpath)