|
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() |