Research code for Arxiv paper "Camera Motion Agnostic 3D Human Pose Estimation"

Related tags

Deep LearningGMR
Overview

GMR(Camera Motion Agnostic 3D Human Pose Estimation)

This repo provides the source code of our arXiv paper:
Seong Hyun Kim, Sunwon Jeong, Sungbum Park, and Ju Yong Chang, "Camera motion agnostic 3D human pose estimation," arXiv preprint arXiv:2112.00343, 2021.

Environment

  • Python : 3.6
  • Ubuntu : 18.04
  • CUDA : 11.1
  • cudnn : 8.0.5
  • torch : 1.7.1
  • torchvision : 0.8.2
  • GPU : one Nvidia RTX3090

Installation

  • First, you need to install python and other packages.

    pip install -r requirements.txt
  • Then, you need to install torch and torchvision. We tested our code on torch1.7.1 and torchvision0.8.2. But our code can also work with torch version >= 1.5.0.

Quick Demo

  • Download pretrained GMR model from [pretrained GMR] and make them look like this:

    ${GMR_ROOT}
     |-- results
         |-- GMR
             |-- final_model.pth
    
  • Download other model files from [other model files] and make them look like this:

    ${GMR_ROOT}
     |-- data
         |-- gmr_data
             |-- J_regressor_extra.npy
             |-- J_regressor_h36m.npy
             |-- SMPL_NEUTRAL.pkl
             |-- gmm_08.pkl
             |-- smpl_mean_params.npz
             |-- spin_model_checkpoint.pth.tar
             |-- vibe_model_w_3dpw.pth.tar
             |-- vibe_model_wo_3dpw.pth.tar
    
  • Finally, download demo videos from [demo videos] and make them look like this:

    ${GMR_ROOT}
    |-- configs
    |-- data
    |-- lib
    |-- results
    |-- scripts
    |-- demo.py
    |-- eval_3dpw.py
    |-- eval_synthetic.py
    |-- DEMO_VIDEO1.mp4
    |-- DEMO_VIDEO2.mp4
    |-- DEMO_VIDEO3.mp4
    |-- DEMO_VIDEO4.mp4
    |-- README.md
    |-- requirements.txt
    |-- run_eval_3dpw.sh
    |-- run_eval_synthetic.sh
    |-- run_train.sh
    |-- train.py
    

Demo code consists of (bounding box tracking) - (VIBE) - (GMR)

python demo.py --vid_file DEMO_VIDEO1.mp4 --vid_type mp4 --vid_fps 30 --view_type back --cfg configs/GMR_config.yaml --output_folder './'

python demo.py --vid_file DEMO_VIDEO2.mp4 --vid_type mp4 --vid_fps 30 --view_type front_large --cfg configs/GMR_config.yaml --output_folder './'

python demo.py --vid_file DEMO_VIDEO3.mp4 --vid_type mp4 --vid_fps 30 --view_type back --cfg configs/GMR_config.yaml --output_folder './'

python demo.py --vid_file DEMO_VIDEO4.mp4 --vid_type mp4 --vid_fps 30 --view_type back --cfg configs/GMR_config.yaml --output_folder './'

Data

You need to follow directory structure of the data as below.

${GMR_ROOT}
  |-- data
    |-- amass
      |-- ACCAD
      |-- BioMotionLab_NTroje
      |-- CMU
      |-- EKUT
      |-- Eyes_Japan_Dataset
      |-- HumanEva
      |-- KIT
      |-- MPI_HDM05
      |-- MPI_Limits
      |-- MPI_mosh
      |-- SFU
      |-- SSM_synced
      |-- TCD_handMocap
      |-- TotalCapture
      |-- Transitions_mocap
    |-- gmr_data
      |-- J_regressor_extra.npy
      |-- J_regressor_h36m.npy
      |-- SMPL_NEUTRAL.pkl
      |-- gmm_08.pkl
      |-- smpl_mean_params.npz
      |-- spin_model_checkpoint.pth.tar
      |-- vibe_model_w_3dpw.pth.tar
      |-- vibe_model_wo_3dpw.pth.tar
    |-- gmr_db
      |-- amass_train_db.pt
      |-- h36m_dsd_val_db.pt
      |-- 3dpw_test_db.pt
      |-- synthetic_camera_motion_off.pt
      |-- synthetic_camera_motion_on.pt
  • Download AMASS dataset from this link and place them in data/amass. Then, you can obtain the training data through the following command. Also, you can download the training data from this link.
    source scripts/prepare_training_data.sh
    
  • Download processed 3DPW data [data]
  • Download processed Human3.6 data [data]
  • Download synthetic dataset [data]

Train

Run the commands below to start training:

./run_train.sh

Evaluation

Run the commands below to start evaluation:

# Evaluation on 3DPW dataset
./run_eval_3dpw.sh

# Evaluation on synthetic dataset
./run_eval_synthetic.sh

References

We borrowed some scripts and models externally. Thanks to the authors for providing great resources.

  • Pretrained VIBE and most of functions are borrowed from VIBE.
  • Pretrained SPIN is borrowed from SPIN.
  • SMPL model files are borrowed from SPIN and SMPLify.
Owner
Seong Hyun Kim
M.S. student in CVLAB, Kwang Woon University
Seong Hyun Kim
Code for SALT: Stackelberg Adversarial Regularization, EMNLP 2021.

SALT: Stackelberg Adversarial Regularization Code for Adversarial Regularization as Stackelberg Game: An Unrolled Optimization Approach, EMNLP 2021. R

Simiao Zuo 10 Jan 10, 2022
DenseCLIP: Language-Guided Dense Prediction with Context-Aware Prompting

DenseCLIP: Language-Guided Dense Prediction with Context-Aware Prompting Created by Yongming Rao*, Wenliang Zhao*, Guangyi Chen, Yansong Tang, Zheng Z

Yongming Rao 321 Dec 27, 2022
Storage-optimizer - Identify potintial optimizations on the cloud storage accounts

Storage Optimizer Identify potintial optimizations on the cloud storage accounts

Zaher Mousa 1 Feb 13, 2022
The code for our paper CrossFormer: A Versatile Vision Transformer Based on Cross-scale Attention.

CrossFormer This repository is the code for our paper CrossFormer: A Versatile Vision Transformer Based on Cross-scale Attention. Introduction Existin

cheerss 238 Jan 06, 2023
LogDeep is an open source deeplearning-based log analysis toolkit for automated anomaly detection.

LogDeep is an open source deeplearning-based log analysis toolkit for automated anomaly detection.

donglee 279 Dec 13, 2022
The official implementation code of "PlantStereo: A Stereo Matching Benchmark for Plant Surface Dense Reconstruction."

PlantStereo This is the official implementation code for the paper "PlantStereo: A Stereo Matching Benchmark for Plant Surface Dense Reconstruction".

Wang Qingyu 14 Nov 28, 2022
RM Operation can equivalently convert ResNet to VGG, which is better for pruning; and can help RepVGG perform better when the depth is large.

RMNet: Equivalently Removing Residual Connection from Networks This repository is the official implementation of "RMNet: Equivalently Removing Residua

184 Jan 04, 2023
ChebLieNet, a spectral graph neural network turned equivariant by Riemannian geometry on Lie groups.

ChebLieNet: Invariant spectral graph NNs turned equivariant by Riemannian geometry on Lie groups Hugo Aguettaz, Erik J. Bekkers, Michaël Defferrard We

haguettaz 12 Dec 10, 2022
Make differentially private training of transformers easy for everyone

private-transformers This codebase facilitates fast experimentation of differentially private training of Hugging Face transformers. What is this? Why

Xuechen Li 73 Dec 28, 2022
Uncertainty Estimation via Response Scaling for Pseudo-mask Noise Mitigation in Weakly-supervised Semantic Segmentation

Uncertainty Estimation via Response Scaling for Pseudo-mask Noise Mitigation in Weakly-supervised Semantic Segmentation Introduction This is a PyTorch

XMed-Lab 30 Sep 23, 2022
Heterogeneous Deep Graph Infomax

Heterogeneous-Deep-Graph-Infomax Parameter Setting: HDGI-A: Node-level dimension: 16 Attention head: 4 Semantic-level attention vector: 8 learning rat

52 Oct 31, 2022
A 2D Visual Localization Framework based on Essential Matrices [ICRA2020]

A 2D Visual Localization Framework based on Essential Matrices This repository provides implementation of our paper accepted at ICRA: To Learn or Not

Qunjie Zhou 27 Nov 07, 2022
Implementation of Uformer, Attention-based Unet, in Pytorch

Uformer - Pytorch Implementation of Uformer, Attention-based Unet, in Pytorch. It will only offer the concat-cross-skip connection. This repository wi

Phil Wang 72 Dec 19, 2022
Utility code for use with PyXLL

pyxll-utils There is no need to use this package as of PyXLL 5. All features from this package are now provided by PyXLL. If you were using this packa

PyXLL 10 Dec 18, 2021
PyTorch implementation for OCT-GAN Neural ODE-based Conditional Tabular GANs (WWW 2021)

OCT-GAN: Neural ODE-based Conditional Tabular GANs (OCT-GAN) Code for reproducing the experiments in the paper: Jayoung Kim*, Jinsung Jeon*, Jaehoon L

BigDyL 7 Dec 27, 2022
Manim is an engine for precise programmatic animations, designed for creating explanatory math videos

Manim is an engine for precise programmatic animations, designed for creating explanatory math videos. Note, there are two versions of manim. This rep

Grant Sanderson 49k Jan 09, 2023
Official Pytorch and JAX implementation of "Efficient-VDVAE: Less is more"

The Official Pytorch and JAX implementation of "Efficient-VDVAE: Less is more" Arxiv preprint Louay Hazami   ·   Rayhane Mama   ·   Ragavan Thurairatn

Rayhane Mama 144 Dec 23, 2022
Open source Python implementation of the HDR+ photography pipeline

hdrplus-python Open source Python implementation of the HDR+ photography pipeline, originally developped by Google and presented in a 2016 article. Th

77 Jan 05, 2023
Efficient training of deep recommenders on cloud.

HybridBackend Introduction HybridBackend is a training framework for deep recommenders which bridges the gap between evolving cloud infrastructure and

Alibaba 111 Dec 23, 2022
An implementation of Deep Graph Infomax (DGI) in PyTorch

DGI Deep Graph Infomax (Veličković et al., ICLR 2019): https://arxiv.org/abs/1809.10341 Overview Here we provide an implementation of Deep Graph Infom

Petar Veličković 491 Jan 03, 2023