Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Getting parameters for SMPL body model #3

Closed
dcetin opened this issue Dec 12, 2019 · 4 comments
Closed

Getting parameters for SMPL body model #3

dcetin opened this issue Dec 12, 2019 · 4 comments

Comments

@dcetin
Copy link

dcetin commented Dec 12, 2019

I went through the examples in the repo but I think I am currently missing on how to extract the SMPL pose parameters from the given SMPL-H parameters in the provided npz archives.

It says in the paper that AMASS uses 52 joints, where 22 joints are for the body and 30 joints belong to the hands. On the other hand, SMPL has 24 joints (including the root orientation), which is corroborated by the Figure 3 in the AMASS paper.

So, I am not sure on how to close this gap. I assumed the missing 2 joints are the ones for hands. Should I take the first 22x3 body parameters from the 'poses' dictionary entry and somehow append 2x3 parameters from the last 30 hand joints? I'd be happy if anyone can shed some more light on this. Thanks!

@nghorbani
Copy link
Owner

just a quick note: as described within the AMASS text, wherever we mention SMPL in the paper, we actually mean SMPL+H.
The figure 3 is a simplified version of the SMPL+H model and the overlayed skeleton only tries to pass the message that SMPL(+H) in contrast to SCAPE actually has an skeleton! sorry if you find that confusing.
Another quick note, is that SMPL and SMPL+H have equal shape spaces. This is important because then the location of the joints that is shape dependent, will also be equal between these models. This
further means if you configure a specific joint in SMPL and pass the same configuration to SMPL+H you get the exact same posed bodies.

Now we get to the differences of SMPL and SMPL+H.

You have guessed it right. If you want to use the SMPL+H pose vector to pose a SMPL body you have to only use elements up-to 66 (axis angle representation of 22 joints) and for the remaining 6 elements (for two joints) pass zero. These two remaining joints are hand end effectors.

The above explanation would be totally transparent when using BodyModel from human_body_prior to instantiate a body model. That is, using that code you only pass values for certain body parts, meaning root_orient, pose_body, and pose_hand. Now pose_hand for SMPL+H has to be 90 dimensions (for 2 hands x 15 joints each x 3 axis-angle parameters), and it should be 6 for SMPL model (2 hand end effectors x 3 axis angle params). If you instantiate a SMPL+H body and only pass root_orient and pose_body, then the code automatically uses zero for remaining joints.

I hope you find these explanations a bit helpful.
Nima

@dcetin
Copy link
Author

dcetin commented Dec 16, 2019

Thanks for the detailed and quick reply!

@rawalkhirodkar
Copy link

And the first 10 betas from 16 for SMPL-X would be the shape parameters for SMPL?

@dcetin
Copy link
Author

dcetin commented Mar 18, 2020

I believe SMPL/SMPL-H shape space do not correspond with that of SMPL-X. See explanation here in the SMPL-X section.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants