import os import glob from tqdm import tqdm # Define the merged dataset metadata dictionary dataset_metadata = { 'davis': { 'img_path': "./data/davis/DAVIS/JPEGImages/480p", 'mask_path': "./data/davis/DAVIS/Annotations/480p", 'dir_path_func': lambda img_path, seq: os.path.join(img_path, seq), 'gt_traj_func': lambda img_path, anno_path, seq: None, 'traj_format': None, 'seq_list': None, 'full_seq': True, 'mask_path_seq_func': lambda mask_path, seq: os.path.join(mask_path, seq), 'skip_condition': None, 'process_func': None, # Not used in mono depth estimation }, 'test': { 'img_path': "./data/test_set", 'mask_path': None, 'dir_path_func': lambda img_path, seq: os.path.join(img_path, seq), 'gt_traj_func': lambda img_path, anno_path, seq: None, 'traj_format': None, 'seq_list': None, 'full_seq': True, 'mask_path_seq_func': lambda mask_path, seq: None, 'skip_condition': None, 'process_func': None, # Not used in mono depth estimation }, 'bonn': { 'img_path': "./data/bonn/rgbd_bonn_dataset", 'mask_path': None, 'dir_path_func': lambda img_path, seq: os.path.join(img_path, f'rgbd_bonn_{seq}', 'rgb_110'), 'gt_traj_func': lambda img_path, anno_path, seq: os.path.join(img_path, f'rgbd_bonn_{seq}', 'groundtruth_110.txt'), 'traj_format': 'tum', 'seq_list': ["balloon2", "crowd2", "crowd3", "person_tracking2", "synchronous"], 'full_seq': False, 'mask_path_seq_func': lambda mask_path, seq: None, 'skip_condition': None, 'process_func': lambda args, img_path: process_bonn(args, img_path), }, 'tum': { 'img_path': "./data/tum", 'mask_path': None, 'dir_path_func': lambda img_path, seq: os.path.join(img_path, seq, 'rgb_50'), 'gt_traj_func': lambda img_path, anno_path, seq: os.path.join(img_path, seq, 'groundtruth_50.txt'), 'traj_format': 'tum', 'seq_list': None, 'full_seq': True, 'mask_path_seq_func': lambda mask_path, seq: None, 'skip_condition': None, 'process_func': None, }, 'sintel': { 'img_path': "./data/MPI-Sintel/MPI-Sintel-training_images/training/final", 'anno_path': "./data/MPI-Sintel/MPI-Sintel-depth-training/training/camdata_left", 'mask_path': "./data/MPI-Sintel/MPI-Sintel-depth-training/training/dynamic_label_perfect/", 'dir_path_func': lambda img_path, seq: os.path.join(img_path, seq), 'gt_traj_func': lambda img_path, anno_path, seq: os.path.join(anno_path, seq), 'traj_format': None, 'seq_list': ["alley_2", "ambush_4", "ambush_5", "ambush_6", "cave_2", "cave_4", "market_2", "market_5", "market_6", "shaman_3", "sleeping_1", "sleeping_2", "temple_2", "temple_3"], 'full_seq': False, 'mask_path_seq_func': lambda mask_path, seq: None, 'skip_condition': None, 'process_func': lambda args, img_path: process_sintel(args, img_path), }, } # Define processing functions for each dataset def process_kitti(args, img_path): for dir in tqdm(sorted(glob.glob(f'{img_path}/*'))): filelist = sorted(glob.glob(f'{dir}/*.png')) save_dir = f'{args.output_dir}/{os.path.basename(dir)}' yield filelist, save_dir def process_bonn(args, img_path): if args.full_seq: for dir in tqdm(sorted(glob.glob(f'{img_path}/*/'))): filelist = sorted(glob.glob(f'{dir}/rgb/*.png')) save_dir = f'{args.output_dir}/{os.path.basename(os.path.dirname(dir))}' yield filelist, save_dir else: seq_list = ["balloon2", "crowd2", "crowd3", "person_tracking2", "synchronous"] if args.seq_list is None else args.seq_list for seq in tqdm(seq_list): filelist = sorted(glob.glob(f'{img_path}/rgbd_bonn_{seq}/rgb_110/*.png')) save_dir = f'{args.output_dir}/{seq}' yield filelist, save_dir def process_nyu(args, img_path): filelist = sorted(glob.glob(f'{img_path}/*.png')) save_dir = f'{args.output_dir}' yield filelist, save_dir def process_scannet(args, img_path): seq_list = sorted(glob.glob(f'{img_path}/*')) for seq in tqdm(seq_list): filelist = sorted(glob.glob(f'{seq}/color_90/*.jpg')) save_dir = f'{args.output_dir}/{os.path.basename(seq)}' yield filelist, save_dir def process_sintel(args, img_path): if args.full_seq: for dir in tqdm(sorted(glob.glob(f'{img_path}/*/'))): filelist = sorted(glob.glob(f'{dir}/*.png')) save_dir = f'{args.output_dir}/{os.path.basename(os.path.dirname(dir))}' yield filelist, save_dir else: seq_list = ["alley_2", "ambush_4", "ambush_5", "ambush_6", "cave_2", "cave_4", "market_2", "market_5", "market_6", "shaman_3", "sleeping_1", "sleeping_2", "temple_2", "temple_3"] for seq in tqdm(seq_list): filelist = sorted(glob.glob(f'{img_path}/{seq}/*.png')) save_dir = f'{args.output_dir}/{seq}' yield filelist, save_dir