NetEase-GameAI / ProPose

[CVPR 2023] Learning Analytical Posterior Probability for Human Mesh Recovery
BSD 3-Clause "New" or "Revised" License
134 stars 8 forks source link

I want to input myself real 3d pose joints instead of deconv heatmap 3d pose joints, how I modify code to adopt my idear #2

Closed daixiangzi closed 1 year ago

daixiangzi commented 1 year ago

I replace this line by pred_rel_jts = myself_3dpose https://github.com/NetEase-GameAI/ProPose/blob/fb0167471a06cbdf7986596ccfdf805344a20218/propose/models/mf_heatmap_xyz.py#L188

daixiangzi commented 1 year ago

but result is bad,i think have some ways to convert myself_3dpose to prod_rel_jts;
in addition,how I align myself_3dpose(17 joints-< 24 joints smpl) to smpl?

daixiangzi commented 1 year ago

can you get me some advise?

raypine commented 1 year ago

Theoretically, you can use torch.zeros_like(pred_coord_from_hm) and set the value of corresponding joints with your 17 joints according to the skeleton index. However, directly replace the 3D pose may have the problem. As the weight of 3D pose (kappa) in the released model is relatively large, the parameter F can be regarded as the combination of two componets: rotation representation + residual to improve the estimation of 3D pose. Therefore I guess the rotation without the corresponding joint is not good ? I think there are two ways to improve (or skip) it:

daixiangzi commented 1 year ago

Theoretically, you can use torch.zeros_like(pred_coord_from_hm) and set the value of corresponding joints with your 17 joints according to the skeleton index. However, directly replace the 3D pose may have the problem. As the weight of 3D pose (kappa) in the released model is relatively large, the parameter F can be regarded as the combination of two componets: rotation representation + residual to improve the estimation of 3D pose. Therefore I guess the rotation without the corresponding joint is not good ? I think there are two ways to improve (or skip) it:

  • Training the F parameter with your 17 joints (discard the joint branch). Remember to modify the parents defined in smpl.py.
  • Use the rotation estimation of some methods that only regress theta, replace F with it and fuse it with your keypoints. Despite that it's better to train it, this way is relatively simple to validate sth...

yes,thank for your advise ,firstly,i want to do train 17joints with my data; in fact ,I replace 3d pose in hybrik method(jiefeng li maybe he is your classmate) ;

raypine commented 1 year ago

What's your final output ? Only 17 rotations or the SMPL 24 rotations ?

daixiangzi commented 1 year ago

What's your final output ? Only 17 rotations or the SMPL 24 rotations ? 24 rotations(beta and theta),in fact ,I only want to get 24 rotations

daixiangzi commented 1 year ago

now ,I haven't method which is Simple and effective;