[CVPR'21] Locally Aware Piecewise Transformation Fields for 3D Human Mesh Registration

Related tags

Deep Learning PTF
Overview

Locally Aware Piecewise Transformation Fields for 3D Human Mesh Registration

This repository contains the implementation of our paper Locally Aware Piecewise Transformation Fields for 3D Human Mesh Registration . The code is largely based on Occupancy Networks - Learning 3D Reconstruction in Function Space.

You can find detailed usage instructions for training your own models and using pretrained models below.

If you find our code useful, please consider citing:

@InProceedings{PTF:CVPR:2021,
    author = {Shaofei Wang and Andreas Geiger and Siyu Tang},
    title = {Locally Aware Piecewise Transformation Fields for 3D Human Mesh Registration},
    booktitle = {Conference on Computer Vision and Pattern Recognition (CVPR)},
    year = {2021}
}

Installation

This repository has been tested on the following platforms:

  1. Python 3.7, PyTorch 1.6 with CUDA 10.2 and cuDNN 7.6.5, Ubuntu 20.04
  2. Python 3.7, PyTorch 1.6 with CUDA 10.1 and cuDNN 7.6.4, CentOS 7.9.2009

First you have to make sure that you have all dependencies in place. The simplest way to do so, is to use anaconda.

You can create an anaconda environment called PTF using

conda env create -n PTF python=3.7
conda activate PTF

Second, install PyTorch 1.6 via the official PyTorch website.

Third, install dependencies via

pip install -r requirements.txt

Fourth, manually install pytorch-scatter.

Lastly, compile the extension modules. You can do this via

python setup.py build_ext --inplace

(Optional) if you want to use the registration code under smpl_registration/, you need to install kaolin. Download the code from the kaolin repository, checkout to commit e7e513173bd4159ae45be6b3e156a3ad156a3eb9 and install it according to the instructions.

(Optional) if you want to train/evaluate single-view models (which corresponds to configurations in configs/cape_sv), you need to install OpenDR to render depth images. You need to first install OSMesa, here is the command of installing it on Ubuntu:

sudo apt-get install libglu1-mesa-dev freeglut3-dev mesa-common-dev libosmesa6-dev

For installing OSMesa on CentOS 7, please check this related issue. After installing OSMesa, install OpenDR via:

pip install opendr

Build the dataset

To prepare the dataset for training/evaluation, you have to first download the CAPE dataset from the CAPE website.

  1. Download SMPL v1.0, clean-up the chumpy objects inside the models using this code, and rename the files and extract them to ./body_models/smpl/, eventually, the ./body_models folder should have the following structure:
    body_models
     └-- smpl
     	├-- male
     	|   └-- model.pkl
     	└-- female
     	    └-- model.pkl
    
    

Besides the SMPL models, you will also need to download all the .pkl files from IP-Net repository and put them under ./body_models/misc/. Finally, run the following script to extract necessary SMPL parameters used in our code:

python extract_smpl_parameters.py

The extracted SMPL parameters will be save into ./body_models/misc/.

  1. Extract CAPE dataset to an arbitrary path, denoted as ${CAPE_ROOT}. The extracted dataset should have the following structure:
    ${CAPE_ROOT}
     ├-- 00032
     ├-- 00096
     |   ...
     ├-- 03394
     └-- cape_release
    
    
  2. Create data directory under the project directory.
  3. Modify the parameters in preprocess/build_dataset.sh accordingly (i.e. modify the --dataset_path to ${CAPE_ROOT}) to extract training/evaluation data.
  4. Run preprocess/build_dataset.sh to preprocess the CAPE dataset.

Pre-trained models

We provide pre-trained PTF and IP-Net models with two encoder resolutions, that is, 64x3 and 128x3. After downloading them, please put them under respective directories ./out/cape or ./out/cape_sv.

Generating Meshes

To generate all evaluation meshes using a trained model, use

python generate.py configs/cape/{config}.yaml

Alternatively, if you want to parallelize the generation on a HPC cluster, use:

python generate.py --subject-idx ${SUBJECT_IDX} --sequence-idx ${SEQUENCE_IDX} configs/cape/${config}.yaml

to generate meshes for specified subject/sequence combination. A list of all subject/sequence combinations can be found in ./misc/subject_sequence.txt.

SMPL/SMPL+D Registration

To register SMPL/SMPL+D models to the generated meshes, use either of the following:

python smpl_registration/fit_SMPLD_PTFs.py --num-joints 24 --use-parts --init-pose configs/cape/${config}.yaml # for PTF
python smpl_registration/fit_SMPLD_PTFs.py --num-joints 14 --use-parts configs/cape/${config}.yaml # for IP-Net

Note that registration is very slow, taking roughly 1-2 minutes per frame. If you have access to HPC cluster, it is advised to parallelize over subject/sequence combinations using the same subject/sequence input arguments for generating meshes.

Training

Finally, to train a new network from scratch, run

python train.py --num_workers 8 configs/cape/${config}.yaml

You can monitor on http://localhost:6006 the training process using tensorboard:

tensorboard --logdir ${OUTPUT_DIR}/logs --port 6006

where you replace ${OUTPUT_DIR} with the respective output directory.

License

We employ MIT License for the PTF code, which covers

extract_smpl_parameters.py
generate.py
train.py
setup.py
im2mesh/
preprocess/

Modules not covered by our license are modified versions from IP-Net (./smpl_registration) and SMPL-X (./human_body_prior); for these parts, please consult their respective licenses and cite the respective papers.

Comments
  • How to test PTF/IPNet on one single case

    How to test PTF/IPNet on one single case

    Hello! Thank you so much for this awesome work!

    I am very new to this field, and currently we are trying to automatically fit an SMPL model to human surface point clouds (or mesh). I assume that the fit_SMPLD_PTFs.py should be very help to us. My question is that, given one case from the CAPE dataset (CAPE_ROOT/00145 for example), how should we run your scripts to get some fitting results? I am not sure how to set the subject_id or the sequence_id in this scenario.

    Thank you again for your time and look forward to hearing from you!

    opened by Tonight1121 7
  • Problems of SMPL/SMPL+D Registration

    Problems of SMPL/SMPL+D Registration

    @taconite Hi, taconite When I run the command python smpl_registration/fit_SMPLD_PTFs.py --num-joints 24 --use-parts --init-pose configs/cape/${config}.yaml, the output logs are as follows:

    (PTF) ang@ang-All-Series-Invalid-entry-length-16-Fixed-up-to-11:/media/ang/PTF-main$ python smpl_registration/fit_SMPLD_PTFs.py --num-joints 24 --use-parts --init-pose configs/cape/ptf_decoder-width-256-128_ptfs-width-256-128_full-smpl_ce-ce_w-skin-1e-1_conv-encoder_hidden-256_plane64x3_softmax_npts-5000_CAPE-release-with-aug-trans_1gpus.yaml Warning: unable to import datasets/nusc: No module named 'nuscenes' Traceback (most recent call last): File "/media/ang/PTF-main/kaolin/kaolin/datasets/init.py", line 11, in from .nusc import NuscDetection File "/media/ang/PTF-main/kaolin/kaolin/datasets/nusc.py", line 21, in from nuscenes.utils.geometry_utils import transform_matrix ModuleNotFoundError: No module named 'nuscenes' Warning: unable to import datasets/nusc: None Using BLB SMPL from the project: LearningRegistration /media/ang/PTF-main/im2mesh/config.py:19: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details. cfg_special = yaml.load(f) /media/ang/PTF-main/im2mesh/config.py:30: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details. cfg = yaml.load(f) 0%| | 0/331 [00:00<?, ?it/s](6890, 3, 10) /media/ang/PTF-main/smpl_registration/lib/smpl_layer.py:54: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /opt/conda/conda-bld/pytorch_1595629403081/work/torch/csrc/utils/tensor_numpy.cpp:141.) torch.Tensor(smpl_data['betas'].r).unsqueeze(0)) Optimizing SMPL global orientation | 0/30 [00:00<?, ?it/s] Iter: 29, s2m: 0.1590, m2s: 0.2704, betas: 0.0418, pose_pr: 0.0004, part: 0.5812: 100%|██████████████| 30/30 [05:54<00:00, 11.83s/it] Iter: 29, s2m: 0.1590, m2s: 0.2704, betas: 0.0418, pose_pr: 0.0004, part: 0.5812: 100%|██████████████| 30/30 [05:54<00:00, 12.03s/itOptimizing SMPL pose only | 0/30 [00:00<?, ?it/s] Iter: 29, s2m: 0.0200, m2s: 0.0064, betas: 0.0014, pose_pr: 0.0003, part: 0.0155: 100%|██████████████| 30/30 [06:05<00:00, 12.19s/it] Iter: 29, s2m: 0.0203, m2s: 0.0030, betas: 0.0002, pose_pr: 0.0003, part: 0.0078: 100%|██████████████| 30/30 [06:16<00:00, 12.54s/it] ** Optimised smpl pose **s: 0.0030, betas: 0.0002, pose_pr: 0.0003, part: 0.0078: 100%|██████████████| 30/30 [06:16<00:00, 12.48s/it] Iter: 29, s2m: 0.0095, m2s: 0.0105, betas: 0.0007, pose_pr: 0.0008, part: 0.0287: 100%|██████████████| 30/30 [06:17<00:00, 12.59s/it] Iter: 29, s2m: 0.0131, m2s: 0.0035, betas: 0.0004, pose_pr: 0.0004, part: 0.0107: 100%|██████████████| 30/30 [06:19<00:00, 12.64s/it] Iter: 29, s2m: 0.0176, m2s: 0.0023, betas: 0.0006, pose_pr: 0.0003, part: 0.0071: 100%|██████████████| 30/30 [06:18<00:00, 12.63s/it] ** Optimised smpl pose and shape ** betas: 0.0006, pose_pr: 0.0003, part: 0.0071: 100%|██████████████| 30/30 [06:18<00:00, 12.87s/it] Lx100. Iter: 9, s2m: 0.0023, m2s: 0.0032, lap: 0.0007, offsets: 0.0044: 100%|████████████████████████| 10/10 [02:11<00:00, 13.18s/it] Lx100. Iter: 9, s2m: 0.0010, m2s: 0.0015, lap: 0.0004, offsets: 0.0038: 100%|████████████████████████| 10/10 [02:13<00:00, 13.35s/it] Lx100. Iter: 9, s2m: 0.0004, m2s: 0.0008, lap: 0.0002, offsets: 0.0039: 100%|████████████████████████| 10/10 [02:08<00:00, 12.87s/it] Lx100. Iter: 9, s2m: 0.0002, m2s: 0.0005, lap: 0.0001, offsets: 0.0041: 100%|████████████████████████| 10/10 [02:08<00:00, 12.90s/it] Lx100. Iter: 9, s2m: 0.0001, m2s: 0.0004, lap: 0.0001, offsets: 0.0042: 100%|████████████████████████| 10/10 [02:09<00:00, 12.94s/it] Inner distance for input shortlong_ATUsquat.000001: 0.01631784997880459 cm0%|████████████████████████| 10/10 [02:09<00:00, 12.87s/it] Outer distance for input shortlong_ATUsquat.000001: 0.017044199630618095 cm Inner distance for input shortlong_ATUsquat.000006: 0.013444711454212666 cm Outer distance for input shortlong_ATUsquat.000006: 0.014601950533688068 cm Inner distance for input shortlong_ATUsquat.000011: 0.015537642873823643 cm Outer distance for input shortlong_ATUsquat.000011: 0.0160372331738472 cm Inner distance for input shortlong_ATUsquat.000016: 0.014674867503345013 cm Outer distance for input shortlong_ATUsquat.000016: 0.015363145619630814 cm Inner distance for input shortlong_ATUsquat.000021: 0.013980861753225327 cm Outer distance for input shortlong_ATUsquat.000021: 0.014812660403549671 cm Inner distance for input shortlong_ATUsquat.000026: 0.014417361468076706 cm Outer distance for input shortlong_ATUsquat.000026: 0.014523924328386784 cm Inner distance for input shortlong_ATUsquat.000031: 0.014444430358707905 cm Outer distance for input shortlong_ATUsquat.000031: 0.015400375239551067 cm Inner distance for input shortlong_ATUsquat.000036: 0.014390168711543083 cm Outer distance for input shortlong_ATUsquat.000036: 0.014232808724045753 cm Inner distance for input shortlong_ATUsquat.000041: 0.01653471030294895 cm Outer distance for input shortlong_ATUsquat.000041: 0.017072072252631187 cm Inner distance for input shortlong_ATUsquat.000046: 0.01617429219186306 cm Outer distance for input shortlong_ATUsquat.000046: 0.015451897867023945 cm Inner distance for input shortlong_ATUsquat.000051: 0.01808827929198742 cm Outer distance for input shortlong_ATUsquat.000051: 0.017144061625003815 cm Inner distance for input shortlong_ATUsquat.000056: 0.016339648514986038 cm Outer distance for input shortlong_ATUsquat.000056: 0.016375551000237465 cm 0%|▎ | 1/331 [48:37<267:23:39, 2917.03s/it](6890, 3, 10) Optimizing SMPL global orientation | 0/30 [00:00<?, ?it/s]

    Iter: 15, s2m: 0.8738, m2s: 1.0011, betas: 0.0114, pose_pr: 0.0014, part: 3.3756: 53%|███████▍ | 16/30 [04:05<03:34, 15.29s/it] .....

    It seems that there're 2 problems: 1) No module named 'nuscenes': Is it matters? We do not use the nuscenes dataset after all. 2) PTF-main/smpl_registration/lib/smpl_layer.py:54: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. Although it warns, it can output the registration .ply files. I wonder if I can ignore the warning?

    Thanks in advance, and look forward to your reply!

    opened by Bingoang 2
  • Issue: Building on Windows | im2mesh.utils.libmesh.triangle_hash

    Issue: Building on Windows | im2mesh.utils.libmesh.triangle_hash

    Hi, I am trying to run the code on Windows and when I run the command - python setup.py build_ext --inplace, I get error trying to build im2mesh.utils.libmesh.triangle_hash extension. Can you kindly help me with this -

    building 'im2mesh.utils.libmesh.triangle_hash' extension
    creating D:\CG_Source\NeRFs\3D_Avatar_Pipeline\PTF\build\temp.win-amd64-3.7\Release\im2mesh\utils\libmesh
    Emitting ninja build file D:\CG_Source\NeRFs\3D_Avatar_Pipeline\PTF\build\temp.win-amd64-3.7\Release\build.ninja...
    Compiling objects...
    Allowing ninja to set a default number of workers... (overridable by setting the environment variable MAX_JOBS=N)
    [1/1] cl /showIncludes /nologo /Ox /W3 /GL /DNDEBUG /MD /MD /wd4819 /wd4251 /wd4244 /wd4267 /wd4275 /wd4018 /wd4190 /EHsc -IC:\miniconda3\envs\PTF\lib\site-packages\numpy\core\include -IC:\miniconda3\envs\PTF\include -IC:\miniconda3\envs\PTF\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\ATLMFC\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\cppwinrt" -c D:\CG_Source\NeRFs\3D_Avatar_Pipeline\PTF\im2mesh\utils\libmesh\triangle_hash.cpp /FoD:\CG_Source\NeRFs\3D_Avatar_Pipeline\PTF\build\temp.win-amd64-3.7\Release\im2mesh/utils/libmesh/triangle_hash.obj -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=triangle_hash -D_GLIBCXX_USE_CXX11_ABI=0 /std:c++14
    C:\miniconda3\envs\PTF\lib\site-packages\numpy\core\include\numpy\npy_1_7_deprecated_api.h(14) : Warning Msg: Using deprecated NumPy API, disable it with #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
    creating D:\CG_Source\NeRFs\3D_Avatar_Pipeline\PTF\build\lib.win-amd64-3.7\im2mesh\utils\libmesh
    C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\bin\HostX86\x64\link.exe /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\miniconda3\envs\PTF\libs /LIBPATH:C:\miniconda3\envs\PTF\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\ATLMFC\lib\x64" "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.18362.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.18362.0\um\x64" m.lib /EXPORT:PyInit_triangle_hash D:\CG_Source\NeRFs\3D_Avatar_Pipeline\PTF\build\temp.win-amd64-3.7\Release\im2mesh/utils/libmesh/triangle_hash.obj /OUT:build\lib.win-amd64-3.7\im2mesh\utils\libmesh\triangle_hash.cp37-win_amd64.pyd /IMPLIB:D:\CG_Source\NeRFs\3D_Avatar_Pipeline\PTF\build\temp.win-amd64-3.7\Release\im2mesh/utils/libmesh\triangle_hash.cp37-win_amd64.lib
    LINK : fatal error LNK1181: cannot open input file 'm.lib'
    error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.25.28610\\bin\\HostX86\\x64\\link.exe' failed with exit status 1181
    
    opened by codesavory 1
  • When will  the code be released

    When will the code be released

    Hi~ Thanks to your excellent works!! I wanna know when the training/testing code will be released? And also , I wonder whether your methods can have good results on single side view point clouds? Thank you !!!

    opened by schuang23 1
  • fit smpl+D from raw scans only

    fit smpl+D from raw scans only

    hello, I am appreciate about your excellent work, but something's remain unclear for me and i'm expecting responses: in this project, i see minimal shapes, smpl parameters and so on are used when evaluating, can this project fit smpl+D model from raw scans only? if yes, how? thank you!

    opened by ddlau 3
  • Question about the part probabilities

    Question about the part probabilities

    Hi, taconite! I really interesting about your paper, but I have a question about the part probabilities: For each query point p, we calculate a probability simplex p_hat(shape: B×24×N) to judge which part of the SMPL the query point p belongs to. There are totally 24 parts in SMPL. Why is the shape of probability simplex p_hat not B×(24+2)×N? What if the query point p does not belong to any part of the SMPL body (e.g. point p is inside or outside the surface)? I cannot figured it out, and I really hope you can answer me. Thanks in advance~

    opened by Bingoang 0
  • Registration and Re-pose Scripts on BUFF dataset

    Registration and Re-pose Scripts on BUFF dataset

    @taconite Hi~ PTF is so interesting that I've been studying your paper and experiments these days. Could you release the registration code and the re-pose code on BUFF dataset (i.e. the code of Figure 3 in main paper) ? Thank you in advance!

    Best, Bingoang

    opened by Bingoang 0
  • Quantitative Results Evaluation Instruction

    Quantitative Results Evaluation Instruction

    Hi, taconite Thanks for your excellent work! It's so interesting! I wonder if you could offer the commands and scripts of Quantitative Results Evaluation (e.g. mIoU, Outer CD, Inner CD, Per-vetex error)? Thanks in advance!

    opened by Bingoang 2
git《Learning Pairwise Inter-Plane Relations for Piecewise Planar Reconstruction》(ECCV 2020) GitHub:

Learning Pairwise Inter-Plane Relations for Piecewise Planar Reconstruction Code for the ECCV 2020 paper by Yiming Qian and Yasutaka Furukawa Getting

null 37 Dec 4, 2022
Code for our paper at ECCV 2020: Post-Training Piecewise Linear Quantization for Deep Neural Networks

PWLQ Updates 2020/07/16 - We are working on getting permission from our institution to release our source code. We will release it once we are granted

null 54 Dec 15, 2022
Registration Loss Learning for Deep Probabilistic Point Set Registration

RLLReg This repository contains a Pytorch implementation of the point set registration method RLLReg. Details about the method can be found in the 3DV

Felix Järemo Lawin 35 Nov 2, 2022
A repo that contains all the mesh keys needed for mesh backend, along with a code example of how to use them in python

Mesh-Keys A repo that contains all the mesh keys needed for mesh backend, along with a code example of how to use them in python Have been seeing alot

Joseph 53 Dec 13, 2022
CoSMA: Convolutional Semi-Regular Mesh Autoencoder. From Paper "Mesh Convolutional Autoencoder for Semi-Regular Meshes of Different Sizes"

Mesh Convolutional Autoencoder for Semi-Regular Meshes of Different Sizes Implementation of CoSMA: Convolutional Semi-Regular Mesh Autoencoder arXiv p

Fraunhofer SCAI 10 Oct 11, 2022
Given a 2D triangle mesh, we could randomly generate cloud points that fill in the triangle mesh

generate_cloud_points Given a 2D triangle mesh, we could randomly generate cloud points that fill in the triangle mesh. Run python disp_mesh.py Or you

Peng Yu 2 Dec 24, 2021
AI Face Mesh: This is a simple face mesh detection program based on Artificial intelligence.

AI Face Mesh: This is a simple face mesh detection program based on Artificial Intelligence which made with Python. It's able to detect 468 different

Md. Rakibul Islam 1 Jan 13, 2022
Code for HLA-Face: Joint High-Low Adaptation for Low Light Face Detection (CVPR21)

HLA-Face: Joint High-Low Adaptation for Low Light Face Detection The official PyTorch implementation for HLA-Face: Joint High-Low Adaptation for Low L

Wenjing Wang 77 Dec 8, 2022
[CVPR21] LightTrack: Finding Lightweight Neural Network for Object Tracking via One-Shot Architecture Search

LightTrack: Finding Lightweight Neural Networks for Object Tracking via One-Shot Architecture Search The official implementation of the paper LightTra

Multimedia Research 290 Dec 24, 2022
Repository relating to the CVPR21 paper TimeLens: Event-based Video Frame Interpolation

TimeLens: Event-based Video Frame Interpolation This repository is about the High Speed Event and RGB (HS-ERGB) dataset, used in the 2021 CVPR paper T

Robotics and Perception Group 544 Dec 19, 2022
Released code for Objects are Different: Flexible Monocular 3D Object Detection, CVPR21

MonoFlex Released code for Objects are Different: Flexible Monocular 3D Object Detection, CVPR21. Work in progress. Installation This repo is tested w

Yunpeng 169 Dec 6, 2022
Official repository for CVPR21 paper "Deep Stable Learning for Out-Of-Distribution Generalization".

StableNet StableNet is a deep stable learning method for out-of-distribution generalization. This is the official repo for CVPR21 paper "Deep Stable L

null 120 Dec 28, 2022
Implementation of ICCV2021(Oral) paper - VMNet: Voxel-Mesh Network for Geodesic-aware 3D Semantic Segmentation

VMNet: Voxel-Mesh Network for Geodesic-Aware 3D Semantic Segmentation Created by Zeyu HU Introduction This work is based on our paper VMNet: Voxel-Mes

HU Zeyu 82 Dec 27, 2022
Code for "3D Human Pose and Shape Regression with Pyramidal Mesh Alignment Feedback Loop"

PyMAF This repository contains the code for the following paper: 3D Human Pose and Shape Regression with Pyramidal Mesh Alignment Feedback Loop Hongwe

Hongwen Zhang 450 Dec 28, 2022
Research code for CVPR 2021 paper "End-to-End Human Pose and Mesh Reconstruction with Transformers"

MeshTransformer ✨ This is our research code of End-to-End Human Pose and Mesh Reconstruction with Transformers. MEsh TRansfOrmer is a simple yet effec

Microsoft 473 Dec 31, 2022
Unsupervised 3D Human Mesh Recovery from Noisy Point Clouds

Unsupervised 3D Human Mesh Recovery from Noisy Point Clouds Xinxin Zuo, Sen Wang, Minglun Gong, Li Cheng Prerequisites We have tested the code on Ubun

null 41 Dec 12, 2022
(ICCV 2021) ProHMR - Probabilistic Modeling for Human Mesh Recovery

ProHMR - Probabilistic Modeling for Human Mesh Recovery Code repository for the paper: Probabilistic Modeling for Human Mesh Recovery Nikos Kolotouros

Nikos Kolotouros 209 Dec 13, 2022
Out-of-Domain Human Mesh Reconstruction via Dynamic Bilevel Online Adaptation

DynaBOA Code repositoty for the paper: Out-of-Domain Human Mesh Reconstruction via Dynamic Bilevel Online Adaptation Shanyan Guan, Jingwei Xu, Michell

null 197 Jan 7, 2023
Accelerated SMPL operation, commonly used in generate 3D human mesh, STAR included.

SMPL2 An enchanced and accelerated SMPL operation which commonly used in 3D human mesh generation. It takes a poses, shapes, cam_trans as inputs, outp

JinTian 20 Oct 17, 2022