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
๐ฅNews๐ฅ Check out our new work FaceCam for portrait video camera control!
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 checkpointscheckpoints/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:
| Argument | Short | Default | Description |
|---|---|---|---|
--input_dir | -i | examples/ | Input directory containing images |
--output_dir | -o | outputs/ | Output directory for results |
--auto_crop | - | True | Automatically crop faces |
--seed | - | 4 | Random seed for reproducible results |
--guidance_scale_2D | - | 3.0 | Guidance scale for multi-view generation |
--step_2D | - | 50 | Number 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.