All Projects → fmahoudeau → Shelfnet Human Pose Estimation

fmahoudeau / Shelfnet Human Pose Estimation

Fast and accurate Human Pose Estimation using ShelfNet with PyTorch

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Shelfnet Human Pose Estimation

Deepstream pose estimation
This is a sample DeepStream application to demonstrate a human pose estimation pipeline.
Stars: ✭ 168 (+76.84%)
Mutual labels:  human-pose-estimation, real-time
FastPose
pytorch realtime multi person keypoint estimation
Stars: ✭ 36 (-62.11%)
Mutual labels:  real-time, human-pose-estimation
Gccpm Look Into Person Cvpr19.pytorch
Fast and accurate single-person pose estimation, ranked 10th at CVPR'19 LIP challenge. Contains implementation of "Global Context for Convolutional Pose Machines" paper.
Stars: ✭ 137 (+44.21%)
Mutual labels:  human-pose-estimation, real-time
Lightweight Human Pose Estimation 3d Demo.pytorch
Real-time 3D multi-person pose estimation demo in PyTorch. OpenVINO backend can be used for fast inference on CPU.
Stars: ✭ 331 (+248.42%)
Mutual labels:  human-pose-estimation, real-time
Openpose
OpenPose: Real-time multi-person keypoint detection library for body, face, hands, and foot estimation
Stars: ✭ 22,892 (+23996.84%)
Mutual labels:  human-pose-estimation, real-time
Keras realtime multi Person pose estimation
Keras version of Realtime Multi-Person Pose Estimation project
Stars: ✭ 728 (+666.32%)
Mutual labels:  human-pose-estimation, real-time
Pytorch realtime multi Person pose estimation
Pytorch version of Realtime Multi-Person Pose Estimation project
Stars: ✭ 205 (+115.79%)
Mutual labels:  human-pose-estimation, real-time
Openpose train
Training repository for OpenPose
Stars: ✭ 381 (+301.05%)
Mutual labels:  human-pose-estimation, real-time
Openpose unity plugin
OpenPose's Unity Plugin for Unity users
Stars: ✭ 446 (+369.47%)
Mutual labels:  human-pose-estimation, real-time
Trt pose
Real-time pose estimation accelerated with NVIDIA TensorRT
Stars: ✭ 525 (+452.63%)
Mutual labels:  human-pose-estimation, real-time
Lightweight Human Pose Estimation.pytorch
Fast and accurate human pose estimation in PyTorch. Contains implementation of "Real-time 2D Multi-Person Pose Estimation on CPU: Lightweight OpenPose" paper.
Stars: ✭ 958 (+908.42%)
Mutual labels:  human-pose-estimation, real-time
Owl
motion planning algorithms with demos for various state-spaces
Stars: ✭ 84 (-11.58%)
Mutual labels:  real-time
Oblecto
Oblecto is a media server, which streams media you already own, and is designed to be at the heart of your entertainment experience. It runs on your home server to index and analyze your media such as Movies and TV Shows and presents them in an interface tailored for your media consupmtion needs.
Stars: ✭ 67 (-29.47%)
Mutual labels:  real-time
Espnetv2 Coreml
Semantic segmentation on iPhone using ESPNetv2
Stars: ✭ 66 (-30.53%)
Mutual labels:  real-time
Incubator Nuttx Apps
Apache NuttX Apps is a collection of tools, shells, network utilities, libraries, interpreters and can be used with the NuttX RTOS
Stars: ✭ 65 (-31.58%)
Mutual labels:  real-time
Xpedite
A non-sampling profiler purpose built to measure and optimize performance of ultra low latency/real time systems
Stars: ✭ 89 (-6.32%)
Mutual labels:  real-time
Pose Adv Aug
Code for "Jointly Optimize Data Augmentation and Network Training: Adversarial Data Augmentation in Human Pose Estimation" (CVPR 2018)
Stars: ✭ 83 (-12.63%)
Mutual labels:  human-pose-estimation
Traceshark
This is a tool for Linux kernel ftrace and perf events visualization
Stars: ✭ 63 (-33.68%)
Mutual labels:  real-time
People Counter Python
Create a smart video application using the Intel Distribution of OpenVINO toolkit. The toolkit uses models and inference to run single-class object detection.
Stars: ✭ 62 (-34.74%)
Mutual labels:  real-time
Gophergameserver
🏆 Feature packed, easy-to-use game server API for Go back-ends and Javascript clients. Tutorials and examples included!
Stars: ✭ 61 (-35.79%)
Mutual labels:  real-time

Fast and accurate Human Pose Estimation using ShelfNet with PyTorch

This repository is the result of my curiosity to find out whether ShelfNet is an efficient CNN architecture for computer vision tasks other than semantic segmentation, and more specifically for the human pose estimation task. The answer is a clear yes, with 74.6 mAP and 127 FPS on the MS COCO Keypoints data set which represents a 3.5x boost in FPS compared to HRNet for a similar accuracy.

ShelfNet Keypoints Demo

This repository includes:

  • Source code of ShelfNet modified from the authors' repository

  • Code to prepare the MS COCO keypoints dataset

  • Training and evaluation code for MS COCO keypoints modified from the HRNet authors' repository

  • Pre-trained weights for ShelfNet50

If you use it in your projects, please consider citing this repository (bibtex below).

ShelfNet Architecture Overview

The ShelfNet architecture was introduced by J. Zhuang, J. Yang, L. Gu and N. Dvornek through a paper available on arXiv. The paper evaluates the network only on the semantic segmentation task. The authors' contribution is to have created a fast architecture with a performance similar to the state of the art (PSPNet & EncNet at the time of publishing this repository) on PASCAL VOC and better performance on Cityscapes. Therefore, ShelfNet is presently one of the most suitable architectures for real-world applications with resource constraints.

ShelfNet Architecture

As depicted above, ShelfNet uses a ResNet backbone combined with 2 encoder/decoder branches. The first encoder (in green?) reduces channel complexity by a factor 4 for faster inference speed. The S-block is a residual block with shared-weights to significantly reduce the number of parameters. The network uses strided convolutions for down-sampling and transpose convolutions for up-sampling. The structure can be seen as an ensemble of FCN where the information flows through many different paths, resulting in increased accuracy.

Results on Microsoft COCO KeyPoints

This section reports test results for ShelfNet50 on the famous MS COCO KeyPoints dataset, and makes a comparison with the state of the art HRNet. All experiments use the same person detector which has AP of 56.4 on COCO val2017 dataset. You can find the download link on the HRNet repository. A single Titan RTX with 24GB RAM was used for the ShelfNet50 experiments. The batch size is 128 for an input size of 256x192 and 72 for 384x288.

Architecture Input size Parameters AP AR Memory size FPS
pose_hrnet_w32 256x192 28.5M 0.744 0.798 931 MB 37.4
pose_hrnet_w32 384x288 28.5M 0.758 0.809 957 MB 37.6
pose_hrnet_w48 256x192 63.6M 0.751 0.804 1083 MB 37.7
pose_hrnet_w48 384x288 63.6M 0.763 0.812 1103 MB 36.7
------------------------- ------------- ------------- --------- --------- ------------- ---------
shelfnet_50 256x192 38.7M 0.725 0.782 1013 MB 127.3
shelfnet_50 384x288 38.7M 0.746 0.797 1033 MB 127.7

Training on Your Own

I'm providing pre-trained weights for ShelfNet50 to make it easier to start. The test accuracies are obtained without providing the ground truth bounding boxes.

Model AP
ShelfNet50_256x192 0.725
ShelfNet50_384x288 0.746

You can train and evaluate directly from the command line as such:

# Train ShelfNet on COCO
python train.py --cfg coco/shelfnet/shelfnet50_384x288_adam_lr1e-3.yaml
# Test ShelfNet on COCO
python test.py --cfg coco/shelfnet/shelfnet50_384x288_adam_lr1e-3.yaml TEST.MODEL_FILE ../output/coco/shelfnet/shelf_384x288_adam_lr1e-3/model_best.pth TEST.USE_GT_BBOX False
| Arch       | AP    | Ap .5 | AP .75| AP (M)| AP (L)| AR    | AR .5 | AR .75| AR (M)| AR (L)|
|------------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
| shelfnet   | 0.746 | 0.901 | 0.814 | 0.706 | 0.818 | 0.797 | 0.938 | 0.858 | 0.752 | 0.862 |

Requirements

Python 3.7, Torch 1.3.1 or greater, requests, tqdm, yacs, json_tricks, and pycocotools. Contrary to the ShelfNet repository, this repository is not based on torch-encoding.

Citation

Use this bibtex to cite this repository:

@misc{fmahoudeau_shelfnet_human_pose_2020,
  title={ShelfNet for Human Pose Estimation},
  author={Florent Mahoudeau},
  year={2020},
  publisher={GitHub},
  journal={GitHub repository},
  howpublished={\url{https://github.com/fmahoudeau/ShelfNet-Human-Pose-Estimation}},
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].