|
import os |
|
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, opt_path): |
|
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: |
|
print(line.strip()) |
|
key, value = line.strip().split(": ") |
|
if getattr(opt, key, None) is not None: |
|
continue |
|
if value in ("True", "False"): |
|
opt_dict[key] = True if value == "True" else False |
|
elif is_float(value): |
|
opt_dict[key] = float(value) |
|
elif is_number(value): |
|
opt_dict[key] = int(value) |
|
elif "," in value: |
|
value = value[1:-1].split(",") |
|
opt_dict[key] = [int(i) for i in value] |
|
else: |
|
opt_dict[key] = str(value) |
|
|
|
|
|
opt.save_root = os.path.dirname(opt_path) |
|
opt.model_dir = pjoin(opt.save_root, "model") |
|
opt.meta_dir = pjoin(opt.save_root, "meta") |
|
|
|
if opt.dataset_name == "t2m" or opt.dataset_name == "humanml": |
|
opt.joints_num = 22 |
|
opt.dim_pose = 263 |
|
opt.max_motion_length = 196 |
|
opt.radius = 4 |
|
opt.fps = 20 |
|
elif opt.dataset_name == "kit": |
|
opt.joints_num = 21 |
|
opt.dim_pose = 251 |
|
opt.max_motion_length = 196 |
|
opt.radius = 240 * 8 |
|
opt.fps = 12.5 |
|
else: |
|
raise KeyError("Dataset not recognized") |
|
|