3DGA: Topology-Aware 3D Gaussian Head Avatars with Barycentric Parameterization and Layered Densification
A novel approach for high-quality 3D head reconstruction and animation, combining FLAME parametric model with 3D Gaussian Splatting technology.
Our method achieves high-quality 3D head reconstruction and animation across different subjects:
![]() Subject 074 |
![]() Subject 104 |
![]() Subject 218 |
![]() Subject 253 |
![]() Subject 264 |
![]() Subject 302 |
![]() Subject 304 |
![]() Subject 306 |
All code and data will be publicly released upon paper acceptance.
Our approach combines the advantages of parametric FLAME models with 3D Gaussian Splatting for high-quality head reconstruction:
- Input Processing: Multi-view images and FLAME parameters
- Barycentric Binding: Gaussian points are positioned using barycentric coordinates on FLAME mesh
- Hierarchical Density Controller: Region-aware point density control based on facial importance
- Optimization: Joint optimization of Gaussian parameters and FLAME coefficients
- Rendering: Real-time rendering using 3D Gaussian Splatting
3DGA-Head/
├── 📁 scene/ # Scene representation and models
│ ├── flame_gaussian_model.py # FLAME-integrated Gaussian model (main model)
│ ├── gaussian_model.py # Base Gaussian splatting model
│ ├── dataset_readers.py # Data loading and preprocessing
│ ├── cameras.py # Camera models and utilities
│ ├── colmap_loader.py # COLMAP data loader
│ └── __init__.py # Scene initialization and management
├── 📁 utils/ # Utility functions and algorithms
│ ├── smart_density_controller.py # Hierarchical density control algorithm
│ ├── advanced_loss.py # Advanced loss functions
│ ├── loss_utils.py # Basic loss utilities
│ ├── mesh_utils.py # Mesh processing utilities
│ ├── viewer_utils.py # Visualization utilities
│ ├── graphics_utils.py # Graphics and rendering utilities
│ ├── camera_utils.py # Camera transformation utilities
│ ├── sh_utils.py # Spherical harmonics utilities
│ ├── pytorch3d_load_obj.py # 3D object loading
│ └── ... # Other utility modules
├── 📁 gaussian_renderer/ # 3D Gaussian Splatting renderer
│ ├── __init__.py # Rendering pipeline and utilities
│ └── network_gui.py # Network GUI interface
├── 📁 mesh_renderer/ # FLAME mesh renderer
│ └── __init__.py # Mesh rendering implementation
├── 📁 flame_model/ # FLAME parametric head model
│ ├── flame.py # FLAME model implementation
│ ├── lbs.py # Linear blend skinning
│ └── assets/ # FLAME model assets and weights
├── 📁 lpipsPyTorch/ # LPIPS loss implementation
│ ├── __init__.py # LPIPS interface
│ └── modules/ # LPIPS network modules
├── 📁 arguments/ # Command-line argument parsing
│ └── __init__.py # Training and evaluation parameters
├── 📁 media/ # Documentation and demo materials
│ ├── Method.pdf # Method overview diagram
│ └── *-renders.mp4 # Demo videos for different subjects
├── 🐍 train.py # Training script (main entry point)
├── 🐍 local_viewer.py # Local visualization tool
├── 🐍 remote_viewer.py # Remote visualization for training
├── 🐍 metrics.py # Evaluation metrics
├── 🐍 fps_benchmark_dataset.py # Performance benchmarking
├── 📄 README.md # Project documentation
└── 📄 .gitignore # Git ignore rules
python train.py --source_path <data_path> --model_path <output_path> --iterations 600000
# Local viewer
python local_viewer.py --point-path <model_path>/point_cloud/iteration_<iteration>/point_cloud.ply
# Remote viewer (for real-time training visualization)
python remote_viewer.py --host 127.0.0.1 --port 6009
- PyTorch
- CUDA (for GPU acceleration)
- 3D Gaussian Splatting rasterization
- FLAME model assets
We thank the authors of GaussianAvatars for their pioneering work in combining FLAME models with 3D Gaussian Splatting. Our method builds upon their foundational contributions to achieve improved head reconstruction quality through barycentric coordinate representation and hierarchical density control.