Official Pytorch implementation of "Learning to Estimate Robust 3D Human Mesh from In-the-Wild Crowded Scenes", CVPR 2022

Overview

Learning to Estimate Robust 3D Human Mesh from In-the-Wild Crowded Scenes / 3DCrowdNet

front_figur

News

๐Ÿ’ช 3DCrowdNet achieves the state-of-the-art accuracy on 3DPW (3D POSES IN THE WILD DATASET)!
๐Ÿ’ช We improved PA-MPJPE to 51.1mm and MPVPE to 97.6mm using a ResNet 50 backbone!

Introduction

This repo is the official PyTorch implementation of Learning to Estimate Robust 3D Human Mesh from In-the-Wild Crowded Scenes (CVPR 2022).

Installation

We recommend you to use an Anaconda virtual environment. Install PyTorch >=1.6.0 and Python >= 3.7.3. Then, run sh requirements.sh. You should slightly change torchgeometry kernel code following here.

Quick demo

Preparing

  • Download the pre-trained 3DCrowdNet checkpoint from here and place it under ${ROOT}/demo/.
  • Download demo inputs from here and place them under ${ROOT}/demo/input (just unzip the demo_input.zip).
  • Make ${ROOT}/demo/output directory.
  • Get SMPL layers and VPoser according to this.
  • Download J_regressor_extra.npy from here and place under ${ROOT}/data/.

Running

  • Run python demo.py --gpu 0. You can change the input image with --img_idx {img number}.
  • A mesh obj, a rendered mesh image, and an input 2d pose are saved under ${ROOT}/demo/.
  • The demo images and 2D poses are from CrowdPose and HigherHRNet respectively.
  • The depth order is not estimated. You can manually change it.

Results

โ˜€๏ธ Refer to the paper's main manuscript and supplementary material for diverse qualitative results!

table table

Directory

Refer to here.

Running 3DCrowdNet

First finish the directory setting. Then, refer to here to train and test 3DCrowdNet.

Reference

@InProceedings{choi2022learning,  
author = {Choi, Hongsuk and Moon, Gyeongsik and Park, JoonKyu and Lee, Kyoung Mu},  
title = {Learning to Estimate Robust 3D Human Mesh from In-the-Wild Crowded Scenes},  
booktitle = {Conference on Computer Vision and Pattern Recognition (CVPR)}
year = {2022}  
}  
Comments
  • experimental results

    experimental results

    Thank you for sharing. I tried to reproduce your experimental results, but both results were far from those given in your paper.

    First result: MPJPE from mesh: 493.55 mm PA MPJPE from mesh: 112.53 mm MPVPE from mesh: 529.30 mm

    Second result: MPJPE from mesh: 644.32 mm PA MPJPE from mesh: 103.72 mm MPVPE from mesh: 661.93 mm

    Can you share the hyperparameter setting or give some instructions? pytorch:1.6,cuda:10.2

    opened by with-twilight 9
  • Question about reproducing Table 8

    Question about reproducing Table 8

    Hi, Thank you for your fantastic work! However, I tried to reproduce table8. using the command python train.py --amp --continue --gpu 0 --cfg ../assets/yaml/3dpw.yml and got the result below:

    * train for 10 epoch
    	MPJPE from mesh: 93.76 mm
    	PA MPJPE from mesh: 56.54 mm
    	MPVPE from mesh: 110.48 mm
    * train for 5 epoch
    	MPJPE from mesh: 85.21 mm
    	PA MPJPE from mesh: 52.53 mm
    	MPVPE from mesh: 101.27 mm
    * train for 4 epoch
            MPJPE from mesh: 85.65 mm
            PA MPJPE from mesh: 51.91 mm
            MPVPE from mesh: 101.10 mm
    * train for 2 epoch
    	MPJPE from mesh: 84.16 mm
    	PA MPJPE from mesh: 52.13 mm
    	MPVPE from mesh: 99.90 mm
    * train for 1 epoch
    	MPJPE from mesh: 83.17 mm
    	PA MPJPE from mesh: 52.34 mm
    	MPVPE from mesh: 99.32 mm
    
    * train for 0 epoch(pretrained)
    	MPJPE from mesh: 712.35 mm
    	PA MPJPE from mesh: 98.89 mm
    	MPVPE from mesh: 734.46 mm
    

    Is it normal to get to the best point only after 1 epoch? (BTW, I used the pre-trained ResNet-50 weights of xiao2018simple) Also is it normal for the results to be worse as the epoch increasing?

    Thank you!

    opened by mimiliaogo 5
  • Evaluate CMU-Panoptic Code

    Evaluate CMU-Panoptic Code

    Thank you for your work!

    Can you please provide the code and json file(2D Pose Result) to evalution on the CMU-Panoptic dataset?

    ================================================================================= ์•ˆ๋…•ํ•˜์„ธ์š”! Github์— ๋…ผ๋ฌธ ์ฝ”๋“œ๋ฅผ ์˜ฌ๋ ค์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

    Code๋ฅผ ํ™•์ธํ•ด๋ณธ ๊ฒฐ๊ณผ CMU-Panoptic ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋ฉด์„œ ์‚ฌ์šฉํ•œ python file๊ณผ 2D Pose estimation json ํŒŒ์ผ์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ์š”์ฒญ๋“œ๋ฆฌ๊ณ ์ž ์ด์Šˆ์— ์˜ฌ๋ ธ์Šต๋‹ˆ๋‹ค!

    ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

    opened by YangChangHee 4
  • About MuPoTs evaluation

    About MuPoTs evaluation

    Your paper reports evaluation resluts of MuPoTS-3D, but there are several procedures I could not fully understand. 1) Your data loading script(data/MuPoTs/MuPoTs.py) reads preprocessed 2d pose estimator results based on annotation id. Does this mean that you used ground-truth bounding boxes for retrieving 2d predictions? 2) At https://github.com/hongsukchoi/3DCrowdNet_RELEASE/blob/c4d32c0dbb2675b022f9bc2848a39242d1142244/data/MuPoTs/MuPoTs.py#L80, your code specifies to use joint regressor weights of mpi-inf-3dhp dataset. Is this file made by yourself? As far as I know, previous works(including https://github.com/JiangWenPL/multiperson) used J_regressor_extra.npy for evaluation on mpi-inf-3dhp and MuPoTS.

    opened by uyoung-jeong 4
  • How to reproduce the result in table6 and table7?

    How to reproduce the result in table6 and table7?

    Hi, thanks for sharing your code. I'm wondering how to reproduce the result in table6 and table7. Could your offer your preprocessed json file, config file and dataset file?

    opened by xljh0520 3
  • 3DPW parsed data link broken

    3DPW parsed data link broken

    Hi, thanks for your excellent work! But when I tried to reproduce the results, the 3DPW parsed data link listed in https://github.com/hongsukchoi/3DCrowdNet_RELEASE/blob/3d84d17797e353aaf49acfd8087637eca2877292/assets/directory.md is broken. It requires access, but I couldn't send a request.

    Could you fix this problem?

    opened by ichbill 3
  • How can I get J_regressor_coco_hip_smpl.npy file?

    How can I get J_regressor_coco_hip_smpl.npy file?

    Thanks for the great work. I am trying to run 3DPW evaluation script, but the test script raises an error due to nonexistence of J_regressor_coco_hip_smpl.npy file. It seems that you did not provide a download link for it. Is this file the same as this one? https://github.com/mks0601/I2L-MeshNet_RELEASE/blob/master/data/MSCOCO/J_regressor_coco_hip_smpl.npy

    opened by uyoung-jeong 3
  • Question about calculation of smpl_trans in Human36M

    Question about calculation of smpl_trans in Human36M

    Hi! Firstly, thanks for your excellent work! I was learning your data processing procedure and had confusions about the following code: https://github.com/hongsukchoi/3DCrowdNet_RELEASE/blob/fde86df0fb8799873cd19c683b8251b16640acb3/data/Human36M/Human36M.py#L216 Could you kindly explain to me that what the physical meaning of 'smpl_trans - root_joint_coord + np.dot(R, root_joint_coord.transpose(1,0)).transpose(1,0)' is? As far as i understand that 'smpl_trans - root_joint_coord' represents the translation in the coordinate system that takes root joint as origin. My question is how to explain np.dot(R, root_joint_coord.transpose(1,0)).transpose(1,0)?

    opened by YxZhxn 2
  • About MSCOCO train annotation file

    About MSCOCO train annotation file

    I am trying to run train script, but there is an issue about annotation file. Current code tries to read 'MSCOCO_train_SMPL_NeuralAnnot.json' insead of 'coco_smplifyx_train.json': https://github.com/hongsukchoi/3DCrowdNet_RELEASE/blob/c4d32c0dbb2675b022f9bc2848a39242d1142244/data/MSCOCO/MSCOCO.py#L66

    Is it correct to comment the 66th line and uncomment the 67th line? Or should we use 'MSCOCO_train_SMPL_NeuralAnnot.json'?

    opened by uyoung-jeong 2
  • Question about Table 1 and experiments

    Question about Table 1 and experiments

    @hongsukchoi

    Hello! 3DCrowdNet is a nice work!

    I have a few questions about Table 1 and network.

    • Is Table 1 result tested on the 3DPW-Crowd?
    • Is Table 1 result trained on a mixed dataset or a single dataset?
    • I don't quite understand this operation. The img_feat is a 2d image-space feature. For sampling on it, the 3d joint may use a perspective projection to get the 2d image space point. Why just use the x,y of the 3d joint?
    • When you are testing your idea of crowded-scene robust, do you test on the 3DPW-crowd instead of the large whole 3dpw test set? If the results are good on 3dpw-crowd, then you test on the whole 3dpw test set. Do the research procedure I describe correct?
    opened by MooreManor 1
  • How to preprocess the 3dpw dataset?

    How to preprocess the 3dpw dataset?

    Sorry to bother you again. :( I have a question about the SMPL parameters in the 3dpw dataset you offered. I noticed the pose parameter (72,) and trans parameters (3,) differ from the official 3dpw dataset. So, I guess there are some preprocess in making the annotation. Could you tell me how you preprocess it? Thanks in advance.~

    opened by xljh0520 1
  • H36M, MuCo SMPL GT

    H36M, MuCo SMPL GT

    Hi. thanks for sharing the nice work.

    In your code, You use SMPLify-X pseudo GT on 3D datasets(H36M, MuCo), and use Neural Annot pseudo GT on 2D datasets(CrowdPose, MSCOCO). Can I ask why you don't Neural Annot on H36M, MuCo?

    opened by asw91666 0
  • Runtime error in pytorch trying to reproduce 3DCrowdNet demo

    Runtime error in pytorch trying to reproduce 3DCrowdNet demo

    Hello!

    Trying to reproduce the provided demo I get the following error: File "demo.py", line 114, in model.load_state_dict(ckpt['network'], strict=False) File "<path_to_condaenv>/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1668, in load_state_dict self.class.name, "\n\t".join(error_msgs))) RuntimeError: Error(s) in loading state_dict for DataParallel: size mismatch for module.human_model_layer.th_betas: copying a param with shape torch.Size([1, 10]) from checkpoint, the shape in current model is torch.Size([1, 300]). size mismatch for module.human_model_layer.th_shapedirs: copying a param with shape torch.Size([6890, 3, 10]) from checkpoint, the shape in current model is torch.Size([6890, 3, 300]).

    It seems pytorch is failing to load the pretrained 3DCrowdNet model referred to in the README. Does someone have a hint on how to fix this and why this might happen?

    My setup: Debian 11 (bullseye) Anaconda version: 22.9.0 Python version in Anaconda environment: 3.7.3 PyTorch version: 1.13.0+cu117

    Thank you very much!

    opened by faichele 1
  • Have question about the conversion between cam_param and cam_trans

    Have question about the conversion between cam_param and cam_trans

    https://github.com/hongsukchoi/3DCrowdNet_RELEASE/blob/fde86df0fb8799873cd19c683b8251b16640acb3/main/model.py#L38

    Hello @hongsukchoi First, thanks for the nice work you've publicly released! Currently I'm doing a research on the multi-person reconstruction and while reading your code line by line I encountered the function get_camera_trans which I mentioned above.

    As far as I understand, from RotationNet we get cam_param and the function converts it into cam_trans (which stands for camera translation matrix) and again it goes in to get_coord function.

    My QUESTION starts here! I don't understand the exact meaning or assumption of gamma and k_value. Is there any theory referring to it?

    You seems like replying to issues so.. Thanks in advance!

    Joseph

    opened by JosephKKim 3
  • Cannot reproduce without pre-trained ResNet-50 weights of xiao2018simple

    Cannot reproduce without pre-trained ResNet-50 weights of xiao2018simple

    Hi, I tried to reproduce table 8 without pre-trained ResNet-50 weights of xiao2018simple. My training command is python train.py --amp --gpu 0 --cfg ../assets/yaml/3dpw_crowd.yml and the config file is :

    trainset_3d: ['Human36M', 'MuCo']
    trainset_2d: ['MSCOCO', 'MPII']
    testset: 'PW3D'
    
    lr_dec_epoch: [30]
    end_epoch: 40
    lr: 0.00025 #0.001/4
    lr_backbone: 0.0001
    lr_dec_factor: 10
    

    However, I got very strange results on 3dpw as below (I evaluate every epoch): image

    Do you have any idea about this? Thank you!

    opened by mimiliaogo 9
Owner
Hongsuk Choi
Research area: 3D human pose, shape, and mesh estimation
Hongsuk Choi
Commonality in Natural Images Rescues GANs: Pretraining GANs with Generic and Privacy-free Synthetic Data - Official PyTorch Implementation (CVPR 2022)

Commonality in Natural Images Rescues GANs: Pretraining GANs with Generic and Privacy-free Synthetic Data (CVPR 2022) Potentials of primitive shapes f

null 31 Sep 27, 2022
Official PyTorch implementation of the paper "Deep Constrained Least Squares for Blind Image Super-Resolution", CVPR 2022.

Deep Constrained Least Squares for Blind Image Super-Resolution [Paper] This is the official implementation of 'Deep Constrained Least Squares for Bli

MEGVII Research 141 Dec 30, 2022
Official pytorch implementation for Learning to Listen: Modeling Non-Deterministic Dyadic Facial Motion (CVPR 2022)

Learning to Listen: Modeling Non-Deterministic Dyadic Facial Motion This repository contains a pytorch implementation of "Learning to Listen: Modeling

null 50 Dec 17, 2022
[CVPR 2022] Official PyTorch Implementation for "Reference-based Video Super-Resolution Using Multi-Camera Video Triplets"

Reference-based Video Super-Resolution (RefVSR) Official PyTorch Implementation of the CVPR 2022 Paper Project | arXiv | RealMCVSR Dataset This repo c

Junyong Lee 151 Dec 30, 2022
Imposter-detector-2022 - HackED 2022 Team 3IQ - 2022 Imposter Detector

HackED 2022 Team 3IQ - 2022 Imposter Detector By Aneeljyot Alagh, Curtis Kan, Jo

Joshua Ji 3 Aug 20, 2022
The 7th edition of NTIRE: New Trends in Image Restoration and Enhancement workshop will be held on June 2022 in conjunction with CVPR 2022.

NTIRE 2022 - Image Inpainting Challenge Important dates 2022.02.01: Release of train data (input and output images) and validation data (only input) 2

Andrรฉs Romero 37 Nov 27, 2022
Sound-guided Semantic Image Manipulation - Official Pytorch Code (CVPR 2022)

?? Sound-guided Semantic Image Manipulation (CVPR2022) Official Pytorch Implementation Sound-guided Semantic Image Manipulation IEEE/CVF Conference on

CVLAB 58 Dec 28, 2022
[CVPR 2022] Official Pytorch code for OW-DETR: Open-world Detection Transformer

OW-DETR: Open-world Detection Transformer (CVPR 2022) [Paper] Akshita Gupta*, Sanath Narayan*, K J Joseph, Salman Khan, Fahad Shahbaz Khan, Mubarak Sh

Akshita Gupta 127 Dec 27, 2022
Official implementation of "Can You Spot the Chameleon? Adversarially Camouflaging Images from Co-Salient Object Detection" in CVPR 2022.

Jadena Official implementation of "Can You Spot the Chameleon? Adversarially Camouflaging Images from Co-Salient Object Detection" in CVPR 2022. arXiv

Qing Guo 13 Nov 29, 2022
Official Implementation of CVPR 2022 paper: "Mimicking the Oracle: An Initial Phase Decorrelation Approach for Class Incremental Learning"

(CVPR 2022) Mimicking the Oracle: An Initial Phase Decorrelation Approach for Class Incremental Learning ArXiv This repo contains Official Implementat

Yujun Shi 24 Nov 1, 2022
Official implementation for "QS-Attn: Query-Selected Attention for Contrastive Learning in I2I Translation" (CVPR 2022)

QS-Attn: Query-Selected Attention for Contrastive Learning in I2I Translation (CVPR2022) https://arxiv.org/abs/2203.08483 Unpaired image-to-image (I2I

Xueqi Hu 50 Dec 16, 2022
(CVPR 2022 Oral) Official implementation for "Surface Representation for Point Clouds"

RepSurf - Surface Representation for Point Clouds [CVPR 2022 Oral] By Haoxi Ran* , Jun Liu, Chengjie Wang ( * : corresponding contact) The pytorch off

Haoxi Ran 264 Dec 23, 2022
Official implementation of the paper 'Details or Artifacts: A Locally Discriminative Learning Approach to Realistic Image Super-Resolution' in CVPR 2022

LDL Paper | Supplementary Material Details or Artifacts: A Locally Discriminative Learning Approach to Realistic Image Super-Resolution Jie Liang*, Hu

null 150 Dec 26, 2022
Official implementation for "Style Transformer for Image Inversion and Editing" (CVPR 2022)

Style Transformer for Image Inversion and Editing (CVPR2022) https://arxiv.org/abs/2203.07932 Existing GAN inversion methods fail to provide latent co

Xueqi Hu 153 Dec 2, 2022
Official MegEngine implementation of CREStereo(CVPR 2022 Oral).

[CVPR 2022] Practical Stereo Matching via Cascaded Recurrent Network with Adaptive Correlation This repository contains MegEngine implementation of ou

MEGVII Research 309 Dec 30, 2022
[CVPR 2022] Pytorch implementation of "Templates for 3D Object Pose Estimation Revisited: Generalization to New objects and Robustness to Occlusions" paper

template-pose Pytorch implementation of "Templates for 3D Object Pose Estimation Revisited: Generalization to New objects and Robustness to Occlusions

Van Nguyen Nguyen 92 Dec 28, 2022
Pytorch re-implementation of Paper: SwinTextSpotter: Scene Text Spotting via Better Synergy between Text Detection and Text Recognition (CVPR 2022)

SwinTextSpotter This is the pytorch implementation of Paper: SwinTextSpotter: Scene Text Spotting via Better Synergy between Text Detection and Text R

mxin262 183 Jan 3, 2023
This project is the PyTorch implementation of our CVPR 2022 paper:

Requirements and Dependency Install PyTorch with CUDA (for GPU). (Experiments are validated on python 3.8.11 and pytorch 1.7.0) (For visualization if

Lei Huang 23 Nov 29, 2022
This repository contains a pytorch implementation of "HeadNeRF: A Real-time NeRF-based Parametric Head Model (CVPR 2022)".

HeadNeRF: A Real-time NeRF-based Parametric Head Model This repository contains a pytorch implementation of "HeadNeRF: A Real-time NeRF-based Parametr

null 294 Jan 1, 2023