Giter Club home page Giter Club logo

margipose's Introduction

MargiPose

Accompanying PyTorch code for the paper "3D Human Pose Estimation with 2D Marginal Heatmaps".

Setup

Requirements:

  • Linux
  • Docker
  • Docker Compose
  • NVIDIA Container Toolkit (for GPU support)

Configure the project

  1. Copy docker-compose.yml.example to docker-compose.yml.

  2. At this stage docker-compose.yml will contain example volume mounts for the datasets. You will need to edit the entries for datasets that you have prepared, and remove the others.

    For example, if you wish to use the MPI-INF-3DHP dataset, you must replace /host/path/to/mpi3d with the actual path to the prepared MPI-INF-3DHP data on your computer.

Prepare datasets

You only need to prepare the datasets that you are interested in using.

Human3.6M

  1. Use the scripts available at https://github.com/anibali/h36m-fetch to download and preprocess Human3.6M data.
  2. Edit the volume mounts in docker-compose.yml so that the absolute location of the processed/ directory created by h36m-fetch is bound to /datasets/h36m inside the Docker container.

MPI-INF-3DHP

  1. Download the original MPI-INF-3DHP dataset.
  2. Use the src/margipose/bin/preprocess_mpi3d.py script to preprocess the data.
  3. Edit the volume mounts in docker-compose.yml so that the absolute location of the processed MPI-INF-3DHP data is bound to /datasets/mpi3d inside the Docker container.

MPII

  1. Edit the volume mounts in docker-compose.yml so that the desired installation directory for the MPII Human Pose dataset is bound to /datasets/mpii inside the Docker container.
  2. Run the following to download and install the MPII Human Pose dataset:
    $ ./run.sh bash
    $ chmod 777 -R /datasets/mpii
    $ python
    >>> from torchdata import mpii
    >>> mpii.install_mpii_dataset('/datasets/mpii')
    

[Optional] Configure and run Showoff

Showoff is a display server which allows you to visualise model training progression. The following steps guide you through starting a Showoff server and configuring MargiPose to use it.

  1. Change POSTGRES_PASSWORD in showoff/postgres.env. Using a randomly generated password is recommended.
  2. Change COOKIE_SECRET in showoff/showoff.env. Once again, using a randomly generated value is recommended.
  3. From a terminal in the showoff directory, run docker-compose up -d showoff. This will start the Showoff server.
  4. Open localhost:13000 in your web browser.
  5. Log in using the username "admin" and the password "password".
  6. Change the admin password.
  7. Open up showoff/showoff-client.env in a text editor.
  8. From the Showoff account page, add a new API key. Copy the API key ID and secret key into showoff-client.env (you will need to uncomment the appropriate lines).

Running scripts

A run.sh launcher script is provided, which will run any command within a Docker container containing all of MargiPose's dependencies. Here are a few examples.

Train a MargiPose model on the MPI-INF-3DHP dataset:

./run.sh margipose train with margipose_model mpi3d

Train without pixel-wise loss term:

./run.sh margipose train with margipose_model mpi3d "model_desc={'settings': {'pixelwise_loss': None}}"

Evaluate a model's test set performance using the second GPU:

./run.sh margipose --device=cuda:1 eval --model margipose-mpi3d.pth --dataset mpi3d-test

Explore qualitative results with a GUI:

./run.sh margipose gui --model margipose-mpi3d.pth --dataset mpi3d-test

Run the project unit tests:

./run.sh pytest

Pretrained models

Pretrained models are available for download:

You can try out the pretrained model like so:

./run.sh margipose infer --model margipose-mpi3d.pth --image resources/man_running.jpg

License and citation

(C) 2018 Aiden Nibali

This project is open source under the terms of the Apache License 2.0.

If you use any part of this work in a research project, please cite the following paper:

@article{nibali2018margipose,
  title={3D Human Pose Estimation with 2D Marginal Heatmaps},
  author={Nibali, Aiden and He, Zhen and Morgan, Stuart and Prendergast, Luke},
  journal={arXiv preprint arXiv:1806.01484},
  year={2018}
}

margipose's People

Contributors

anibali avatar jaggernaut007 avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.