How to visualize 3d joints of a SMPL model based on pose params

2k Views Asked by At

I am trying to use demo.py in nkolot / GraphCMR | GitHub. I am interested in obtaining joints from the inferred SMPL image and visualize it similar to described in README of this project: gulvarol / smplpytorch | GitHub.

I also posted the issue here: https://github.com/nkolot/GraphCMR/issues/36.

What I tried that didn't work.

I changed https://github.com/nkolot/GraphCMR/blob/4e57dca4e9da305df99383ea6312e2b3de78c321/demo.py#L118 to pred_vertices, pred_vertices_smpl, pred_camera, smpl_pose, smpl_shape = model(...) to get smpl_pose (of shape torch.Size([1, 24, 3, 3])). Then I just flattened it by doing smpl_pose.cpu().data.numpy()[:, :, :, -1].flatten('C').reshape(1, -1) and used the resulting (1, 72) pose params as input in pose_params variable of smplpytorch demo.

The resulting visualization doesn't look correct to me. Is this the right approach? Perhaps there is an easier way to do what I am doing. How to get 3d joints from demo.py and visualize it | nkolot / GraphCMR

1

There are 1 best solutions below

0
Frank On

The problem is that

smpl_pose (of shape torch.Size([1, 24, 3, 3]))

is the SMPL pose parameters expressed as a rotation matrix. You need to make a transformation from rotation matrix to axis-angle representation which is (72,1). You can use Rodrigues formula to do it, as claimed in the paper:

enter image description here

Get more information from the paper: SMPL: A Skinned Multi-Person Linear Model