Skip to content

XiaoQiangSHI/3DGA-Head

Repository files navigation

3DGA: Topology-Aware 3D Gaussian Head Avatars with Barycentric Parameterization and Layered Densification

Project Page

A novel approach for high-quality 3D head reconstruction and animation, combining FLAME parametric model with 3D Gaussian Splatting technology.

Method Overview

Method Overview

Demo Results

Our method achieves high-quality 3D head reconstruction and animation across different subjects:

Subject 074
Subject 074
Subject 104
Subject 104
Subject 218
Subject 218
Subject 253
Subject 253
Subject 264
Subject 264
Subject 302
Subject 302
Subject 304
Subject 304
Subject 306
Subject 306

📢 Code Release

All code and data will be publicly released upon paper acceptance.

Method Pipeline

Our approach combines the advantages of parametric FLAME models with 3D Gaussian Splatting for high-quality head reconstruction:

  1. Input Processing: Multi-view images and FLAME parameters
  2. Barycentric Binding: Gaussian points are positioned using barycentric coordinates on FLAME mesh
  3. Hierarchical Density Controller: Region-aware point density control based on facial importance
  4. Optimization: Joint optimization of Gaussian parameters and FLAME coefficients
  5. Rendering: Real-time rendering using 3D Gaussian Splatting

Project Structure

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

Getting Started

Training

python train.py --source_path <data_path> --model_path <output_path> --iterations 600000

Visualization

# 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

Dependencies

  • PyTorch
  • CUDA (for GPU acceleration)
  • 3D Gaussian Splatting rasterization
  • FLAME model assets

Acknowledgement

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages