Spaces:
Sleeping
Sleeping
from lib.kits.basic import * | |
from smplx import SMPL | |
from lib.platform import PM | |
from lib.body_models.skel_wrapper import SKELWrapper as SKEL | |
from lib.body_models.smpl_wrapper import SMPLWrapper | |
def make_SMPL(gender='neutral', device='cuda:0'): | |
return SMPL( | |
gender = gender, | |
model_path = PM.inputs / 'body_models' / 'smpl', | |
).to(device) | |
def make_SMPL_hmr2(gender='neutral', device='cuda:0'): | |
''' SKEL doesn't have neutral model, so align with SKEL, using male. ''' | |
return SMPLWrapper( | |
gender = gender, | |
model_path = PM.inputs / 'body_models' / 'smpl', | |
num_body_joints = 23, | |
joint_regressor_extra = PM.inputs / 'body_models/SMPL_to_J19.pkl', | |
).to(device) | |
def make_SKEL(gender='male', device='cuda:0'): | |
''' We don't have neutral model for SKEL, so use male for now. ''' | |
return make_SKEL_mix_joints(gender, device) | |
def make_SKEL_smpl_joints(gender='male', device='cuda:0'): | |
''' We don't have neutral model for SKEL, so use male for now. ''' | |
return SKEL( | |
gender = gender, | |
model_path = PM.inputs / 'body_models' / 'skel', | |
joint_regressor_extra = PM.inputs / 'body_models' / 'SMPL_to_J19.pkl', | |
joint_regressor_custom = PM.inputs / 'body_models' / 'J_regressor_SMPL_MALE.pkl', | |
).to(device) | |
def make_SKEL_skel_joints(gender='male', device='cuda:0'): | |
''' We don't have neutral model for SKEL, so use male for now. ''' | |
return SKEL( | |
gender = gender, | |
model_path = PM.inputs / 'body_models' / 'skel', | |
joint_regressor_extra = PM.inputs / 'body_models' / 'SMPL_to_J19.pkl', | |
).to(device) | |
def make_SKEL_mix_joints(gender='male', device='cuda:0'): | |
''' We don't have neutral model for SKEL, so use male for now. ''' | |
return SKEL( | |
gender = gender, | |
model_path = PM.inputs / 'body_models' / 'skel', | |
joint_regressor_extra = PM.inputs / 'body_models' / 'SMPL_to_J19.pkl', | |
joint_regressor_custom = PM.inputs / 'body_models' / 'J_regressor_SKEL_mix_MALE.pkl', | |
).to(device) | |
def make_SMPLX_moyo(v_template_path:Union[str, Path], batch_size:int=1, device='cuda:0'): | |
from lib.body_models.moyo_smplx_wrapper import MoYoSMPLX | |
return MoYoSMPLX( | |
model_path = PM.inputs / 'body_models' / 'smplx', | |
v_template_path = v_template_path, | |
batch_size = batch_size, | |
device = device, | |
) |