PIXIE: Collaborative Regression of Expressive Bodies

Related tags

Deep Learning PIXIE
Overview

PIXIE: Collaborative Regression of Expressive Bodies

[Project Page]

This is the official Pytorch implementation of PIXIE.

PIXIE reconstructs an expressive body with detailed face shape and hand articulation from a single image. PIXIE does this by regressing the body, face and hands directly from image pixels using a neural network that includes a novel moderator, which attends to add weights information about the different body parts. Unlike prior work, PIXIE estimates bodies with a gender-appropriate shape but does so in a gender neutral shape space to accommodate non-binary shapes. Please refer to the Paper for more details.

The main features of PIXIE are:

  • Expressive body estimation: Given a single image, PIXIE reconstructs the 3D body shape and pose, hand articulation and facial expression as SMPL-X parameters
  • Facial details: PIXIE extracts detailed face shape, including wrinkles, using DECA
  • Facial texture: PIXIE also returns a estimate of the albedo of the subject
  • Animation: The estimated body can be re-posed and animated
  • Robust: Tested on full-body images in unconstrained conditions. The moderation strategy prevents unnatural poses. Overall, our method is robust to: various poses, illumination conditions and occlusions
  • Accurate: state-of-the-art expressive body reconstruction
  • Fast: this is a direct regression method (pixels in, SMPL-X out)

Getting started

Please follow the installation instructions to install all necessary packages and download the data.

Demo

Expressive 3D body reconstruction

python demos/demo_fit_body.py --saveObj True 

This return the estimated 3D body geometry with texture, in the form of an obj file, and render it from multiple viewpoints. If you set the optional --deca_path argument then the result will also contain facial details from DECA, provided that the face moderator is confident enough. Please run python demos/demo_fit_body.py --help for a more detailed description of the various available options.

input body image, estimated 3D body, with facial details, with texture, different views

3D face reconstruction

python demos/demo_fit_face.py --saveObj True --showBody True

Note that, given only a face image, our method still regresses the full SMPL-X parameters, producing a body mesh (as shown in the rightmost image). Futher, note how different face shapes produce different body shapes. The face tells us a lot about the body.

input face image, estimated face, with facial details, with texture, whole body in T-pose

3D hand reconstruction

python demos/demo_fit_hand.py --saveObj True

We do not provide support for hand detection, please make sure that to pass hand-only images and flip horizontally all left hands.

input hand image, estimated hand, with texture(fixed texture).

Animation

python demos/demo_animate_body.py 

Bodies estimated by PIXIE are easily animated. For example, we can estimate the body from one image and animate with the poses regressed from a different image sequence.

The visualization contains the input image, the predicted expressive 3D body, the animation result, the reference video and its corresponding reconstruction. For the latter, the color of the hands and head represents the confidence of the corresponding moderators. A lighter color means that PIXIE trusts more the information of the body image rather than the parts, which can happen when a person is facing away from the camera for example.

Notes

You can find more details on our method, as well as a discussion of the limitations of PIXIE here.

Citation

If you find our work useful to your research, please consider citing:

@inproceedings{PIXIE:2021,
      title={Collaborative Regression of Expressive Bodies using Moderation}, 
      author={Yao Feng and Vasileios Choutas and Timo Bolkart and Dimitrios Tzionas and Michael J. Black},
      booktitle={International Conference on 3D Vision (3DV)},
      year={2021}
}

License

This code and model are available for non-commercial scientific research purposes as defined in the LICENSE file. By downloading and using the code and model you agree to the terms in the LICENSE.

Acknowledgments

For functions or scripts that are based on external sources, we acknowledge the origin individually in each file.
Here are some great resources we benefit from:

We would also like to thank the authors of other public body regression methods, which allow us to easily perform quantitative and qualitative comparisons:
HMR, SPIN, frankmocap

Last but not least, we thank Victoria Fernández Abrevaya, Yinghao Huang and Radek Danecek for their helpful comments and proof reading, and Yuliang Xiu for his help in capturing demo sequences. This research was partially supported by the Max Planck ETH Center for Learning Systems. Some of the images used in the qualitative examples come from pexels.com.

Contact

For questions, please contact [email protected].
For commercial licensing (and all related questions for business applications), please contact [email protected].

Comments
  • No such file or directory: '/content/PIXIE/data/FLAME_albedo_from_BFM.npz

    No such file or directory: '/content/PIXIE/data/FLAME_albedo_from_BFM.npz

    Hi, first congrats for your work :)

    I'm running your code in Colab and getting this error:

    !python demos/demo_fit_face.py --saveObj True

    FileNotFoundError: [Errno 2] No such file or directory: '/content/PIXIE/data/FLAME_albedo_from_BFM.npz'

    In the instruction says that ALBEDO stuff is optional. I'm getting this error with all demo scripts. Any clue? Is it compulsory to install albedo repo?

    Thanks a lot

    opened by smithee77 5
  • How to get T-Pose body mesh with face details and texture

    How to get T-Pose body mesh with face details and texture

    Hey, Congrats for this great work. I tested this repository and glad to see the results. Can anyone suggest me how to get T-Pose body mesh with texture details (along with DECA's facial texture and details) ? Thanks.

    opened by ujjawalcse 3
  • Aligning the wrists, head and pelvis

    Aligning the wrists, head and pelvis

    Hello, I have been doing a few tests with pixie (using body as the type) to obtain the pose of the smplx given a picture and I managed to get the joints rotation from param_dict['body'] after applying some conversions, but when I try to use those values on a regular smplx in blender or unity I end up with a misalign between the wrists, the pelvis (global_pose) and the head, for example the body is looking backwards while the head is looking to the cam and the wrist are all over the place.

    The fingers and the body parts seems to be fine when compared to the picture except for the other 3 parts, so I wanted to know if there is a right way to obtain the joints rotation while keeping the 3 bodies aligned or if there is a known way to easily align them.

    Thanks.

    opened by ijorquera 3
  • FileNotFoundError - smplx_extra_joints.yaml

    FileNotFoundError - smplx_extra_joints.yaml

    total 12 images creating the SMPLX Decoder Traceback (most recent call last): File "demos/demo_fit_body.py", line 165, in main(parser.parse_args()) File "demos/demo_fit_body.py", line 35, in main pixie = PIXIE(config = pixie_cfg, device=device) File "/Projects/PIXIE/pixielib/pixie.py", line 50, in init self._create_model() File "/Projects/PIXIE/pixielib/pixie.py", line 108, in _create_model self.smplx = SMPLX(self.cfg.model).to(self.device) File "/Projects/PIXIE/pixielib/models/SMPLX.py", line 157, in init fname=config.extra_joint_path) File "/Projects/PIXIE/pixielib/models/lbs.py", line 398, in init with open(fname, 'r') as f: FileNotFoundError: [Errno 2] No such file or directory: '/Projects/PIXIE/data/smplx_extra_joints.yaml'

    Thanks for sharing this code. When I try these commands, the error appears But there is no 'smplx_extra_joints.yaml' in smpl-x site python demos/demo_fit_body.py --saveObj True python demos/demo_animate_body.py

    How can I get the file?

    opened by woo1 3
  • Problem of using --deca_path argument

    Problem of using --deca_path argument

    Thanks for the wonderful job! As you mentioned: "If you set the optional --deca_path argument then the result will also contain facial details from DECA, provided that the face moderator is confident enough."

    However, using the GettyImages-545880635.jpg as an example, after managed to run the demo_fit_body with "--deca_path [absolute path]", the result is the same comparing to that without deca_path.

    So I want to ask:"Is the --deca_path argument not designed to replace the old head by the newly generated head from deca"? And is it just for texture changing?

    opened by xqyd 1
  • OSError: Failed to interpret file '/home/michael/PIXIE/data/SMPLX_NEUTRAL_2020.npz' as a pickle

    OSError: Failed to interpret file '/home/michael/PIXIE/data/SMPLX_NEUTRAL_2020.npz' as a pickle

    python demos/demo_fit_body.py --saveObj True

    total 12 images creating the SMPLX Decoder Traceback (most recent call last): File "/home/michael/anaconda3/envs/pixie-env/lib/python3.7/site-packages/numpy/lib/npyio.py", line 448, in load return pickle.load(fid, **pickle_kwargs) _pickle.UnpicklingError: invalid load key, 'E'.

    The above exception was the direct cause of the following exception:

    Traceback (most recent call last): File "demos/demo_fit_body.py", line 165, in main(parser.parse_args()) File "demos/demo_fit_body.py", line 35, in main pixie = PIXIE(config = pixie_cfg, device=device) File "/home/michael/PIXIE/pixielib/pixie.py", line 50, in init self._create_model() File "/home/michael/PIXIE/pixielib/pixie.py", line 108, in _create_model self.smplx = SMPLX(self.cfg.model).to(self.device) File "/home/michael/PIXIE/pixielib/models/SMPLX.py", line 113, in init ss = np.load(config.smplx_model_path, allow_pickle=True) File "/home/michael/anaconda3/envs/pixie-env/lib/python3.7/site-packages/numpy/lib/npyio.py", line 451, in load "Failed to interpret file %s as a pickle" % repr(file)) from e OSError: Failed to interpret file '/home/michael/PIXIE/data/SMPLX_NEUTRAL_2020.npz' as a pickle

    opened by Michaelwhite34 1
  • Video reconstruction visualization

    Video reconstruction visualization

    Hello, I am excited about your excellent research work.When I input my own video, the reconstructed video image is very shaken, as if holding the camera shaking, it seems to be a fixed size (1024) problem, would like to ask how to solve this problem?

    opened by SeanLiu081 1
  • How to fit an smplx model with the person of a picture?

    How to fit an smplx model with the person of a picture?

    Hello, I was doing some test with pixie and smplx in unity and right now I'm trying to fit the smplx with the 1024x1024 image that pixie generates using the pelvis keypoints (the first array of the keypoints obtained after using the decode function) and the body_cam, but I can't manage to get the same result as the rendered by pixie as shown in the image (left is rendered by pixie, right is my attempt to fit it using the keypoints and cam). ///

    Is there any kind of scale or conversion that I should be considering when trying to fit the smplx to the image? in the previous image it looks really close to the rendered by pixie, but that is just the case with that image and I get bigger off-sets with other pictures.

    Thanks!

    opened by ijorquera 0
  • Misalign between the .obj and a smplx model with the generated rotations

    Misalign between the .obj and a smplx model with the generated rotations

    Hello, when reconstructing the body of the image "GettyImages-545880635" I get an .obj with a similar pose to the image, but when I use the generated rotation matrix and radians in an SMPLX model in unity I get a slightly different pose with a slightly lower arm (the one pointing upwards) than the .obj model.

    The degs for the arm pointing upwards after calling the pixie functions and converting from radians are like this:

    collar: [-3.638, -6.141, -11.834] shoulder: [ 0.758, -28.597, -54.184] elbow: [-7.016, -105.445, 25.618]

    But after rotating the arms to make it look like the generated .obj it ended looking like this:

    collar: [-3.638, -6.141, -11.834] shoulder: [-7.461, -34.199, -38.933] elbow: [ 4.089, -112.616, 21.870]

    I would like to know if there is some fix for this kind of misalign, since it also happens with some fingers and other body parts when using other images. I'm using the radians generated after calling the decode function, maybe there is an additional step that I'm missing.

    Thanks!

    opened by ijorquera 0
  • FLAME_albedo_from_BFM.npz not found

    FLAME_albedo_from_BFM.npz not found

    Hi, first congrats for your work :)

    I'm running your code in Colab and getting this error:

    !python demos/demo_fit_face.py --saveObj True

    FileNotFoundError: [Errno 2] No such file or directory: '/content/PIXIE/data/FLAME_albedo_from_BFM.npz'

    Any clue? Should I download this file from any website? Thanks a lot

    opened by smithee77 0
  • Clothing in the Figure

    Clothing in the Figure

    In the figure under the Expressive 3D body reconstruction section in the README, the final (i.e. the rightmost) image has a model with clothing. How was this achieved?

    opened by hshreeshail 1
  • Questions about training details.

    Questions about training details.

    Hi, I'm very interested in your excellect work. Could you please help me with a few questions that I didn't find the answer to in the paper?

    1. In the first stage of training, what are the hyperparameters (learning rate, weight decay and momentum of the optimizer and number of training epochs) for body, hand and face?
    2. The prior mentioned in the paper is added on which loss in which stage of training?
    3. What is the loss weight of body, hand, face and update loss? Thanks very much!
    opened by mls1999725 0
  • How to get training data? Why is the betas parameter is 200?

    How to get training data? Why is the betas parameter is 200?

    As you mentioned in your paper, the training data is SMPL-X fit of exPose. But the number of betas parameters given by exPose is 10, but the number of betas parameters given in your method is 200, I was wondering how you guys Get the SMPL-X dataset with betas parameter of 200? (I see that most of the methods set the number of betas parameter of SMPL-X to 10)

    opened by Timkeeper2018 2
  • How to get groundtruth pose and shape params in COCO-Wholebody.

    How to get groundtruth pose and shape params in COCO-Wholebody.

    Hi, I'm very interested in your excellent work. I'm trying to reproduce the training result, but I found coco-wholebody dataset has no groundtruth pose and shape params which are used to compute smplx loss. Could you please help me how to get the groundtruth? Thanks very much!

    opened by mls1999725 0
Owner
Yao Feng
Yao Feng
BABEL: Bodies, Action and Behavior with English Labels [CVPR 2021]

BABEL is a large dataset with language labels describing the actions being performed in mocap sequences. BABEL labels about 43 hours of mocap sequences from AMASS [1] with action labels.

null 113 Dec 28, 2022
Brax is a differentiable physics engine that simulates environments made up of rigid bodies, joints, and actuators

Brax is a differentiable physics engine that simulates environments made up of rigid bodies, joints, and actuators. It's also a suite of learning algorithms to train agents to operate in these environments (PPO, SAC, evolutionary strategy, and direct trajectory optimization are implemented).

Google 1.5k Jan 2, 2023
Official Repo for ICCV2021 Paper: Learning to Regress Bodies from Images using Differentiable Semantic Rendering

[ICCV2021] Learning to Regress Bodies from Images using Differentiable Semantic Rendering Getting Started DSR has been implemented and tested on Ubunt

Sai Kumar Dwivedi 83 Nov 27, 2022
Code of 3D Shape Variational Autoencoder Latent Disentanglement via Mini-Batch Feature Swapping for Bodies and Faces

3D Shape Variational Autoencoder Latent Disentanglement via Mini-Batch Feature Swapping for Bodies and Faces Installation After cloning the repo open

null 37 Dec 3, 2022
Quantile Regression DQN a Minimal Working Example, Distributional Reinforcement Learning with Quantile Regression

Quantile Regression DQN Quantile Regression DQN a Minimal Working Example, Distributional Reinforcement Learning with Quantile Regression (https://arx

Arsenii Senya Ashukha 80 Sep 17, 2022
Hitters Linear Regression - Hitters Linear Regression With Python

Hitters_Linear_Regression Kullanacağımız veri seti Carnegie Mellon Üniversitesi'

AyseBuyukcelik 2 Jan 26, 2022
Code for "Neural Parts: Learning Expressive 3D Shape Abstractions with Invertible Neural Networks", CVPR 2021

Neural Parts: Learning Expressive 3D Shape Abstractions with Invertible Neural Networks This repository contains the code that accompanies our CVPR 20

Despoina Paschalidou 161 Dec 20, 2022
STYLER: Style Factor Modeling with Rapidity and Robustness via Speech Decomposition for Expressive and Controllable Neural Text to Speech

STYLER: Style Factor Modeling with Rapidity and Robustness via Speech Decomposition for Expressive and Controllable Neural Text to Speech Keon Lee, Ky

Keon Lee 114 Dec 12, 2022
Expressive Power of Invariant and Equivaraint Graph Neural Networks (ICLR 2021)

Expressive Power of Invariant and Equivaraint Graph Neural Networks In this repository, we show how to use powerful GNN (2-FGNN) to solve a graph alig

Marc Lelarge 36 Dec 12, 2022
Implementation of "GNNAutoScale: Scalable and Expressive Graph Neural Networks via Historical Embeddings" in PyTorch

PyGAS: Auto-Scaling GNNs in PyG PyGAS is the practical realization of our G NN A uto S cale (GAS) framework, which scales arbitrary message-passing GN

Matthias Fey 139 Dec 25, 2022
PyTorch Implementation of Daft-Exprt: Robust Prosody Transfer Across Speakers for Expressive Speech Synthesis

Daft-Exprt - PyTorch Implementation PyTorch Implementation of Daft-Exprt: Robust Prosody Transfer Across Speakers for Expressive Speech Synthesis The

Keon Lee 47 Dec 18, 2022
Expressive Body Capture: 3D Hands, Face, and Body from a Single Image

Expressive Body Capture: 3D Hands, Face, and Body from a Single Image [Project Page] [Paper] [Supp. Mat.] Table of Contents License Description Fittin

Vassilis Choutas 1.3k Jan 7, 2023
PyTorch implementations of Top-N recommendation, collaborative filtering recommenders.

PyTorch implementations of Top-N recommendation, collaborative filtering recommenders.

Yoonki Jeong 129 Dec 22, 2022
Official Implement of CVPR 2021 paper “Cross-Modal Collaborative Representation Learning and a Large-Scale RGBT Benchmark for Crowd Counting”

RGBT Crowd Counting Lingbo Liu, Jiaqi Chen, Hefeng Wu, Guanbin Li, Chenglong Li, Liang Lin. "Cross-Modal Collaborative Representation Learning and a L

null 37 Dec 8, 2022
Malmo Collaborative AI Challenge - Team Pig Catcher

The Malmo Collaborative AI Challenge - Team Pig Catcher Approach The challenge involves 2 agents who can either cooperate or defect. The optimal polic

Kai Arulkumaran 66 Jun 29, 2022
The official repo of the CVPR 2021 paper Group Collaborative Learning for Co-Salient Object Detection .

GCoNet The official repo of the CVPR 2021 paper Group Collaborative Learning for Co-Salient Object Detection . Trained model Download final_gconet.pth

Qi Fan 46 Nov 17, 2022
The implement of papar "Enhanced Graph Learning for Collaborative Filtering via Mutual Information Maximization"

SIGIR2021-EGLN The implement of paper "Enhanced Graph Learning for Collaborative Filtering via Mutual Information Maximization" Neural graph based Col

null 15 Dec 27, 2022
COVINS -- A Framework for Collaborative Visual-Inertial SLAM and Multi-Agent 3D Mapping

COVINS -- A Framework for Collaborative Visual-Inertial SLAM and Multi-Agent 3D Mapping Version 1.0 COVINS is an accurate, scalable, and versatile vis

ETHZ V4RL 183 Dec 27, 2022
PyTorch implementation of our ICCV 2021 paper, Interpretation of Emergent Communication in Heterogeneous Collaborative Embodied Agents.

PyTorch implementation of our ICCV 2021 paper, Interpretation of Emergent Communication in Heterogeneous Collaborative Embodied Agents.

Saim Wani 4 May 8, 2022