MobilePose
MobilePose is a Tiny PyTorch implementation of single person 2D pose estimation framework. The aim is to provide the interface of the training/inference/evaluation, and the dataloader with various data augmentation options. And final trained model can satisfy basic requirements(speed+size+accuracy) for mobile device.
Some codes for networks and display are brought from:
- pytorch-mobilenet-v2
- Vanilla FCN, U-Net, SegNet, PSPNet, GCN, DUC
- Shufflenet-v2-Pytorch
- tf-pose-estimation
- dsntnn
NEWS!
- Mar 2019: Support running on MacBook with decent FPS!
- Feb 2019: ALL the pretrained model files are avaliable!
Requirements
- Python 3.7
- PyTorch 1.0
- dsntnn 1.0
Evaluation Results
Model(+DUC+DSNTNN) | Parmas(M) | Flops(G) | AP@0.5:0.95 | AP@0.5 | AR@0.5:0.95 | AR@0.5 | Link |
---|---|---|---|---|---|---|---|
ResNet18 | 12.26 | 1.64 | 68.2 | 93.9 | 79.7 | 96.7 | 51.5M |
MobileNetV2 | 3.91 | 0.49 | 67.5 | 94.9 | 79.4 | 97.1 | 16.6M |
ShuffleNetV2 | 2.92 | 0.31 | 61.5 | 91.6 | 74.8 | 95.5 | 12.4M |
SqueezeNet1.1 | 2.22 | 0.63 | 58.4 | 92.1 | 72.3 | 95.8 | 9.3M |
Features
- multi-thread dataloader with augmentations (dataloader.py)
- training and inference (training.py)
- performance evaluation (eval.py)
- multiple models support (network.py)
- ipython notebook visualization (demo.ipynb)
- Macbook camera realtime display script (run_webcam.py)
Usage
- Installation:
pip install -r requirements.txt
- Training:
python training.py --model shufflenetv2 --gpu 0 --inputsize 224 --lr 1e-3 --batchsize 128 --t7 ./models/shufflenetv2_224_adam_best.t7
- Evaluation
ln -s cocoapi/PythonAPI/pycocotools
cd cocoapi/PythonAPI && make
python eval.py --t7 ./models/resnet18_224_adam_best.t7 --model resnet18 --gpu 0
- Web Camera Demo (MacBook)
python run_webcam.py --model squeezenet --inp_dim 224 --camera 0
Contributors
MobilePose is developed and maintained by Yuliang Xiu, Zexin Chen and Yinghong Fang.
License
MobilePose is freely available for free non-commercial use. For commercial queries, please contact Cewu Lu.