lijiaman / omomo_release

Official Implementation of SIGGRAPH Asia 2023 (TOG) Paper: Object Motion Guided Human Motion Synthesis
127 stars 7 forks source link

Object Motion Guided Human Motion Synthesis (SIGGRAPH Asia 2023)

This is the official implementation for the SIGGRAPH Asia 2023 (TOG) paper. For more information, please check the project webpage.

OMOMO Teaser

Environment Setup

Note: This code was developed on Ubuntu 20.04 with Python 3.8, CUDA 11.3 and PyTorch 1.11.0.

Clone the repo.

git clone https://github.com/lijiaman/omomo_release.git
cd omomo_release/

Create a virtual environment using Conda and activate the environment.

conda create -n omomo_env python=3.8
conda activate omomo_env 

Install PyTorch.

conda install pytorch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0 cudatoolkit=11.3 -c pytorch

Install PyTorch3D.

conda install -c fvcore -c iopath -c conda-forge fvcore iopath
conda install -c bottler nvidiacub
pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/py38_cu113_pyt1110/download.html

Install human_body_prior.

git clone https://github.com/nghorbani/human_body_prior.git
pip install tqdm dotmap PyYAML omegaconf loguru
cd human_body_prior/
python setup.py develop

Install BPS.

pip install git+https://github.com/otaheri/chamfer_distance
pip install git+https://github.com/otaheri/bps_torch

Install other dependencies.

pip install -r requirements.txt 

Testing

First, please download the dataset and put data/ to the root folder. You can check all the visualizations of each motion sequence.

Then, download pretrained models and put pretrained_models/ to the root folder.

If you would like to generate visualizations, please download Blender first. And put blender path to BLENDER_PATH. Replace the BLENDER_PATH in line 7 of omomo_release/manip/vis/blender_vis_mesh_motion.py.

Please download SMPL-H (select the extended SMPL+H model), [SMPL-X]() and put the model to data/smpl_all_models/. If you have a different folder path for SMPL-H model, please modify the path in line 24 of manip/data/hand_foot_dataset.py.

Then run OMOMO on the testing data. To enable visualizations, please remove --for_quant_eval. The generated visualization will be in the folder omomo_runs.

sh scripts/test_omomo.sh

Training

Train stage 1 (generating hand joint position from object geometry). Please replace --entity with your account name.

sh scripts/train_stage1.sh

Train stage 2 (generating full-body motion from hand joint position). Please replace --entity with your account name.

sh scripts/train_stage2.sh

Citation

@article{li2023object,
  title={Object Motion Guided Human Motion Synthesis},
  author={Li, Jiaman and Wu, Jiajun and Liu, C Karen},
  journal={ACM Trans. Graph.},
  volume={42},
  number={6},
  year={2023}
}

Related Repos

We adapted some code from other repos in data processing, learning, evaluation, etc. Please check these useful repos.

https://github.com/lijiaman/egoego_release
https://github.com/lucidrains/denoising-diffusion-pytorch
https://github.com/davrempe/humor
https://github.com/jihoonerd/Conditional-Motion-In-Betweening 
https://github.com/lijiaman/motion_transformer