Skip to content

Deep Learning powered non-linear 3D Morphable Models

Notifications You must be signed in to change notification settings

vikasTmz/Non-Linear_3DMM

Repository files navigation

Non-Linear 3D Morphable Models

Creation of state-of-the-art digital avatars, for the past two decades, have been facilitated by data acquired via a polarized spherical gradient illumination scanning system (a.k.a lightstage) aided by the photometric stereo algorithm. While this highly constrained data capture setup provides accurate estimation of various human skin reflectance components, it is expensive on the cost and time axis.

Since Blanz and Vetter’s seminal work, the community has focused on building data-driven parametric models for face geometry and appearance. Previous research focused on linear models specifically building bilinear and multilinear models with a linear subspace, assuming a Gaussian prior distribution. While these models have become widely popular in the computer vision and machine learning community for applications like Deepfakes, their limitations have prohibited adoption by graphics practitioners.

Motivated by recent works on non-linear face models, we built a deep generative face model operating on vertex-based deformation representation. Our method enjoys properties like disentangled identity and expression latent space, models correlation between appearance and geometry and captures high-frequency textures, and importantly provides artistic semantic control. The result allow users to synthesise random realistic human faces and explore the manifold of faces by performing latent space manipulation akin to works like StyleGAN in the 2D domain.

Requirements

  • PyTorch
  • CUDA

Optional

  • Blender

Tested on Ubuntu 18, CUDA.version==10.2, pytorch.version==1.10.1

Installation

First, install conda : https://docs.conda.io/projects/conda/en/latest/user-guide/install/linux.html

Then run the following commands:

conda env create -f environment.yaml
conda activate nonlinear3dmm

Optional

Source: https://github.com/ThibaultGROUEIX/AtlasNet

python auxiliary/ChamferDistancePytorch/chamfer3D/setup.py install #MIT
cd auxiliary
git clone https://github.com/ThibaultGROUEIX/metro_sources.git
cd metro_sources; python setup.py --build # build metro distance #GPL3
cd ../..

Usage

Train:

python train.py config/<choose a config file>

Test:

Make sure the right model evaluation mode is set in the config file and then run the below.

python generate.py config/<choose a config file>

Results

Random (geometry only) faces generated by our model:

Random (geometry+texture) faces generated by our model:

Traversing the latent space:

Latent space editing:

Fitting unseen faces:

About

Deep Learning powered non-linear 3D Morphable Models

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published