|
from argparse import Namespace |
|
import re |
|
from os.path import join as pjoin |
|
|
|
|
|
def is_float(numStr): |
|
flag = False |
|
numStr = str(numStr).strip().lstrip('-').lstrip('+') |
|
try: |
|
reg = re.compile(r'^[-+]?[0-9]+\.[0-9]+$') |
|
res = reg.match(str(numStr)) |
|
if res: |
|
flag = True |
|
except Exception as ex: |
|
print("is_float() - error: " + str(ex)) |
|
return flag |
|
|
|
|
|
def is_number(numStr): |
|
flag = False |
|
numStr = str(numStr).strip().lstrip('-').lstrip('+') |
|
if str(numStr).isdigit(): |
|
flag = True |
|
return flag |
|
|
|
|
|
def get_opt(opt_path, device): |
|
opt = Namespace() |
|
opt_dict = vars(opt) |
|
|
|
skip = ('-------------- End ----------------', |
|
'------------ Options -------------', |
|
'\n') |
|
print('Reading', opt_path) |
|
with open(opt_path) as f: |
|
for line in f: |
|
if line.strip() not in skip: |
|
|
|
key, value = line.strip().split(': ') |
|
if value in ('True', 'False'): |
|
opt_dict[key] = (value == 'True') |
|
|
|
elif is_float(value): |
|
opt_dict[key] = float(value) |
|
elif is_number(value): |
|
opt_dict[key] = int(value) |
|
else: |
|
opt_dict[key] = str(value) |
|
|
|
|
|
opt_dict['which_epoch'] = 'finest' |
|
opt.save_root = pjoin(opt.checkpoints_dir, opt.dataset_name, opt.name) |
|
opt.model_dir = pjoin(opt.save_root, 'model') |
|
opt.meta_dir = pjoin(opt.save_root, 'meta') |
|
|
|
if opt.dataset_name == 't2m': |
|
opt.data_root = './dataset/HumanML3D/' |
|
opt.motion_dir = pjoin(opt.data_root, 'new_joint_vecs') |
|
opt.text_dir = pjoin(opt.data_root, 'texts') |
|
opt.joints_num = 22 |
|
opt.dim_pose = 263 |
|
opt.max_motion_length = 196 |
|
opt.max_motion_frame = 196 |
|
opt.max_motion_token = 55 |
|
elif opt.dataset_name == 'kit': |
|
opt.data_root = './dataset/KIT-ML/' |
|
opt.motion_dir = pjoin(opt.data_root, 'new_joint_vecs') |
|
opt.text_dir = pjoin(opt.data_root, 'texts') |
|
opt.joints_num = 21 |
|
opt.dim_pose = 251 |
|
opt.max_motion_length = 196 |
|
opt.max_motion_frame = 196 |
|
opt.max_motion_token = 55 |
|
else: |
|
raise KeyError('Dataset not recognized') |
|
|
|
opt.dim_word = 300 |
|
opt.num_classes = 200 // opt.unit_length |
|
opt.is_train = False |
|
opt.is_continue = False |
|
opt.device = device |
|
|
|
return opt |