vietanhdev / tf-blazepose

BlazePose - Super fast human pose detection on Tensorflow 2.x
194 stars 38 forks source link
blazepose landmark-detection posenet tensorflow2

BlazePose Tensorflow 2.x

This is an implementation of Google BlazePose in Tensorflow 2.x. The original paper is "BlazePose: On-device Real-time Body Pose tracking" by Valentin Bazarevsky, Ivan Grishchenko, Karthik Raveendran, Tyler Zhu, Fan Zhang, and Matthias Grundmann, which is available on arXiv. You can find some demonstrations of BlazePose from Google blog.

Currently, the model being developed in this repo is based on TFLite (.tflite) model from here. I use Netron.app to visualize the architecture and try to mimic that architecture in my implementation. The visualized model architecture can be found here. Other architectures will be added in the future.

Note: This repository is still under active development.

Update 14/12/2020: Our PushUp Counter App is using this BlazePose model to count pushups from videos/webcam. Read more.

TODOs

Demo

python run_video.py -c configs/mpii/config_blazepose_mpii_pushup_heatmap_bce_regress_huber.json  -m trained_models/blazepose_pushup_v1.h5 -v webcam --confidence 0.3

The pretrained model is only in experimental state now. It only detects 7 keypoints for Push Up counting and it may not produce a good result now. I will update other models in the future.

Training

NOTE: Currently, I only focus on PushUp datase, which contains 7 keypoints. Due to the copyright of this dataset, I don't have permission to publish it on the Internet. You can read the instruction and try with your own dataset.

python train.py -c configs/mpii/config_blazepose_mpii_pushup_heatmap_bce.json
python train.py -c configs/mpii/config_blazepose_mpii_pushup_heatmap_bce_regress_huber.json

Reference

@article{Bazarevsky2020BlazePoseOR,
  title={BlazePose: On-device Real-time Body Pose tracking},
  author={Valentin Bazarevsky and I. Grishchenko and K. Raveendran and Tyler Lixuan Zhu and Fangfang Zhang and M. Grundmann},
  journal={ArXiv},
  year={2020},
  volume={abs/2006.10204}
}

This source code uses some code and ideas from these repos:

Contributions

Please feel free to submit an issue or pull a request.