Stereo Pose Machines - Real Time 3D Pose Estimation
Clone or download
Latest commit fa57d1f Aug 26, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
calibr-1211 add calibr Dec 20, 2016
data update readme Dec 28, 2016
demo readme Dec 24, 2016
src remove my emails Aug 26, 2018
triangulate-data add data used for demo Dec 4, 2016
visualization update readme Dec 28, 2016
.gitignore some scripts about dump Dec 4, 2016
LICENSE add license Dec 29, 2016 update readme Mar 11, 2018

Stereo Pose Machines


What it does:

  1. Compute 2D joints detected by CPM from stereo cameras
  2. Match the joints by guided patch-matching
  3. Triangulate the joints
  4. Build a 3D skeleton

Check out our Video Demo ! The project is a course demo and is not maintained.


  • A pair of Pylon Cameras
  • Eigen3
  • OpenCV
  • tensorpack
  • PyYaml
  • PyOpenGL


make -C src/cpp

Test Cameras:

cd src/cpp && ./main.bin

Two cameras could be detected in any order. To make the order consistent across runs, src/cpp/ assumes that the camera whose name contains "711" is the first camera. You'll need to change it for your case.

Calibrate Cameras:

Use main.bin to take images and use Kalibr to produce a yaml similar to the files in calibr-1211. Change the path in to your own calibration results. Also change the undistortion coefficients in cpp/camera.hh.

Test CPM is working:

Download model to data/cpm.npy. See tensorpack CPM examples for instructions.

cd src/cpp && python2 -t 'cpm-viewer'

It will use 2 GPU to run 2 CPMs in parallel.

Test 3D Visualization is working:

cd visualization && python2 ../data/final-demo.npy

Its OpenGL bindings don't work on certain systems (e.g. Ubuntu). Don't know why.

Run Stereo CPM:

cd src/cpp && python2 -t 'cpm3d'

This will send 3d point coordinates to You can use --host <ip address> to change the IP.

To start a server (maybe on some other computers) to receive points and visualize:

cd visualization && python