|
import sys |
|
import torch |
|
sys.path.append('.') |
|
import os |
|
import numpy as np |
|
import glob |
|
from tqdm import tqdm |
|
|
|
dataset_location = '../data/point_odyssey' |
|
|
|
for dset in ["train", "test", "sample"]: |
|
sequences = [] |
|
subdir = os.path.join(dataset_location, dset) |
|
for seq in glob.glob(os.path.join(subdir, "*/")): |
|
sequences.append(seq) |
|
|
|
squences = sorted(sequences) |
|
|
|
print('found %d unique videos in %s (dset=%s)' % (len(sequences), dataset_location, dset)) |
|
|
|
|
|
print('loading trajectories...') |
|
|
|
for seq in sequences: |
|
|
|
|
|
|
|
|
|
info_path = os.path.join(seq, 'info.npz') |
|
info = np.load(info_path, allow_pickle=True) |
|
trajs_3d_shape = info['trajs_3d'].astype(np.float32) |
|
|
|
if len(trajs_3d_shape): |
|
print('processing', seq) |
|
rgb_path = os.path.join(seq, 'rgbs') |
|
info_path = os.path.join(seq, 'info.npz') |
|
annotations_path = os.path.join(seq, 'anno.npz') |
|
|
|
trajs_3d_path = os.path.join(seq, 'trajs_3d') |
|
trajs_2d_path = os.path.join(seq, 'trajs_2d') |
|
os.makedirs(trajs_3d_path, exist_ok=True) |
|
os.makedirs(trajs_2d_path, exist_ok=True) |
|
|
|
|
|
info = np.load(info_path, allow_pickle=True) |
|
trajs_3d_shape = info['trajs_3d'] |
|
anno = np.load(annotations_path, allow_pickle=True) |
|
keys = {'trajs_2d': 'traj_2d', 'trajs_3d': 'traj_3d', 'valids': 'valid', 'visibs': 'visib', 'intrinsics': 'intrinsic', 'extrinsics': 'extrinsic'} |
|
if len(trajs_3d_shape) == 0: |
|
print(anno['trajs_3d']) |
|
print('skipping', seq) |
|
continue |
|
tensors = {key: torch.tensor(anno[key]).cuda() for key in keys} |
|
|
|
for t in tqdm(range(trajs_3d_shape[0])): |
|
for key, item_key in keys.items(): |
|
path = os.path.join(seq, key) |
|
os.makedirs(path, exist_ok=True) |
|
filename = os.path.join(path, f'{item_key}_{t:05d}.npy') |
|
np.save(filename, tensors[key][t].cpu().numpy()) |
|
|
|
|
|
|
|
|
|
|