Python implementation of "Multi-Instance Pose Networks: Rethinking Top-Down Pose Estimation"

Related tags

Deep Learning MIPNet
Overview

MIPNet: Multi-Instance Pose Networks

report PWC PWC PWC PWC

This repository is the official pytorch python implementation of "Multi-Instance Pose Networks: Rethinking Top-Down Pose Estimation" in ICCV 2021.

| Project Page |

Code with detailed instructions is coming soon!

Citation

If you find the code useful in your research, please consider citing the paper.

@article{khirodkar2021multi,
  title={Multi-Hypothesis Pose Networks: Rethinking Top-Down Pose Estimation},
  author={Khirodkar, Rawal and Chari, Visesh and Agrawal, Amit and Tyagi, Ambrish},
  journal={arXiv preprint arXiv:2101.11223},
  year={2021}
}

We are working on referencing the below version till then please consider citing the above version.

@InProceedings{Khirodkar_2021_ICCV,
    author    = {Khirodkar, Rawal and Chari, Visesh and Agrawal, Amit and Tyagi, Ambrish},
    title     = {Multi-Instance Pose Networks: Rethinking Top-Down Pose Estimation},
    booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
    month     = {October},
    year      = {2021},
    pages     = {3122-3131}
}
Comments
  • question about the config of crowdpose

    question about the config of crowdpose

    Hello, I am very interested in your work. Thank you for sharing such an excellent article. I have a question about the config of crowdpose. Why ROOT: 'data/coco/', TEST_SET: 'val2017' TRAIN_SET: 'train2017'?
    TEST: BATCH_SIZE_PER_GPU: 24

    TRAIN_SET: 'train2017'

    i think 'data/coco/' is 'data/crowdpose/'; TEST_SET: 'crowdpose_val2017' TRAIN_SET: 'crowdpose_train2017' ,Don't know if my understanding is correct

    opened by zouxuelian 3
  • Question about Training

    Question about Training

    Hi, I try to training my coco style dataset by your scripts, I dont know which bash script should be used to train.(Could you please briefly explain the function of each script?) Then I use "scripts/train/lambda/coco/train.sh" this one for training. but one error happened.

    cd /data_2/lutianhao/code/MIPNet/ CUDA_VISIBLE_DEVICES=4,5,6,7, python tools/lambda/train_lambda_real.py
    --cfg experiments/coco/hrnet/w48_384x288_adam_lr1e-3.yaml
    GPUS '(0,1,2,3,)'
    OUTPUT_DIR 'Outputs/outputs/lambda/lambda_coco_real_waffle'
    LOG_DIR 'Outputs/logs/lambda/lambda_coco_real_waffle'
    TEST.MODEL_FILE 'models/pytorch/pose_coco/pose_hrnet_w48_384x288.pth'
    DATASET.TRAIN_DATASET 'coco_lambda'
    DATASET.TRAIN_SET 'train2017'
    DATASET.TRAIN_IMAGE_DIR '/data_2/lutianhao/datasets/pose/coco2017/train2017'
    DATASET.TRAIN_ANNOTATION_FILE '/data_2/lutianhao/datasets/pose/coco2017/annotations/person_keypoints_train2017.json'
    DATASET.TRAIN_DATASET_TYPE 'coco_lambda'
    DATASET.TEST_DATASET 'coco'
    DATASET.TEST_SET 'val2017'
    DATASET.TEST_IMAGE_DIR '/data_2/lutianhao/datasets/pose/coco2017/val2017'
    DATASET.TEST_ANNOTATION_FILE '/data_2/lutianhao/datasets/pose/coco2017/annotations/person_keypoints_val2017.json'
    DATASET.TEST_DATASET_TYPE 'coco'
    TRAIN.LR 0.001
    TRAIN.BEGIN_EPOCH 0
    TRAIN.END_EPOCH 110
    TRAIN.LR_STEP '(70, 100)'
    TRAIN.BATCH_SIZE_PER_GPU 2
    TEST.BATCH_SIZE_PER_GPU 1
    TEST.USE_GT_BBOX True
    EPOCH_EVAL_FREQ 1
    PRINT_FREQ 100
    MODEL.NAME 'pose_hrnet_se_lambda'
    MODEL.SE_MODULES '[False, False, True, True]'

    And the error is :

    GAMMA1: 0.99 [0/927] GAMMA2: 0.0 LR: 0.001 LR_FACTOR: 0.1 LR_STEP: [70, 100] MOMENTUM: 0.9 NESTEROV: False OPTIMIZER: adam RESUME: False SHUFFLE: True WD: 0.0001 WORKERS: 24 => init weights from normal distribution => loading pretrained model models/pytorch/imagenet/hrnet_w48-8ef0771d.pth

    Total Parameters: 63,746,081

    Total Multiply Adds (For Convolution and Linear Layers only): 46.562052726745605 GFLOPs

    Number of Layers Conv2d : 293 layers BatchNorm2d : 292 layers ReLU : 271 layers Bottleneck : 4 layers BasicBlock : 104 layers Upsample : 28 layers HighResolutionModule : 8 layers AdaptiveAvgPool2d : 5 l ayers Linear : 20 layers Sigmoid : 10 layers BatchNorm1d : 5 layers SELambdaLayer : 5 layers SELambdaModule : 2 layers => loading model from models/pytorch/pose_coco/pose_hrnet_w48_384x288.pth => loading from latest_state_dict at models/pytorch/pose_coco/pose_hrnet_w48_384x288.pth loading annotations into memory... Done (t=31.87s) creating index... index created! => classes: ['background', 'person'] => num_images: 118287 loading from cache from cache/coco_lambda/train2017/gt_db.pkl done! => load 149813 samples loading annotations into memory... Done (t=4.04s) creating index... index created! => classes: ['background', 'person'] => num_images: 5000 => load 6352 samples => resuming optimizer from models/pytorch/pose_coco/pose_hrnet_w48_384x288.pth => updated lr schedule is [70, 100]

    training on lambda Epoch: [0][0/18727] Time 64.338s (64.338s) Speed 0.2 samples/s Data 10.114s (10.114s) Loss 0.00020 (0.00020) Accuracy 0.513 (0.513) model_grad 0.000568 (0.000568) DivLoss -0.00074 (-0.00074) PoseLoss 0.00020 (0.00020) Traceback (most recent call last): File "tools/lambda/train_lambda_real.py", line 280, in main() File "tools/lambda/train_lambda_real.py", line 242, in main final_output_dir, tb_log_dir, writer_dict, print_prefix='lambda') File "/data_2/lutianhao/code/MIPNet/tools/lambda/../../lib/core/train.py", line 464, in train_lambda suffix += '_[{}:{}]'.format(count, round(lambda_a[count + B].item(), 2)) IndexError: index 16 is out of bounds for dimension 0 with size 16

    opened by lutianhao 2
  • Question about Train & Test result in the paper

    Question about Train & Test result in the paper

    Amazing work! Thanks for releasing the source code. Here is my question:

    1. Which of the following is MIPNet(hrnet backbone)'s final result on crowdpose test set in the paper? #----------------------------------------------------------------------------------- [code] lib/core/validate.py: def validate_lambda_quantitative(): _print_name_value(name_values, 'l0,1:{}'.format(model_name)) _print_name_value(name_values_mode0, 'l0:{}'.format(model_name)) _print_name_value(name_values_mode1, 'l1:{}'.format(model_name)) #------------------------------------------------------------------------------------
    2. Has MIPNet with hrnet backbone used pretrained model? (about result on crowdpose in the paper)

    By the way, Very looking forward to the detailed README and final checkpoints trained on dataset.

    opened by shawnwey 2
  • Questions regarding the code and application

    Questions regarding the code and application

    Hello,just checked out your paper.Great work! I had the following questions - 1)Is there a approximate deadline for the code with instructions to be released for training and testing the model for our custom use-case? 2)The annotation for the ground truth generation is just the 2d key points of the particular object right,the network will automatically convert it to heatmap or do we have to give it as a heatmap? 3)Can we apply this to a case as follows- A camera is observing 2-3 moving robots in its FOV,and if I retrain the network with the images of the robot,with its corresponding ground-truth keypoints,the network can still predict the 2d keypoints of the moving robot right? 4)For this does the robot have to be at a particular distance from the camera,so that the keypoint estimation is accurate enough?Meaning is the network's accuracy dependent on "the distance the object is from the camera"?

    Any suggestions/replies are greatly appreciated! Thank you

    opened by poornimajd 2
  • Cropping of image

    Cropping of image

    Hi, thank you for your nice work here. In your paper, in section 4.1, it is said that the detection bbox is extended to a fixed aspect ratio of 4:3, then this bbox is cropped from the original full image. I'm having troubles trying to find the part of code where these operations are done. Could you point me to it? Thanks!

    opened by levan92 1
  • The ocpose issues and OChuman dataset

    The ocpose issues and OChuman dataset

    Hello, your work is very good, but when I tested OChuman's dataset, I found that the path in the shell file is ocpose, and what I want to teach is: I changed the ocpose to ochuman according to my ideas, in the training, this problem arose, The train_loader is missing, can you help me to solve my issues. thanks!

    => classes: ['background', 'person'] => num_images: 2231 => load 3819 samples => updated lr schedule is [170, 200] training on lambda Traceback (most recent call last): File "tools/lambda/train_lambda_real.py", line 280, in main() File "tools/lambda/train_lambda_real.py", line 241, in main train_lambda(cfg, train_loader, model, criterion_lambda, criterion, optimizer, epoch, File "/Workspace/MIPNet-main/MIPNet-main/tools/lambda/../../lib/core/train.py", line 355, in train_lambda for i, (input, target_a, target_weight_a, meta_a, target_b, target_weight_b, meta_b) in enumerate(train_loader): ValueError: not enough values to unpack (expected 7, got 4)

    opened by huanghao11 1
  • Possible bug in train_lambda_real.py

    Possible bug in train_lambda_real.py

    Hi, there might be a possible bug in train_lambda_real.py (L249 - L225):

    In each epoch, the perf_indicator is directly set to 0.0. In other words, the new best model is achieved in each epoch and the model in the last epoch will be the final best model. However, this is likely not correct, as the best model may not always be achieved in the last epoch.

    In my opinion, the perf_indicator should be the return value of validate_lambda_quantitative() in L245.

    opened by EckoTan0804 1
  • Question about Training

    Question about Training

    Amazing work and thanks for sharing the code!

    I have a question regarding training: in scripts/train there're two folders named "lambda" and "lambda_general". What is the difference between them? Which one should I use, if I want to train and reproduce the results in the paper?

    Thanks in advance!

    Best Regards

    opened by EckoTan0804 1
Owner
Rawal Khirodkar
Ph.D. student in Robotics, CMU. Interested in Computer Vision
Rawal Khirodkar
A fast python implementation of Ray Tracing in One Weekend using python and Taichi

ray-tracing-one-weekend-taichi A fast python implementation of Ray Tracing in One Weekend using python and Taichi. Taichi is a simple "Domain specific

null 157 Dec 26, 2022
Experimental Python implementation of OpenVINO Inference Engine (very slow, limited functionality). All codes are written in Python. Easy to read and modify.

PyOpenVINO - An Experimental Python Implementation of OpenVINO Inference Engine (minimum-set) Description The PyOpenVINO is a spin-off product from my

Yasunori Shimura 7 Oct 31, 2022
Python implementation of cover trees, near-drop-in replacement for scipy.spatial.kdtree

This is a Python implementation of cover trees, a data structure for finding nearest neighbors in a general metric space (e.g., a 3D box with periodic

Patrick Varilly 28 Nov 25, 2022
A fast Evolution Strategy implementation in Python

Evostra: Evolution Strategy for Python Evolution Strategy (ES) is an optimization technique based on ideas of adaptation and evolution. You can learn

Mika 251 Dec 8, 2022
🌳 A Python-inspired implementation of the Optimum-Path Forest classifier.

OPFython: A Python-Inspired Optimum-Path Forest Classifier Welcome to OPFython. Note that this implementation relies purely on the standard LibOPF. Th

Gustavo Rosa 30 Jan 4, 2023
Python implementation of Wu et al (2018)'s registration fusion

reg-fusion Projection of a central sulcus probability map using the RF-ANTs approach (right hemisphere shown). This is a Python implementation of Wu e

Dan Gale 26 Nov 12, 2021
A Python implementation of global optimization with gaussian processes.

Bayesian Optimization Pure Python implementation of bayesian global optimization with gaussian processes. PyPI (pip): $ pip install bayesian-optimizat

fernando 6.5k Jan 2, 2023
Implementation of Kalman Filter in Python

Kalman Filter in Python This is a basic example of how Kalman filter works in Python. I do plan on refactoring and expanding this repo in the future.

Enoch Kan 35 Sep 11, 2022
Python Implementation of the CoronaWarnApp (CWA) Event Registration

Python implementation of the Corona-Warn-App (CWA) Event Registration This is an implementation of the Protocol used to generate event and location QR

MaZderMind 17 Oct 5, 2022
Python and C++ implementation of "MarkerPose: Robust real-time planar target tracking for accurate stereo pose estimation". Accepted at LXCV @ CVPR 2021.

MarkerPose: Robust real-time planar target tracking for accurate stereo pose estimation This is a PyTorch and LibTorch implementation of MarkerPose: a

Jhacson Meza 47 Nov 18, 2022
Tensorflow python implementation of "Learning High Fidelity Depths of Dressed Humans by Watching Social Media Dance Videos"

Learning High Fidelity Depths of Dressed Humans by Watching Social Media Dance Videos This repository is the official tensorflow python implementation

Yasamin Jafarian 287 Jan 6, 2023
Python Implementation of Chess Playing AI with variable difficulty

Chess AI with variable difficulty level implemented using the MiniMax AB-Pruning Algorithm

Ali Imran 7 Feb 20, 2022
A python implementation of Deep-Image-Analogy based on pytorch.

Deep-Image-Analogy This project is a python implementation of Deep Image Analogy.https://arxiv.org/abs/1705.01088. Some results Requirements python 3

Peng Lu 171 Dec 14, 2022
A Python implementation of the Locality Preserving Matching (LPM) method for pruning outliers in image matching.

LPM_Python A Python implementation of the Locality Preserving Matching (LPM) method for pruning outliers in image matching. The code is established ac

AoxiangFan 11 Nov 7, 2022
Python implementation of a live deep learning based age/gender/expression recognizer

TUT live age estimator Python implementation of a live deep learning based age/gender/smile/celebrity twin recognizer. All components use convolutiona

Heikki Huttunen 80 Nov 21, 2022
A python implementation of Physics-informed Spline Learning for nonlinear dynamics discovery

PiSL A python implementation of Physics-informed Spline Learning for nonlinear dynamics discovery. Sun, F., Liu, Y. and Sun, H., 2021. Physics-informe

Fangzheng (Andy) Sun 8 Jul 13, 2022
Python Implementation of algorithms in Graph Mining, e.g., Recommendation, Collaborative Filtering, Community Detection, Spectral Clustering, Modularity Maximization, co-authorship networks.

Graph Mining Author: Jiayi Chen Time: April 2021 Implemented Algorithms: Network: Scrabing Data, Network Construbtion and Network Measurement (e.g., P

Jiayi Chen 3 Mar 3, 2022
Python implementation of Lightning-rod Agent, the Stack4Things board-side probe

Iotronic Lightning-rod Agent Python implementation of Lightning-rod Agent, the Stack4Things board-side probe. Free software: Apache 2.0 license Websit

null 2 May 19, 2022