Skip to content
Accessible structures for a video based pose estimation and tracking struggle to perform well on practical accounts with numerous people , every now and again fail to yield body-pose directions unsurprising over some time. So, in this work, we present the troublesome issue of joint multi-singular pose estimation and tracking of many number of in…
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.clang-format
.dockerignore
.gitignore
.travis.yml
CMakeLists.txt
LICENSE
Makefile
Makefile.config
README.md
configure
eval.py
export.py
requirements.txt
run_train.sh
setup.cfg
train.py
train_config.py

README.md

OpenPose-Plus: Pose Estimation in the Wild

Documentation Status

OpenPose is the state-of-the-art pose estimation algorithm. In its Caffe codebase, data augmentation, training, and neural networks are most hard-coded. They are difficult to be customised. In addition, key performance features such as embedded platform supports and parallel GPU training are missing. All these limitations makes OpenPose, in these days, hard to be deployed in the wild. To resolve this, we develop OpenPose-Plus, a high-performance yet flexible pose estimation framework that offers many powerful features:

  • Flexible combination of standard training dataset with your own custom labelled data.
  • Customisable data augmentation pipeline without compromising performance
  • Deployment on embedded platforms using TensorRT
  • Switchable neural networks (e.g., changing VGG to MobileNet for minimal memory consumption)
  • High-performance training using multiple GPUs

Note: This project is under active development. Some TODOs are as follows:

  • Pose Proposal Networks, ECCV 2018

Custom Model Training

Training the model is implemented using TensorFlow. To run train.py, you would need to install packages, shown in requirements.txt, in your virtual environment (Python 3):

pip3 install -r requirements.txt
pip3 install pycocotools

train.py automatically download MSCOCO 2017 dataset into dataset/coco17. The default model is VGG19 used in the OpenPose paper. To customize the model, simply changing it in models.py.

You can use train_config.py to configure the training. config.DATA.train_data can be:

  • coco: training data is COCO dataset only (default)
  • custom: training data is your dataset specified by config.DATA.your_xxx
  • coco_and_custom: training data is COCO and your dataset

config.MODEL.name can be:

  • vgg: VGG19 version (default), slow
  • vggtiny: VGG tiny version, faster
  • mobilenet: MobileNet version, faster

Train your model by running:

python3 train.py

Additional steps for training on Windows

There are a few extra steps to follow with Windows. Please make sure you have the following prerequisites installed:

Download the wget executable and copy it into one of your folders in System path to use the wget command from anywhere. Use the path command in command line to find the folders. Paste the wget.exe in one of the folders given by path. An example folder is C:\Windows.

pycocotools is not supported by default on Windows. Use the pycocotools build for Windows at here. Instead of pip install pycocotools, using:

pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI

Visual C++ Build Tools are required by the build. Everything else is the same.

Training using Multiple GPUs

The pose estimation neural network can take days to train. To speed up the training, we support multiple GPU training while requiring minimal changes in your code. We use Horovod to support training on GPUs that can spread across multiple machines. You need to install the OpenMPI in your machine. We also provide an example script (scripts/install-mpi.sh) to help you go through the installation. Once OpenMPI is installed, you can install Horovod python library as follows:

pip3 install horovod

We also have a Python binding for the engine. The current binding relies on the external tf-pose-estimation project. We are working on providing the Python binding for our high-performance C++ implementation. For now, to enable the binding, please build C++ library for post processing by:

./scripts/install-pafprocess.sh

See tf-pose for details.

Live Camera Example

You can look at the examples in the examples folder to see how to use the inference C++ APIs. Running ./scripts/live-camera.sh will give you a quick review of how it works.

License

You can use the project code under a free Apache 2.0 license ONLY IF you:

  • Cite the TensorLayer paper and this project in your research article if you are an academic user.
  • Acknowledge TensorLayer and this project in your project websites/articles if you are a commercial user.
You can’t perform that action at this time.