NVlabs / dex-ycb-toolkit

A Python package that provides evaluation and visualization tools for the DexYCB dataset
https://dex-ycb.github.io
GNU General Public License v3.0
145 stars 24 forks source link

mano shape consistency for right and left hand. #28

Closed GYTuuT closed 1 year ago

GYTuuT commented 1 year ago

Thank you for your wonderful work ! Many other works which use MANO hands have considered the problem of shapedirs parameters that raised in Bug on shapedirs of MANO. I want to konw if the mano annotations of DexYCB take the problem into acount, as I found the right and left hands may have different shape even though they are of a same person.

ychao-nvidia commented 1 year ago

We discovered the shapedirs issue in MANO after we completed the annotation process, so that issue was not taken into account during the annotation process.

Note that for each subject, DexYCB uses the same shape parameter (betas) for the right and left hand (e.g., see calibration/mano_20200709_140042_subject-01_right/mano.yml). That said, the shape of right and left hand will be slightly inconsistent due the issue above.

As also mentioned here, flipping the x values of shapedirs for the left hand would fix it. For DexYCB, this can be done by adding the following lines after this line in the manopth submodule:

if side == 'left':
  self.th_shapedirs[:, 0] *= -1
GYTuuT commented 1 year ago

Thanks for your reply !

But if I fix the inconsistent shape by flipping x values of shapedirs in manolayer, the joints produced from MANO layer using annotation label['pose_m'] and betas, will be a lot different (4~13 mm for Root-Aligned MPJPE) form the annotation label['joint_3d'] when it's left hand. And before flipping shapedirs, these errors are only about 0.2 mm.

Is that right or I make mistake somwhere ?

ychao-nvidia commented 1 year ago

That sounds right because label["joint_3d"] was generated with label["pose_m"] and betas without flipping shapedirs. If you change the shape, the joint location will also change accordingly.

If you want to flip shapedirs then label["joint_3d"] will need to be regenerated to be consistent.

GYTuuT commented 1 year ago

Got it ! It helps me a lot, Thanks !