def get_img_pair(self, fname_stem: str) -> Tuple[np.ndarray, np.ndarray]: """ Load 2-tuple of image data from disk (RGB and label). Args: - fname_stem: string representing Returns: - rgb_img - label_img """ # look it up in the dictionary rgb_fpath = self.fname_to_rgbfpath_dict[fname_stem] label_fpath = rgb_fpath.replace('/images/', '/annotations/') label_fpath = label_fpath.replace('.jpg', '.png') rgb_img = imageio.imread(rgb_fpath) if rgb_img.ndim == 2: # this image was grayscale rgb_img = grayscale_to_color(rgb_img) assert rgb_img.ndim == 3 h, w, ch = rgb_img.shape assert ch == 3 label_img = imageio.imread(label_fpath) assert label_img.ndim == 2 assert rgb_img.shape[:2] == label_img.shape[:2] return rgb_img, label_img
def test_grayscale_to_color(): """ Convert simple 2x2 grayscale image into RGB image. """ gray_img = np.array( [ [0,255], [255,0] ], dtype=np.uint8) rgb_img = grayscale_to_color(gray_img) assert rgb_img.shape == (2,2,3) for i in range(2): assert np.allclose(rgb_img[:,:,i], gray_img)
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 get_rgb_img(self, split: str, fname_stem: str) -> np.ndarray: """ Args: - split: string representing training, validation, or testing split of the data - fname_stem: Returns: - rgb_img: color image. """ rgb_img_fpath = f'{self.coco_dataroot}/{split}2017/{fname_stem}.jpg' rgb_img = imageio.imread(rgb_img_fpath) if rgb_img.ndim == 2: # this image was grayscale rgb_img = grayscale_to_color(rgb_img) return rgb_img
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)