Code for MonoCap: Monocular Human Motion Capture using a CNN Coupled with a Geometric Prior.
Switch branches/tags
Nothing to show
Clone or download
Xiaowei Zhou
Xiaowei Zhou initial
Latest commit d1f9e1e Mar 16, 2018
Failed to load latest commit information.
dict initial Mar 16, 2018
em initial Mar 16, 2018
general initial Mar 16, 2018
manopt initial Mar 16, 2018
pose-hg-demo initial Mar 16, 2018
ssr initial Mar 16, 2018
utils initial Mar 16, 2018
LICENSE initial Mar 16, 2018 initial Mar 16, 2018 initial Mar 16, 2018
demoH36M.m initial Mar 16, 2018
demoHG.m initial Mar 16, 2018
demoMPII.m initial Mar 16, 2018
startup.m initial Mar 16, 2018

This repository implements the 3D human pose estimation algorithm introduced in the following paper:

Monocap: Monocular human motion capture using a CNN coupled with a geometric prior. X. Zhou, M. Zhu, G. Pavlakos, S. Leonardos, K.G. Derpanis, K. Daniilidis. IEEE Transactions on Pattern Analysis and Machine Intelligence (T-PAMI), 2018. Accepted.

How to use?

  1. Download data by running the following script in command line: bash
  2. Open MATLAB and run: startup
  3. Run the demo scripts:
  • demoH36M for an example from Human3.6M dataset
  • demoHG for an example of how to use our algorithm combined with the "Stacked hourglass network"
  • demoMPII for an example of how to reconstruct 3D poses from a single image from MPII dataset


  • The code for hourglass network in pose-hg-demo is from Newell et al.,
  • See the comments in demoHG.m for how to run hourglass network on your images and save heatmaps
  • If you want to use the hourglass network, you need to first install Torch and make it work
  • Generally "Hourglass network" + "poseDict-all-K128" (pose dictionary learned from Human3.6M) work well. For better 3D reconstruction, you can learn a 3D pose dictionary using your own mocap data. For more details on pose dictionary learning, please see the following project: sparse representation for shape estimation
  • The optimization could be accelerated by changing the initialization method to alternating by changing the option when calling PoseFromVideo: PoseFromVideo(...,'InitialMethod','altern')