import os import sys ROOT_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) sys.path.append(ROOT_DIR) import os.path as osp from utils.pc_viz import visualize_part_seg import argparse category_names = ['Bag', 'Bed', 'Bottle', 'Bowl', 'Chair', 'Clock', 'Dishwasher', 'Display', 'Door', 'Earphone', # 0-9 'Faucet', 'Hat', 'Keyboard', 'Knife', 'Lamp', 'Laptop', 'Microwave', 'Mug', 'Refrigerator', 'Scissors', # 10-19 'StorageFurniture', 'Table', 'TrashCan', 'Vase'] # 20-23 parser = argparse.ArgumentParser(description='Qualitative comparision of ResGCN ' 'against PlainGCN on PartNet segmentation') # dir_path set to the location of the result folder. # result folder should have such structure: # result # ├── plain # result folder for PlainGCN # ├── Bed # the obj director of category Bed # ├── Bed_0_pred.obj # ├── res # result folder for ResGCN # ├── Bed # the obj director of category Bed # ├── Bed_0_pred.obj parser.add_argument('--category', type=int, default=4) parser.add_argument('--obj_no', default=0, type=int, help='NO. of which obj in a given category to visualize') parser.add_argument('--dir_path', default='../result', type=str, help='path to the result') parser.add_argument('--folders', default='plain,res', type=str, help='use "," to separate different folders, eg. "res,plain"') args = parser.parse_args() category = category_names[args.category] obj_no = args.obj_no folders = list(map(lambda x: x.strip(), args.folders.split(','))) folder_paths = list(map(lambda x: osp.join(args.dir_path, x, category), folders)) file_name_pred = '_'.join([category, str(obj_no), 'pred.obj']) file_name_gt = '_'.join([category, str(obj_no), 'gt.obj']) texts = folders.copy() texts.insert(0, 'Ground Truth') # show Ground Truth, PlainGCN, ResGCN visualize_part_seg(file_name_pred, file_name_gt, folder_paths, limit=-1, text=texts, interactive=True, orientation='horizontal')