Skip to content
This repository has been archived by the owner on Jan 14, 2022. It is now read-only.

Manchery/DeepPose

Repository files navigation

DeepPose

NOTE:

Introduction

This is a implementation at caffe in DeepPose proposed in this paper, with Kinect2 Human Pose Dataset (K2HPD)

Caffe is the deep learning framework

@article{jia2014caffe, Author = {Jia, Yangqing and Shelhamer, Evan and Donahue, Jeff and Karayev, Sergey and Long, Jonathan and Girshick, Ross and Guadarrama, Sergio and Darrell, Trevor}, Journal = {arXiv preprint arXiv:1408.5093}, Title = {Caffe: Convolutional Architecture for Fast Feature Embedding}, Year = {2014} }

The K2HPD is from

Keze Wang, Shengfu Zhai, Hui Cheng, Xiaodan Liang, and Liang Lin. Human Pose Estimation from Depth Images via Inference Embedded Multi-task Learning. In Proceedings of the ACM International Conference on Multimedia (ACM MM), 2016.*

Following command should be run in the root directory of this project if not specified

Caffe for DeepPose

For some reason, it is requested to run on a source-code-changed caffe

The main change is about Data layer, EuclideanLoss layer and convert_imageset_multilabel.cpp

The whole source is in the dir caffe-deeppose and please compile it by yourself

(see more: Caffe installation instructions)

HINT: since data layer changed, it is normal to raise an error when you run make runtest testing data layer

pycaffe is request also if you want to test accuracy of your trained model

Data Preparation for K2HPD

Please download the dataset from the link by yourself and copy them to data/K2HPD

cp -r your/path/to/depth_data data/K2HPD
cp your/path/to/train_annos.txt data/K2HPD
cp your/path/to/test_annos.txt data/K2HPD

Start Training

First make sure there are no other caffes in your environment path and python environment path, then

./deeppose_train.sh

It may take a very LONG time about 2 - 3 days on a GPU

CPU-only

By default, it runs on GPU. If you want to run on CPU-only, please edit models/deeppose/deeppose_solver.prototxt and models/deeppose_refine/deeppose_refine_solver.prototxt

and delete

caffe.set_mode_gpu()
caffe.set_device(0)

in python scripts such as pyoutput.py

Predict a Image

For example,

python ./models/deeppose/pytest.py ./models/deeppose/snapshot/deeppose_iter_120000.caffemodel ./data/K2HPD/depth_data/depth_images/00000003.png

or

python ./models/deeppose_refine/pytest.py ./models/deeppose/snapshot/deeppose_iter_120000.caffemodel ./models/deeppose_refine/snapshot/deeppose_refine_iter_110000.caffemodel ./data/K2HPD/depth_data/depth_images/00000003.png

Test accuracy

For example,

python ./models/deeppose/pyaccuracy.py ./models/deeppose/snapshot/deeppose_iter_120000.caffemodel

or

python ./models/deeppose_refine/pyaccuracy.py ./models/deeppose/snapshot/deeppose_iter_120000.caffemodel ./models/deeppose_refine/snapshot/deeppose_refine_iter_120000.caffemodel

Since huge size of test set, it may takes a LONG time. You can change the code by yourself.

Other Datasets

If you want to train on other dataset, please modify the file globalvar.py, in which you can describe about the dataset and write your own get_stage1.py to accord with your dataset

And you may need to modify the deploy deeppose_refine.prototxt. Its input size are relative to the number of joints for we use it to process all the joints of one person as a batch.

Some Result

NOTE:

  • For show, some good results are selected manually
  • The left is the result of prediction in stage 1, and the right is the result of refinement in stage 2

Releases

No releases published

Packages

No packages published