open-mmlab / mmpose

OpenMMLab Pose Estimation Toolbox and Benchmark.
https://mmpose.readthedocs.io/en/latest/
Apache License 2.0
5.93k stars 1.27k forks source link

Preprocess Human3.6m tool only outputs 17 joints. #1152

Closed leng-yue closed 2 years ago

leng-yue commented 2 years ago

Describe the bug

The h36m_train.npz generated by tools/dataset/preprocess_h36m.py only contains 17 joints, which is different from the SPIN's preprocess tool. And this leads to a training error in configs/body/3d_mesh_sview_rgb_img/hmr/mixed/res50_mixed_224x224.py.

Reproduction

python tools/train.py configs/body/3d_mesh_sview_rgb_img/hmr/mixed/res50_mixed_224x224.py --no-validate
configs/body/3d_mesh_sview_rgb_img/hmr/mixed/res50_mixed_224x224.py

Bug fix

Following SPIN's joints generation code should solve this problem.

https://github.com/nkolot/SPIN/blob/5c796852ca7ca7373e104e8489aa5864323fbf84/datasets/preprocess/h36m_train.py#L92-L105

leng-yue commented 2 years ago

SPIN's h36m_train.py can't be wrong directly since there are some typos. Here is a fixed version.
https://gist.github.com/leng-yue/25125cd13bbdae31717ea078f1786028

jin-s13 commented 2 years ago

@zengwang430521 Could you please offer some help?

ly015 commented 2 years ago

Hi, Human3.6m dataset is used for 2 different tasks in MMPose, namely human mesh recovery and 3D keypoint detection. The data preprocessing tool tools/dataset/preprocess_h36m.py is only for the latter, thus its output follows a different convention and cannot be used for HMR. Please follow this guide to prepare HMR training data. Sorry for the confusion.

Also, please note that we have a new codebase MMHuman3D for the 3D parametric model, which has already support HMR and several other 3D mesh recovery algorithms. Check it out!

leng-yue commented 2 years ago

Thanks a lot.