Giter VIP home page Giter VIP logo

hpcwild's Introduction

Human Performance Capture from Monocular Video in the Wild

Official code release for 3DV 2021 paper Human Performance Capture from Monocular Video in the Wild. We propose a method capable of capturing the dynamic 3D human shape from a monocular video featuring challenging body poses, without any additional input.

If you find our code or paper useful, please cite as

@inproceedings{guo2021human,
  title={Human Performance Capture from Monocular Video in the Wild},
  author={Guo, Chen and Chen, Xu and Song, Jie and Hilliges, Otmar},
  booktitle={2021 International Conference on 3D Vision (3DV)},
  pages={889--898},
  year={2021},
  organization={IEEE}
}

Quick Start

CLone this repo:

git clone https://github.com/MoyGcc/hpcwild.git
cd  hpcwild
conda env create -f environment.yml
conda activate hpcwild

Additional Dependencies:

  1. Kaolin 0.1.0 (https://github.com/NVIDIAGameWorks/kaolin)
  2. MPI mesh library (https://github.com/MPI-IS/mesh)
  3. torch-mesh-isect (https://github.com/vchoutas/torch-mesh-isect)

Download SMPL models (1.0.0 for Python 2.7 (10 shape PCs)) and move them to the corresponding places:

mkdir lib/smpl/smpl_model/
mv /path/to/smpl/models/basicModel_f_lbs_10_207_0_v1.0.0.pkl smpl_rendering/smpl_model/SMPL_FEMALE.pkl
mv /path/to/smpl/models/basicmodel_m_lbs_10_207_0_v1.0.0.pkl smpl_rendering/smpl_model/SMPL_MALE.pkl

Download checkpoints for external modules:

wget https://download.01.org/opencv/openvino_training_extensions/models/human_pose_estimation/checkpoint_iter_370000.pth
mv /path/to/checkpoint_iter_370000.pth external/lightweight-human-pose-estimation.pytorch/checkpoint_iter_370000.pth

wget https://dl.fbaipublicfiles.com/pifuhd/checkpoints/pifuhd.pt pifuhd.pt 
mv /path/to/pifuhd.pt external/pifuhd/checkpoints/pifuhd.pt

Download IPNet weights: https://datasets.d2.mpi-inf.mpg.de/IPNet2020/IPNet_p5000_01_exp_id01.zip
unzip IPNet_p5000_01_exp_id01.zip
mv /path/to/IPNet_p5000_01_exp_id01 registration/experiments/IPNet_p5000_01_exp_id01

gdown --id 1mcr7ALciuAsHCpLnrtG_eop5-EYhbCmz -O modnet_photographic_portrait_matting.ckpt
mv /path/to/modnet_photographic_portrait_matting.ckpt external/MODNet/pretrained/modnet_photographic_portrait_matting.ckpt

Test on 3DPW dataset

Download 3DPW dataset

  1. modify the dataset_path in test.conf.
  2. run bash mesh_recon.sh to obtain the rigid body shape.
  3. run bash registration.sh to register a SMPL+D model to the rigid human body.
  4. run bash tracking.sh to capture the human performance temporally.

Test on your own video

  1. run OpenPose to obtain the 2D keypoints.
  2. run LGD to acquire the initial 3D poses.
  3. run MODNet to extract sihouettes.

Acknowledgement

We use the code in PIFuHD for the rigid body construction and adapt IPNet for human model registration. We use off-the-shelf methods OpenPose and MODNet for the extraction of 2D keypoints and sihouettes. We sincerely thank these authors for their awesome work.

hpcwild's People

Contributors

moygcc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

hpcwild's Issues

torch-mesh-isect is not compatible with your environment.yml

Thank you for publishing this code. It is quite intriguing! Unfortunately, torch-mesh-isect does not work with the environment.yml you have published. I presume it because of an incompatibility with CUDA versions greater than 9. I am unable to compile and install it with CUDA 10.2, and it would appear to be an issue for all v10 installations.

Is it possible to eliminate or workaround the torch-mesh-isect dependency? Perhaps use a similar (but more up-to-date) library?

Multiple changes to dependencies and code required

I have been able to get your project working on my end, but I ran into several obstacles along the way and wanted to share the modifications required to make installation more generic. Here are the steps I took:

  1. Create a test_images directory at project ROOT (it was missing).

  2. Include additional PIP dependencies: pyhocon, ipykernel, pycocotools, chumpy, smplpytorch

  3. Install PyMCubes with pip install git+https://github.com/pmneila/PyMCubes.git

  4. Git clone NuScenes-Devkit from https://github.com/nutonomy/nuscenes-devkit.git and install from setup directory.

  5. Manually install PyTorch3d with pip install git+https://github.com/facebookresearch/[email protected]

  6. Further, there are several places the code needs to change, because it is pointing to your personal home directory (/home/chen). Here are the locations:

registration/lib
th_SMPL.py

smpl_right_hand_idx = np.load('assets/smpl_right_hand_idx.npy')
smpl_left_hand_idx = np.load('assets/smpl_left_hand_idx.npy')

smpl_layer.py

self.model_path = 'smpl_rendering/smpl_model/SMPL_FEMALE.pkl'
self.model_path = 'smpl_rendering/smpl_model/SMPL_MALE.pkl'	

smpl_paths.py
fname = 'registration/faces.npy'

registration/smpl_registration
fit_SMPLD_final.py
part_labels = pkl.load(open('assets/smpl_parts_dense.pkl', 'rb'))

smpl_rendering
smpl_renderer.py
_, faces, aux = load_obj('smpl_rendering/text_uv_coor_smpl.obj', load_textures=True)

  1. Next, the smpl_parts_dense.pkl file is missing from IPNet, so those assets needed to be copied over as well.

With these changes, the entire pipeline works. The only question I have for you is how you have generated the sequence in your teaser with the normals overlay. This is specifically what I would like to capture (not the OBJ sequence in .pkl). The resulting front-view output is the mesh overlay. Please be so kind as to indicate where in the code I can enable normals output.

Also, one more suggestion for you (if you will have desire + time): I find the OpenPose library to be very inaccurate for many complex movements. For example, the fencing sequence --- it breaks down half-way into the movement by flipping the character's direction:

image

If you will replace OpenPose with HuMoR, this project would be in a league of its own. Please consider it. I would help, but I have very little time to spare.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.