All Projects → megvii-detection → tf-cpn

megvii-detection / tf-cpn

Licence: MIT license
Cascade Pyramid Netwrok

Programming Languages

python
139335 projects - #7 most used programming language
Cuda
1817 projects
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to tf-cpn

Mocapnet
We present MocapNET2, a real-time method that estimates the 3D human pose directly in the popular Bio Vision Hierarchy (BVH) format, given estimations of the 2D body joints originating from monocular color images. Our contributions include: (a) A novel and compact 2D pose NSRM representation. (b) A human body orientation classifier and an ensemble of orientation-tuned neural networks that regress the 3D human pose by also allowing for the decomposition of the body to an upper and lower kinematic hierarchy. This permits the recovery of the human pose even in the case of significant occlusions. (c) An efficient Inverse Kinematics solver that refines the neural-network-based solution providing 3D human pose estimations that are consistent with the limb sizes of a target person (if known). All the above yield a 33% accuracy improvement on the Human 3.6 Million (H3.6M) dataset compared to the baseline method (MocapNET) while maintaining real-time performance (70 fps in CPU-only execution).
Stars: ✭ 194 (+781.82%)
Mutual labels:  pose-estimation
Unofficial Implement Of Openpose
Implement of Openpose use Tensorflow
Stars: ✭ 222 (+909.09%)
Mutual labels:  pose-estimation
Epipolar Transformers
Epipolar Transformers (CVPR 2020)
Stars: ✭ 245 (+1013.64%)
Mutual labels:  pose-estimation
Human Pose Estimation Opencv
Perform Human Pose Estimation in OpenCV Using OpenPose MobileNet
Stars: ✭ 201 (+813.64%)
Mutual labels:  pose-estimation
Com.unity.perception
Perception toolkit for sim2real training and validation
Stars: ✭ 208 (+845.45%)
Mutual labels:  pose-estimation
Map Based Visual Localization
A general framework for map-based visual localization. It contains 1) Map Generation which support traditional features or deeplearning features. 2) Hierarchical-Localizationvisual in visual(points or line) map. 3)Fusion framework with IMU, wheel odom and GPS sensors.
Stars: ✭ 229 (+940.91%)
Mutual labels:  pose-estimation
A2j
Code for paper "A2J: Anchor-to-Joint Regression Network for 3D Articulated Pose Estimation from a Single Depth Image". ICCV2019
Stars: ✭ 190 (+763.64%)
Mutual labels:  pose-estimation
openpose-pytorch
🔥 OpenPose api wrapper in PyTorch.
Stars: ✭ 52 (+136.36%)
Mutual labels:  pose-estimation
Swiftopenpose
tf-openpose Based iOS Project
Stars: ✭ 215 (+877.27%)
Mutual labels:  pose-estimation
Human body prior
VPoser: Variational Human Pose Prior
Stars: ✭ 244 (+1009.09%)
Mutual labels:  pose-estimation
Improved Body Parts
Simple Pose: Rethinking and Improving a Bottom-up Approach for Multi-Person Pose Estimation
Stars: ✭ 202 (+818.18%)
Mutual labels:  pose-estimation
Multiperson
Code repository for the paper: "Coherent Reconstruction of Multiple Humans from a Single Image" in CVPR'20
Stars: ✭ 212 (+863.64%)
Mutual labels:  pose-estimation
Deepposekit
a toolkit for pose estimation using deep learning
Stars: ✭ 233 (+959.09%)
Mutual labels:  pose-estimation
Ml Auto Baseball Pitching Overlay
⚾🤖⚾ Automatic baseball pitching overlay in realtime
Stars: ✭ 200 (+809.09%)
Mutual labels:  pose-estimation
aistplusplus api
API to support AIST++ Dataset: https://google.github.io/aistplusplus_dataset
Stars: ✭ 277 (+1159.09%)
Mutual labels:  pose-estimation
Multiposenet.pytorch
pytorch implementation of MultiPoseNet (ECCV 2018, Muhammed Kocabas et al.)
Stars: ✭ 191 (+768.18%)
Mutual labels:  pose-estimation
3d pose baseline pytorch
A simple baseline for 3d human pose estimation in PyTorch.
Stars: ✭ 227 (+931.82%)
Mutual labels:  pose-estimation
Res2Net-Pose-Estimation
Res2Net for Pose Estimation using Simple Baselines as the baseline
Stars: ✭ 35 (+59.09%)
Mutual labels:  pose-estimation
movenet.pytorch
A Pytorch implementation of MoveNet from Google. Include training code and pre-trained model.
Stars: ✭ 273 (+1140.91%)
Mutual labels:  pose-estimation
Monoloco
[ICCV 2019] Official implementation of "MonoLoco: Monocular 3D Pedestrian Localization and Uncertainty Estimation" in PyTorch + Social Distancing
Stars: ✭ 242 (+1000%)
Mutual labels:  pose-estimation

Cascaded Pyramid Network (CPN)

This repo is also linked to tf-cpn

This is a Tensorflow re-implementation of CPN (Cascaded Pyramid Network), which wins 2017 COCO Keypoints Challenge. The original repo is based on the inner deep learning framework (MegBrain) in Megvii Inc.

Results on COCO minival dataset (Single Model)

Note that our testing code is based on some detectors. In COCO minival dataset, the used detector here achieves an AP of 41.1 whose human AP is 55.3 in COCO minival dataset.

Method Base Model Input Size AP @0.5:0.95 AP @0.5 AP @0.75 AP medium AP large
CPN ResNet-50 256x192 69.7 88.3 77.0 66.2 76.1
CPN ResNet-50 384x288 72.3 89.1 78.8 68.4 79.1
CPN ResNet-101 384x288 72.9 89.2 79.4 69.1 79.9

Results on COCO test-dev dataset (Single Model)

Here we use the strong detector that achieves an AP of 44.5 whose human AP is 57.2 in COCO test-dev dataset.

Method AP @0.5:0.95 AP @0.5 AP @0.75 AP medium AP large
Detectron(Mask R-CNN) 67.0 88.0 73.1 62.2 75.6
CPN(ResNet-101, 384x288) 72.0 90.4 79.5 68.3 78.6

For reference, by using the detection results given by MegDet that achieves an AP of 52.1 whose human AP is 62.9, human pose result is as followed.

Method AP @0.5:0.95 AP @0.5 AP @0.75 AP medium AP large
MegDet+CPN(ResNet-101, 384x288) 73.0 91.8 80.8 69.1 78.7

Usage

Train on MSCOCO dataset

  1. Clone the repository
git clone https://github.com/megvii-detection/tf-cpn

We'll call the directory that you cloned $CPN_ROOT.

  1. Download MSCOCO images from http://cocodataset.org/#download. We train in COCO trainvalminusminival dataset and validate in minival dataset. Then put the data and evaluation PythonAPI in $CPN_ROOT/data/COCO/MSCOCO. All paths are defined in config.py and you can modify them as you wish.

  2. Download the base model (ResNet) weights from slim model_zoo and put them in $CPN_ROOT/data/imagenet_weights/.

  3. Setup your environment by first running

pip3 install -r requirement.txt
  1. To train a CPN model, use network.py in the model folder.
python3 network.py -d 0-1

After the training finished, output is written underneath $CPN_ROOT/log/ which looks like below

log/
       |->model_dump/
       |    |->snapshot_1.ckpt.data-00000-of-00001
       |    |->snapshot_1.ckpt.index
       |    |->snapshot_1.ckpt.meta
       |    |->...
       |->train_logs.txt

Validation

Run the testing code in the model folder.

python3 mptest.py -d 0-1 -r 350

This assumes there is an models that has been trained for 350 epochs. If you just want to specify a pre-trained model path, it's fine to run

python3 mptest.py -d 0-1 -m log/model_dump/snapshot_350.ckpt

Here we provide the human detection boxes results:

Person detection results in COCO Minival

Person detection results in COCO test-dev

Pre-trained models:

COCO.res50.256x192.CPN

COCO.res50.384x288.CPN

COCO.res101.384x288.CPN

Citing CPN

If you find CPN useful in your research, please consider citing:

@article{Chen2018CPN,
    Author = {Chen, Yilun and Wang, Zhicheng and Peng, Yuxiang and Zhang, Zhiqiang and Yu, Gang and Sun, Jian},
    Title = {{Cascaded Pyramid Network for Multi-Person Pose Estimation}},
    Conference = {CVPR},
    Year = {2018}
}

Third party implementation

Thanks for Geng David and his pytorch re-implementation of CPN.

Troubleshooting

  1. If you find it pending while running mptest.py, it may be the blocking problem of python queue in multiprocessing. For convenience, I simply implemented data transferring via temporary files. You need to call MultiProc with extra parameter "dump_method=1" and it'll be fine to run the test code with multiprocess.

Contact

If you have any questions about this repo, please feel free to contact [email protected] or [email protected].

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