FaceLift: Learning Generalizable Single Image 3D Face Reconstruction from Synthetic Heads

March 25, 2026 ยท View on GitHub

๐ŸŒบ ICCV 2025 ๐ŸŒบ

Weijie Lyu, Yi Zhou, Ming-Hsuan Yang, Zhixin Shu
University of California, Merced - Adobe Research

Website Paper Video Demo

๐Ÿ”ฅNews๐Ÿ”ฅ Check out our new work FaceCam for portrait video camera control!

image

FaceLift transforms a single facial image into a high-fidelity 3D Gaussian head representation, and it generalizes remarkably well to real-world human images.

๐Ÿ”ง Prerequisites

Model Checkpoints

Model checkpoints will be automatically downloaded from HuggingFace on first run.

Alternatively, you can manually place the checkpoints in the checkpoints/ directory:

  • checkpoints/mvdiffusion/pipeckpts/ - Multi-view diffusion model checkpoints
  • checkpoints/gslrm/ckpt_0000000000021125.pt - GS-LRM model checkpoints

Environment Setup

bash setup_env.sh

๐Ÿš€ Inference

Command Line Interface

Process images from a directory:

python inference.py --input_dir examples/ --output_dir outputs/

Available Arguments:

ArgumentShortDefaultDescription
--input_dir-iexamples/Input directory containing images
--output_dir-ooutputs/Output directory for results
--auto_crop-TrueAutomatically crop faces
--seed-4Random seed for reproducible results
--guidance_scale_2D-3.0Guidance scale for multi-view generation
--step_2D-50Number of diffusion steps

Web Interface

Launch the interactive Gradio web interface:

python gradio_app.py

Open your browser and navigate to http://localhost:7860 to use the web interface. If running on a server, use the provided public link.

๐ŸŽ“ Training

Data Structure

Training data are currently not available. To train with your own data, follow the structure in FaceLift/data_sample/:

Multi-view Diffusion Data:

data_sample/
โ”œโ”€โ”€ mvdiffusion/
โ”‚   โ”œโ”€โ”€ data_mvdiff_train.txt          # Training data list
โ”‚   โ”œโ”€โ”€ data_mvdiff_val.txt            # Validation data list
โ”‚   โ””โ”€โ”€ sample_000/
โ”‚       โ”œโ”€โ”€ cam_000.png                # Front view (RGBA, 512ร—512)
โ”‚       โ”œโ”€โ”€ cam_001.png                # Front-right view
โ”‚       โ”œโ”€โ”€ cam_002.png                # Right view
โ”‚       โ”œโ”€โ”€ cam_003.png                # Back view
โ”‚       โ”œโ”€โ”€ cam_004.png                # Left view
โ”‚       โ””โ”€โ”€ cam_005.png                # Front-left view

GS-LRM Data:

data_sample/
โ”œโ”€โ”€ gslrm/
โ”‚   โ”œโ”€โ”€ data_gslrm_train.txt           # Training data list
โ”‚   โ”œโ”€โ”€ data_gslrm_val.txt             # Validation data list
โ”‚   โ””โ”€โ”€ sample_000/
โ”‚       โ”œโ”€โ”€ images/
โ”‚       โ”‚   โ”œโ”€โ”€ cam_000.png            # Multi-view images (RGBA, 512ร—512)
โ”‚       โ”‚   โ”œโ”€โ”€ cam_001.png
โ”‚       โ”‚   โ”œโ”€โ”€ ...
โ”‚       โ”‚   โ””โ”€โ”€ cam_031.png            # 32 views total
โ”‚       โ””โ”€โ”€ opencv_cameras.json        # Camera parameters

Multi-view Diffusion Training

accelerate launch --config_file mvdiffusion/node_config/8gpu.yaml \
    train_diffusion.py --config configs/mvdiffusion.yaml

Gaussian Reconstructor Training

Our Gaussian Reconstructor is based on GS-LRM and uses pre-trained weights from Objaverse data.

  • Stage I: 256 resolution on Objaverse - gslrm_pretrain_256.yaml
  • Stage II: 512 resolution on Objaverse - gslrm_pretrain_512.yaml
  • Stage III: 512 resolution on synthetic heads data - gslrm.yaml
torchrun --nproc_per_node 8 --nnodes 1 \
    --rdzv_id ${JOB_UUID} --rdzv_backend c10d --rdzv_endpoint localhost:29500 \
    train_gslrm.py --config configs/gslrm.yaml

๐Ÿ“ Citation

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

@InProceedings{FaceLift,
    author    = {Lyu, Weijie and Zhou, Yi and Yang, Ming-Hsuan and Shu, Zhixin},
    title     = {FaceLift: Learning Generalizable Single Image 3D Face Reconstruction from Synthetic Heads},
    booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
    month     = {October},
    year      = {2025},
    pages     = {12691-12701}
}

๐Ÿ“„ License

Copyright 2025 Adobe Inc.

Codes are licensed under Apache-2.0 License.

Model weights are licensed from Adobe Inc. under the Adobe Research License.

๐Ÿ™ Acknowledgements

This work is built upon Era3D and GS-LRM. We thank the authors for their excellent work.

The code has been reimplemented and the weights retrained. Results may differ slightly from those reported in the paper.