Spaces:
Configuration error
Configuration error
from __future__ import print_function | |
import os | |
import sys | |
import random | |
import copy | |
import argparse | |
import math | |
import pickle | |
import json | |
import glob | |
import numpy as np | |
sys.path.insert(0, os.getcwd()) | |
from lib.utils.utils_data import crop_scale | |
def parse_args(): | |
parser = argparse.ArgumentParser() | |
parser.add_argument('--name_action', type=str) | |
args = parser.parse_args() | |
print("\nParameters:") | |
for attr, value in sorted(args.__dict__.items()): | |
print("\t{}={}".format(attr.upper(), value)) | |
return args | |
def json2pose(json_dict): | |
pose_h36m = np.zeros([17,3]) | |
idx2key = ['Hip', | |
'R Hip', | |
'R Knee', | |
'R Ankle', | |
'L Hip', | |
'L Knee', | |
'L Ankle', | |
'Belly', | |
'Neck', | |
'Nose', | |
'Head', | |
'L Shoulder', | |
'L Elbow', | |
'L Wrist', | |
'R Shoulder', | |
'R Elbow', | |
'R Wrist', | |
] | |
for i in range(17): | |
if idx2key[i]=='Belly' or idx2key[i]=='Head': | |
pose_h36m[i] = 0, 0, 0 | |
else: | |
item = json_dict[idx2key[i]] | |
pose_h36m[i] = item['x'], item['y'], item['logits'] | |
return pose_h36m | |
def load_motion(json_path): | |
json_dict = json.load(open(json_path, 'r')) | |
pose_h36m = json2pose(json_dict) | |
return pose_h36m | |
args = parse_args() | |
dataset_root = 'data/Motion2d/InstaVariety/InstaVariety_tracks/' | |
action_motions = [] | |
dir_action = os.path.join(dataset_root, args.name_action) | |
for name_vid in sorted(os.listdir(dir_action)): | |
dir_vid = os.path.join(dir_action, name_vid) | |
for name_clip in sorted(os.listdir(dir_vid)): | |
motion_path = os.path.join(dir_vid, name_clip) | |
motion_list = sorted(glob.glob(motion_path+'/*.json')) | |
if len(motion_list)==0: | |
continue | |
motion = [load_motion(i) for i in motion_list] | |
motion = np.array(motion) | |
motion = crop_scale(motion) | |
motion[:,:,:2] = motion[:,:,:2] - motion[0:1,0:1,:2] | |
motion[motion[:,:,2]==0] = 0 | |
action_motions.append(motion) | |
print("%s Done, %d vids processed" % (name_vid, len(action_motions))) | |
print("%s Done, %d vids processed" % (args.name_action, len(action_motions))) | |
with open(os.path.join(dir_action, '%s.pkl' % args.name_action), 'wb') as f: | |
pickle.dump(action_motions, f) | |