import sys import os import re from tqdm import tqdm import numpy as np import json sys.path.append(os.getcwd()) from display_utils import display_model def create_dir_not_exist(path): if not os.path.exists(path): os.mkdir(path) def save_pic(target, res, smpl_layer, file,logger): pose_params, shape_params, verts, Jtr = res name=re.split('[/.]',file)[-2] gt_path="fit/output/HumanAct12/picture/gt/{}".format(name) fit_path="fit/output/HumanAct12/picture/fit/{}".format(name) create_dir_not_exist(gt_path) create_dir_not_exist(fit_path) logger.info('Saving pictures at {} and {}'.format(gt_path,fit_path)) for i in tqdm(range(target.shape[0])): display_model( {'verts': verts.cpu().detach(), 'joints': target.cpu().detach()}, model_faces=smpl_layer.th_faces, with_joints=True, kintree_table=smpl_layer.kintree_table, savepath=os.path.join(gt_path+"/frame_{}".format(i)), batch_idx=i, show=False, only_joint=True) display_model( {'verts': verts.cpu().detach(), 'joints': Jtr.cpu().detach()}, model_faces=smpl_layer.th_faces, with_joints=True, kintree_table=smpl_layer.kintree_table, savepath=os.path.join(fit_path+"/frame_{}".format(i)), batch_idx=i, show=False) logger.info('Pictures saved') def save_params(res,file,logger): pose_params, shape_params, verts, Jtr = res name=re.split('[/.]',file)[-2] fit_path="fit/output/HumanAct12/params/" create_dir_not_exist(fit_path) logger.info('Saving params at {}'.format(fit_path)) pose_params=pose_params.cpu().detach() pose_params=pose_params.numpy().tolist() shape_params=shape_params.cpu().detach() shape_params=shape_params.numpy().tolist() Jtr=Jtr.cpu().detach() Jtr=Jtr.numpy().tolist() params={} params["pose_params"]=pose_params params["shape_params"]=shape_params params["Jtr"]=Jtr f=open(os.path.join((fit_path), "{}_params.json".format(name)),'w') json.dump(params,f) logger.info('Params saved')