generalizable-neural-performer / gnr

Implementation of "Generalizable Neural Performer: Learning Robust Radiance Fields for Human Novel View Synthesis"
178 stars 9 forks source link

recreate fitted smplx mesh from params in '/param' folder #7

Closed shanemankiw closed 2 years ago

shanemankiw commented 2 years ago

In Annotation.md you mentioned that the mesh can be retrieved by parameters in param folder. I noticed that the param npy files only contains the following information: image there are 135 joints, and a 66x1 pose provided. But it doesn't seem consistent with the smplx model. Could you explain how can we use the parameters in detail? Thank you very much in advance.

generalizable-neural-performer commented 2 years ago

Hi, @shanemankiw could you please provide the case name of this parameter? It seems like the very old version of smplx parameter dictionary structure. I am afraid there is some miss-alignment of the data version, if you can provide the download link, that will be better.

shanemankiw commented 2 years ago

Hi, thanks for the quick reply. This is from Test10 dataset, and every param npy file in every person(amanda/param, joseph_mantanda/param, etc.) gave this type of parameters. For instance, this is from joseph_matanda/param/0400.npy image

shanemankiw commented 2 years ago

Hi, @shanemankiw could you please provide the case name of this parameter? It seems like the very old version of smplx parameter dictionary structure. I am afraid there is some miss-alignment of the data version, if you can provide the download link, that will be better.

As for the download link, I downloaded directly from the onedrive link you provided.

generalizable-neural-performer commented 2 years ago

Hi, @shanemankiw , I am afraid that you downloaded data before 5.10 when we reframed data structure. Please re-download the Test10 data from the link.

shanemankiw commented 2 years ago

Oh that's true. Thanks for your reply!

shanemankiw commented 2 years ago

Hi, @shanemankiw , I am afraid that you downloaded data before 5.10 when we reframed data structure. Please re-download the Test10 data from the link.

Hi, I visualized the bbox of the .obj mesh, keypoints3d from the param .npy, along with the camera positions, and this happens: image A closeup at bbox and body_pose: image The red box is the bbox calculated according to the .obj file, the yellow points are body_pose provided in param npy file.
It seems like the body_pose does not match the mesh file, and also does not match with the camera positions. May I ask how can I transfer the body_pose&mesh to world coordinates?

And also, the scale is multiplied to the body pose already (smplx_scale=1 as provided in fuzhizhi/param/0409.npy)

shanemankiw commented 2 years ago

And F.Y.I, 'joints' in this version of data is consistent with world coordinate. image

Hi, thanks for the quick reply. This is from Test10 dataset, and every param npy file in every person(amanda/param, joseph_mantanda/param, etc.) gave this type of parameters. For instance, this is from joseph_matanda/param/0400.npy image

generalizable-neural-performer commented 2 years ago

Please try to generate smpl mesh using the smpl_from_param function in here, to quickly check the difference between provided obj mesh and parameter generated mesh, please try

python genebody/genebody.py path_to_genebody fuzhizhi path_to_smplx

fuzhizhi.obj will be generated in the project directory.

For the bounding box issue, I can not find any misalignment, you can print the bounding box of mesh vertices and keypoints3d in parameter, in the example of the data interface.

shanemankiw commented 2 years ago

Please try to generate smpl mesh using the smpl_from_param function in here, to quickly check the difference between provided obj mesh and parameter generated mesh, please try

python genebody/genebody.py path_to_genebody fuzhizhi path_to_smplx

fuzhizhi.obj will be generated in the project directory.

For the bounding box issue, I can not find any misalignment, you can print the bounding box of mesh vertices and keypoints3d in parameter, in the example of the data interface.

Hi, i tried it and it seems like the joints from smpl output: output['joints'], have a huge diffrence with 3dkeypoints from npy file: param['keypoints3d'], as shown here(green is smpl output, purple is keypoints3d): image but the mesh and bbox is good and fits in the world coordinates.

generalizable-neural-performer commented 2 years ago

Yes, have you tried the genebody/genebody.py scripts the validate the generated smpl keypoints? As mentioned in Annotation.md, we define a smpl scale 'outside' the smpl model, so all the output in 3d coordinate have to be multiplied by a scalar, both returned 'vertices' and 'joints'. Check out the reference code to get the aligned keypoints3d here.