HEAT / s3d_preprocess /organize_data.py
Egrt's picture
init
424188c
import os
from shutil import copyfile
data_base = './montefloor_data/'
dir_names = list(sorted(os.listdir(data_base)))
out_path = './s3d_floorplan'
wrong_s3d_annotations_list = [3261, 3271, 3276, 3296, 3342, 3387, 3398, 3466, 3496]
train_list = []
val_list = []
test_list = []
for dir_name in dir_names:
data_dir = os.path.join(data_base, dir_name)
annot_path = os.path.join(data_dir, 'annot.npy')
if not os.path.exists(annot_path):
continue
data_id = int(dir_name[-5:])
if data_id in wrong_s3d_annotations_list:
continue
annot_dst = os.path.join(out_path, 'annot', dir_name[-5:] + '.npy')
density_dst = os.path.join(out_path, 'density', dir_name[-5:] + '.png')
normal_dst = os.path.join(out_path, 'normals', dir_name[-5:] + '.png')
density_src = os.path.join(data_dir, 'density.png')
normal_src = os.path.join(data_dir, 'normals.png')
copyfile(normal_src, normal_dst)
copyfile(density_src, density_dst)
copyfile(annot_path, annot_dst)
if 0 <= data_id < 3000:
train_list.append(dir_name[-5:])
elif data_id < 3250:
val_list.append(dir_name[-5:])
else:
test_list.append(dir_name[-5:])
with open(os.path.join(out_path, 'train_list.txt'), 'w') as f:
for item in train_list:
f.write(item + '\n')
with open(os.path.join(out_path, 'valid_list.txt'), 'w') as f:
for item in val_list:
f.write(item + '\n')
with open(os.path.join(out_path, 'test_list.txt'), 'w') as f:
for item in test_list:
f.write(item + '\n')