import os import glob from re import split from tqdm import tqdm from multiprocessing import Pool from functools import partial scannet_dir='/root/data/ScanNet-v2-1.0.0/data/raw' dump_dir='/root/data/scannet_dump' num_process=32 def extract(seq,scannet_dir,split,dump_dir): assert split=='train' or split=='test' if not os.path.exists(os.path.join(dump_dir,split,seq)): os.mkdir(os.path.join(dump_dir,split,seq)) cmd='python reader.py --filename '+os.path.join(scannet_dir,'scans' if split=='train' else 'scans_test',seq,seq+'.sens')+' --output_path '+os.path.join(dump_dir,split,seq)+\ ' --export_depth_images --export_color_images --export_poses --export_intrinsics' os.system(cmd) if __name__=='__main__': if not os.path.exists(dump_dir): os.mkdir(dump_dir) os.mkdir(os.path.join(dump_dir,'train')) os.mkdir(os.path.join(dump_dir,'test')) train_seq_list=[seq.split('/')[-1] for seq in glob.glob(os.path.join(scannet_dir,'scans','scene*'))] test_seq_list=[seq.split('/')[-1] for seq in glob.glob(os.path.join(scannet_dir,'scans_test','scene*'))] extract_train=partial(extract,scannet_dir=scannet_dir,split='train',dump_dir=dump_dir) extract_test=partial(extract,scannet_dir=scannet_dir,split='test',dump_dir=dump_dir) num_train_iter=len(train_seq_list)//num_process if len(train_seq_list)%num_process==0 else len(train_seq_list)//num_process+1 num_test_iter=len(test_seq_list)//num_process if len(test_seq_list)%num_process==0 else len(test_seq_list)//num_process+1 pool = Pool(num_process) for index in tqdm(range(num_train_iter)): seq_list=train_seq_list[index*num_process:min((index+1)*num_process,len(train_seq_list))] pool.map(extract_train,seq_list) pool.close() pool.join() pool = Pool(num_process) for index in tqdm(range(num_test_iter)): seq_list=test_seq_list[index*num_process:min((index+1)*num_process,len(test_seq_list))] pool.map(extract_test,seq_list) pool.close() pool.join()