HSMR / lib /body_models /common.py
IsshikiHugh's picture
feat: CPU demo
5ac1897
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,
)