All Projects → DuncanZauss → Keypoint_Communities

DuncanZauss / Keypoint_Communities

Licence: MIT license
[ICCV '21] In this repository you find the code to our paper "Keypoint Communities".

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Keypoint Communities

FastPose
pytorch realtime multi person keypoint estimation
Stars: ✭ 36 (-85.88%)
Mutual labels:  human-pose-estimation, pose-estimation
kapao
KAPAO is an efficient single-stage human pose estimation model that detects keypoints and poses as objects and fuses the detections to predict human poses.
Stars: ✭ 604 (+136.86%)
Mutual labels:  human-pose-estimation, pose-estimation
Keras realtime multi Person pose estimation
Keras version of Realtime Multi-Person Pose Estimation project
Stars: ✭ 728 (+185.49%)
Mutual labels:  human-pose-estimation, pose-estimation
Openpose
OpenPose: Real-time multi-person keypoint detection library for body, face, hands, and foot estimation
Stars: ✭ 22,892 (+8877.25%)
Mutual labels:  human-pose-estimation, pose-estimation
Awesome Human Pose Estimation
A collection of awesome resources in Human Pose estimation.
Stars: ✭ 2,022 (+692.94%)
Mutual labels:  human-pose-estimation, pose-estimation
Alphapose
Real-Time and Accurate Full-Body Multi-Person Pose Estimation&Tracking System
Stars: ✭ 5,697 (+2134.12%)
Mutual labels:  human-pose-estimation, pose-estimation
Poseestimationformobile
💃 Real-time single person pose estimation for Android and iOS.
Stars: ✭ 783 (+207.06%)
Mutual labels:  human-pose-estimation, pose-estimation
rmpe dataset server
Realtime Multi-Person Pose Estimation data server. Used as a training and validation data provider in training process.
Stars: ✭ 14 (-94.51%)
Mutual labels:  human-pose-estimation, 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 (-46.27%)
Mutual labels:  human-pose-estimation, pose-estimation
Tensorflow realtime multi Person pose estimation
Multi-Person Pose Estimation project for Tensorflow 2.0 with a small and fast model based on MobilenetV3
Stars: ✭ 129 (-49.41%)
Mutual labels:  human-pose-estimation, pose-estimation
Tf Pose Estimation
Deep Pose Estimation implemented using Tensorflow with Custom Architectures for fast inference.
Stars: ✭ 3,856 (+1412.16%)
Mutual labels:  human-pose-estimation, pose-estimation
Monoloco
[ICCV 2019] Official implementation of "MonoLoco: Monocular 3D Pedestrian Localization and Uncertainty Estimation" in PyTorch + Social Distancing
Stars: ✭ 242 (-5.1%)
Mutual labels:  human-pose-estimation, pose-estimation
Pytorch Human Pose Estimation
Implementation of various human pose estimation models in pytorch on multiple datasets (MPII & COCO) along with pretrained models
Stars: ✭ 346 (+35.69%)
Mutual labels:  human-pose-estimation, pose-estimation
Openpifpaf
Official implementation of "OpenPifPaf: Composite Fields for Semantic Keypoint Detection and Spatio-Temporal Association" in PyTorch.
Stars: ✭ 662 (+159.61%)
Mutual labels:  human-pose-estimation, pose-estimation
Pose Residual Network Pytorch
Code for the Pose Residual Network introduced in 'MultiPoseNet: Fast Multi-Person Pose Estimation using Pose Residual Network' paper https://arxiv.org/abs/1807.04067
Stars: ✭ 277 (+8.63%)
Mutual labels:  human-pose-estimation, pose-estimation
Convolutional Pose Machines Tensorflow
Stars: ✭ 758 (+197.25%)
Mutual labels:  human-pose-estimation, pose-estimation
ICON
ICON: Implicit Clothed humans Obtained from Normals (CVPR 2022)
Stars: ✭ 641 (+151.37%)
Mutual labels:  human-pose-estimation, pose-estimation
openpifpaf
Official implementation of "OpenPifPaf: Composite Fields for Semantic Keypoint Detection and Spatio-Temporal Association" in PyTorch.
Stars: ✭ 900 (+252.94%)
Mutual labels:  human-pose-estimation, pose-estimation
Pytorch Pose
A PyTorch toolkit for 2D Human Pose Estimation.
Stars: ✭ 932 (+265.49%)
Mutual labels:  human-pose-estimation, pose-estimation
Multiposenet.pytorch
pytorch implementation of MultiPoseNet (ECCV 2018, Muhammed Kocabas et al.)
Stars: ✭ 191 (-25.1%)
Mutual labels:  human-pose-estimation, pose-estimation

Keypoint Communities

PWC PWC

In this repository you will find the code to our ICCV '21 paper:

Keypoint Communities
Duncan Zauss, Sven Kreiss, Alexandre Alahi, 2021.

We present a fast bottom-up method that jointly detects over 100 keypoints on humans or objects, also referred to as human/object pose estimation. We model all keypoints belonging to a human or an object -the pose- as a graph and leverage insights from community detection to quantify the independence of keypoints. We use a graph centrality measure to assign training weights to different parts of a pose. Our proposed measure quantifies how tightly a keypoint is connected to its neighborhood. Our experiments show that our method outperforms all previous methods for human pose estimation with fine-grained keypoint annotations on the face, the hands and the feet with a total of 133 keypoints. We also show that our method generalizes to car poses.

Qualitative results

example image with overlaid wholebody pose predictions

Image credit: Photo by Toby Bradbury which is licensed under CC-BY-2.0.

drawing

Demo of a short video that we have processed with our human pose estimation network and the car pose estimation network.

drawing

Webcam demo. You can try it out yourself with the following command:

python -m openpifpaf.video --source=0 --checkpoint=shufflenetv2k16-wholebody --long-edge=321 --horizontal-flip --show

You can replace --source=0 with --source=<PathToMyVideo>/videofile.mp4 if you wish to process a video file instead of using your webcam.

example image with overlaid wholebody pose predictions

Image credit: Photo by Lokomotive74 which is licensed under CC-BY-4.0.
Created with:

python -m openpifpaf.predict docs/soccer.jpeg --checkpoint=shufflenetv2k30-wholebody --line-width=2 --show

example image with overlaid wholebody pose predictions

Image credit: "Learning to surf" by fotologic which is licensed under [CC-BY-2.0].
Created with:

python3 -m openpifpaf.predict docs/000000081988.jpg --checkpoint=shufflenetv2k30-wholebody --line-width=2 --show

Example image from the ApolloCar3D dataset

Example prediction on one of the validation images (180310_022316798_Camera_5.jpg) of the ApolloCar3D dataset. Created with:

python -m openpifpaf.predict <Path/To/The/ApolloCar3D/Images>/180310_022316798_Camera_5.jpg --checkpoint=shufflenetv2k30-apollo-66 --image-dpi-factor=0.25 --line-width=2 --caf-th=0.2 --seed-threshold=0.2 --show

Installation

This project is based on OpenPifPaf. Create a virtual environment with python 3.7, 3.8 or 3.9, clone this repo and then install the required packages:

git clone https://github.com/DuncanZauss/Keypoint_Communities.git
cd Keypoint_Communities
pip install -r requirements.txt

Obtain keypoint weights

To compute the keypoint weights with our method, download the preprocessed annotations of the MS COCO WholeBody dataset and/or the ApolloCar3D dataset with the following commands:

cd Keypoint_Communities/src
wget https://github.com/DuncanZauss/Keypoint_Communities/releases/download/v0.1.0/person_keypoints_train2017_wholebody_pifpaf_style.json
wget https://github.com/DuncanZauss/Keypoint_Communities/releases/download/v0.1.0/apollo_keypoints_66_train.json

To compute the average euclidean distance in the datasets for every edge run:

python Compute_edge_weights.py

To compute training weights with centrality measures as proposed in our paper run the following command:

python Compute_training_weights.py

You will find the computed weights in the respective csv file and a visualization of the computed weights in the respective docs folder.

Visualization of the weights for the WholeBody, where we take all shortest paths into account (left) and where we only take the shortest paths with a radius of three into account (right).

Visualization of the weights for the car pose, where we only take the shortest paths with a radius of three into account.

Training

For training you will need to download the MS COCO dataset and the WholeBody keypoint annotations as explained here. To train an OpenPifPaf model with our keypoint weighting scheme, you can use the following command:

python -m openpifpaf.train --dataset=wholebody --lr=0.0001 --momentum=0.95 --b-scale=10.0 --clip-grad-value=10 --epochs=350 --lr-decay 330 340 --lr-decay-epochs=10 --lr-warm-up-start-epoch=250 --batch-size=16 --weight-decay=1e-5 --wholebody-upsample=2 --wholebody-extended-scale --wholebody-orientation-invariant=0.1 --checkpoint=shufflenetv2k30 --head-consolidation=create --wholebody-val-annotations=<dataset_path>/person_keypoints_val2017_wholebody_pifpaf_style.json --wholebody-train-annotations=<dataset_path>/person_keypoints_train2017_wholebody_pifpaf_style.json --wholebody-apply-local-centrality-weights

Evaluation

To evaluate a trained model you first need to download the annotation file from this link and than you can use the following command to evaluate a model:

python -m openpifpaf.eval --dataset=wholebody --checkpoint=shufflenetv2k30-wholebody --force-complete-pose --seed-threshold=0.2 --force-complete-caf-th=0.001  --wholebody-val-annotations=<dataset_path>/coco_wholebody_val_v1.0.json

The command should return you the following metrics:

WB body foot face hand
AP 60.4 69.6 63.4 85.0 52.9
AP0.5 85.5 88.1 80.0 95.4 78.5
AP0.75 66.2 76.1 68.0 89.2 57.7
APM 47.4 57.7 46.0 57.4 18.0
APL 67.8 77.5 71.4 92.4 57.0

Additionally the runtime for the network and decoder is shown. For our setup (GPU: NVIDIA GTX 1080Ti, CPU: Intel i7-8700) the neural network runs in 93ms and the decoder runs in 60ms. Additional decoder settings for different precision/inference time trade-offs are shown in table 4 of our paper.

The shufflenetv2k30-wholebody is our pretrained model, which was trained with the command from the Training section and will automatically be downloaded via torchhub. If you wish to evaluate your own model you can replace it with a local path to your model.

Related projects

Citation

If you find our research useful we would be happy if you cite us:

@inproceedings{zauss2021keypoint,
  title={Keypoint Communities},
  author={Zauss, Duncan and Kreiss, Sven and Alahi, Alexandre},
  booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision},
  pages={11057--11066},
  year={2021}
}

License

The code in this repository is licensed under the MIT license. For more information please refer to the LICENSE file. This project is largely based on OpenPifPaf. OpenPifPaf is licensed under the GNU AGPLv3 license, for more information please refer to OpenPifPaf's license.

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].