Number of smpl params?
ortegatron opened this issue · 5 comments
Hi, I'm trying to use VPoser to encode the generated SMPL pose from an image.
As far as I've seen Vposer uses a 63 (21*3) length vector (the smpl vector?) to encode it to a vector on its latent space (32 length).
But using expose, the closest to a smpl vector I can get is in: model_output.get('body')["final"]["body_pose"], which is a (1,21,3,3) vector. so it has 3 times more params than vposer is expecting.
What is the reason for this?
Thank you!
Update: Seems like expose is expressing each pose keypoint on a 6-dim space, as said on section 3.1 of the original paper.
I will try now to convert this 6-space rotation into 3-space (angles)
The returned parameters are rotation matrices, hence the 3 by 3 size. To encode it to a VPoser latent space you will need to convert the 21 rotation matrices to axis angle.
Thanks for the reply.
I'm trying to do matrix_to_euler_angles from (https://pytorch3d.readthedocs.io/en/latest/modules/transforms.html)
It should be converting the 3x3 rotation matrix to euler angle, ready to use with VPoser. But it's not working properly.
Am I using the wrong conversion? Thanks again!
@ortegatron VPoser expects the axis angle representation, not euler angles.
So, you should be using the SO3 log map from pytorch3d.
We also provide an implementation for rotation matrix to axis-angle here.
Worked! I ended up using that function on the expose utils.
Thank you very much for taking your time to reply, much appreciated.