Final project of 3D Scanning & Motion Capture course at TUM.
The goal of this project is to estimate 3D human pose from monocular images. To achieve that, we used extract 2D joint locations with OpenPose and optimize SMPL parameters with respect to re-projection and constant motion errors. We also provided pose priors with Vposer to make generated poses more realistic.
This project uses ZJU-MoCap Dataset. The access for the dataset must be requested from its website. Once you have the access, run preprocess_zju.py script as follows:
python preprocess_zju.py --smpl-model-file <path-to-smpl-model-pkl> --dataset-dir <path-to-zju-mocap> --sample-name <sample-name-zju> --camera-name <camera-name-zju>
The SMPL and VPoser model weights are already provided in the data folder, as they have been preprocessed.
This project in depend on Eigen, Ceres, Cnpy, Zlib, Gtest, OpenCV. After installing them you can build project with the below commands:
cmake --build -DCMAKE_BUILD_TYPE=Release .
make
Then run the code with the following arguments:
./process_dataset <dataset-directory> <method> <output-directory>
# Example
./process_dataset ../data/zju-mocap/CoreView_377/Camera_B2/ smpl ../data/results/smpl/CoreView_377/Camera_B2
After running the code, you can post-process, evaluate and visualize the results with the following command. It assumes that the results
are stored in data/results
directory.
cd data
python post_processing.py
# Evaluation
cd data/evaluation
python evaluate.py --smpl-model <smpl-model-path>
# Visualization
python visualize.py <seq-file> --smpl-model <smpl-model-path>