rludlow / 3d-pose-2d-keypoints

3d Human Pose Estimation from 2d Keypoints
64 stars 12 forks source link
deep-learning motion-capture pose-estimation

3d Human Pose Estimation from 2d Keypoints

Overview

While humans can generally estimate with ease the 3d pose of a human in a 2d image, 3d pose estimation remains a challenging problem for machines. This project improves an algorithm that estimates 3d keypoints of human poses with 2d keypoints as the only input.

I pursue three key interventions to improve reconstruction acurracy over the entire dataset as well as a subset of poses with particularly high error in the benchmark model: a) modify the data normalization technique in preprocessing, b) modify the neural network architecture from a simple densely connected network to a multi-stage network modeled after state-of-the-art 2d pose estimation models, and c) generate synthetic data to augment training sets.

The interventions successfully reduced reconstruction error over the entire testing set (from Carnegie Mellon's Motion Capture Database) by 40%, and that of targetted high-error poses by 87%.

Full Paper: 3d Human Pose Estimation from 2d Keypoints (pdf)

Before After

Dependencies

Training and Testing

Training

Testing

Test results can be seen in model_analysis.ipynb. This notebook is not formatted with the intent of presenting the data (the research paper is), but the results can be seen there.

Prepping Data from Scratch

For the instructions in the sub-sections above, the data has already been downloaded and converted into 3d coordinates. If you want to start from scratch and convert the data from bvh files to 3d coordinates, you can proceed as follows with Blender installed:

Reference

  @InProceedings{Zhao_2017,
  author = {Ruiqi Zhao, Yan Wang, and Aleix M Martines},
  title = {A Simple, Fast, and Highly-Accurate Algorithm to Recover 3D Shape from 2D Landmarks on a Single Image},
  booktitle = {IEEE Transactions on Pattern Analysis and Machine Intelligence},
  month = {November},
  year = {2017}
  }