← Open Source
xg-chu

GAGAvatar

[NeurIPS 2024] Generalizable and Animatable Gaussian Head Avatar.

Model DevelopmentArchitecturePython
Open on GitHub
Momentum
+0stars in 24 hours0.0%
601
Stars
60
Forks
+3
This week
4
Contributors
Created 2024-09-26 · Updated 2026-10-13 · #16292 today
Top developers

xg-chu/GAGAvatar is ranked 16,292 with 601 stars.

Same-category comparison

xg-chu/GAGAvatar is ranked 16,292 among these 8 peers; thousandbrainsproject/tbp.monty is ranked 16,291.

Same-category comparison
NameRankMetrics
hongfz16/EVA3D16,282
Language:
Python
Stars:
601
Forks:
39
Description:
[ICLR 2023 Spotlight] EVA3D: Compositional 3D Human Generation from 2D Image Collections.
isarandi/metrabs16,283
Language:
Python
Stars:
601
Forks:
86
Description:
Estimate absolute 3D human poses from RGB images.
isht7/pytorch-deeplab-resnet16,284
Language:
Python
Stars:
601
Forks:
115
Description:
DeepLab resnet v2 model in pytorch.
thousandbrainsproject/tbp.monty16,291
Language:
Python
Stars:
601
Forks:
351
Description:
Monty is a sensorimotor learning framework based on the thousand brains theory of the neocortex.
100/Cranium16,293
Language:
C
Stars:
600
Forks:
56
Description:
🤖 A portable, header-only, artificial neural network library written in C99.
HarryVolek/PyTorch_Speaker_Verification16,295
Language:
Python
Stars:
600
Forks:
163
Description:
PyTorch implementation of "Generalized End-to-End Loss for Speaker Verification" by Wan, Li et al.
JiahuiYu/wdsr_ntire201816,296
Language:
Python
Stars:
600
Forks:
119
Description:
Code of our winning entry to NTIRE super-resolution challenge, CVPR 2018.
RaphaelMeudec/deblur-gan16,297
Language:
Python
Stars:
600
Forks:
247
Description:
Keras implementation of "DeblurGAN: Blind Motion Deblurring Using Conditional Adversarial Networks".
Key parameters and specifications
Key parameters and specifications
ParameterValue
LanguagePython
CategoryModel Development
SubcategoryArchitecture
Keywords3D
Stars601
Forks60
Contributors4
Created date2024-09-26
Updated date2026-10-13
Stars in 1 day0
Stars in 7 days3
Rank16,292
Previous rank16,082
Rank change-210
7-day stars rank7,367
Previous 7-day stars rank7,400
7-day stars rank change33
Total stars rank16,777
Previous total stars rank16,751
Total stars rank change-26
CountryJapan
README summary

🤩 NeurIPS 2024 🤩 pre-trained model and quick start materials and will release it within a week. We changed the number of channels so that 3D Gaussians carry 32-dim features. We changed the package name to avoid conflict with the original Gaussian splatting. Prepare resources Prepare resources with: When GAGAvatar is installed as a package, the asset manifest can be used instead: This downloads only assets with explicit upstream sources and verifies known sizes and SHA-256 hashes. FLAME and

tracker resources are represented in the manifest but are not downloaded automatically because they have separate setup or license requirements. Also prepare resources for GAGAvatar_track using: Quick Start Guide Driven by another **image**: Driven by a tracked **video**: Driven by a tracked **image_lmdb**: To test the inference speed, refer to the function in . To test your own images online, refer to in . To test your own driving sequences (videos/images), refer to GAGAvatar_track and demo sequences to

build your own driving sequence. Training Guide You can use the pre-trained model directly, but if you need to retrain on your data: Step 1: Building the image LMDB Build yourself. All the images should be cropped as inference. (Refer to line 218 in ) Dump images using , there is also an API for building lmdb: , payload should be tensor with (3, 512, 512), in [0, 255]. 015252 is video id (used when sampling), 99 is frame id (0 is

the first frame, other frames id can be discontinuous). Step 2: Track the image LMDB Using in , you should get a . Step 3: Split the dataset Build yourself, it should contain the keys in and . Step 4: Modify the config and train Citation If you find our work useful in your research, please consider citing: Acknowledgements Some part of our work is built based on FLAME, StyleMatte, EMICA and VGGHead. The GAGAvatar Logo is designed by Caihong Ning. We also

thank the following projects for sharing their great work. **GPAvatar**: **FLAME**: **StyleMatte**: **EMICA**: **VGGHead**:

Frequently asked questions

How many stars and forks are recorded?

xg-chu/GAGAvatar has 601 stars and 60 forks.

What is the repository rank?

xg-chu/GAGAvatar is ranked 16,292.

What language and category are recorded?

xg-chu/GAGAvatar has 601 stars, uses Python and belongs to Model Development.

Which repository is closest in rank?

xg-chu/GAGAvatar is compared with thousandbrainsproject/tbp.monty, ranked 16,291 with 601 stars.

README

[![](https://img.shields.io/badge/ArXiv-PDF-red)](https://arxiv.org/abs/2410.07971)   
[![](https://img.shields.io/badge/Project-Page-blue)](https://xg-chu.site/project_gagavatar/)   
[![](https://img.shields.io/badge/Youtube-Video-red)](https://www.youtube.com/watch?v=9244ZgOl4Xk)   
[![](https://img.shields.io/badge/Data-Tracker-red)](https://github.com/xg-chu/GAGAvatar_track/)   





[Xuangeng Chu](https://xg-chu.site)1 
[Tatsuya Harada](https://www.mi.t.u-tokyo.ac.jp/harada/)1,2
  

1The University of Tokyo,
2RIKEN AIP

🤩 NeurIPS 2024 🤩

     ![drawing](./demos/teaser.gif) 



    GAGAvatar reconstructs controllable 3D head avatars from single images.

  

    GAGAvatar achieves one-shot 3DGS-based head reconstruction and ⚡️real-time⚡️ reenactment.
  

    🔥 More results can be found in our [Project Page](https://xg-chu.github.io/project_gagavatar/). 🔥

Installation

Clone the project

git clone --recurse-submodules git@github.com:xg-chu/GAGAvatar.git
cd GAGAvatar

Build environment

conda env create -f environment.yml
conda activate GAGAvatar

Install the 3DGS renderer

What’s the difference between this version and the original 3DGS?

  • We changed the number of channels so that 3D Gaussians carry 32-dim features.
  • We changed the package name to avoid conflict with the original Gaussian splatting.
git clone --recurse-submodules git@github.com:xg-chu/diff-gaussian-rasterization.git
pip install ./diff-gaussian-rasterization
rm -rf ./diff-gaussian-rasterization

Prepare resources

Prepare resources with:

bash ./build_resources.sh

When GAGAvatar is installed as a package, the asset manifest can be used instead:

gagavatar-assets download --root assets

This downloads only assets with explicit upstream sources and verifies known sizes and SHA-256 hashes. FLAME and tracker resources are represented in the manifest but are not downloaded automatically because they have separate setup or license requirements.

Also prepare resources for GAGAvatar_track using:

cd core/libs/GAGAvatar_track
bash ./build_resources.sh

Quick Start Guide

Driven by another image:

# This will track the images online, which is slow.
python inference.py -d ./demos/examples/2.jpg -i ./demos/examples/1.jpg

Driven by a tracked video:

python inference.py -d ./demos/drivers/obama -i ./demos/examples/1.jpg

Driven by a tracked image_lmdb:

python inference.py -d ./demos/drivers/vfhq_demo -i ./demos/examples/1.jpg

To test the inference speed, refer to the speed_test() function in inference.py.

To test your own images online, refer to lines 52-55 in inference.py.

To test your own driving sequences (videos/images), refer to GAGAvatar_track and demo sequences to build your own driving sequence.

Training Guide

You can use the pre-trained model directly, but if you need to retrain on your data:

Step 1: Building the image LMDB

Build img_lmdb yourself.

All the images should be cropped as inference. (Refer to line 218 in core/libs/GAGAvatar_track/engines/engine_core.py)

Dump images using core/libs/utils_lmdb.py, there is also an API for building lmdb: dump(key_name, payload), payload should be tensor with (3, 512, 512), in [0, 255].

015252 is video id (used when sampling), 99 is frame id (0 is the first frame, other frames id can be discontinuous).

img_lmdb:
    '015252_99' : image payload

Step 2: Track the image LMDB

Using track_lmdb.py in GAGAvatar_track, you should get a optim.pkl.

optim.pkl:
- dict_keys(['000000_0', …])
    - "000000_0": dict_keys(['bbox', 'shapecode', 'expcode', 'posecode', 'eyecode', 'transform_matrix'])

Step 3: Split the dataset

Build dataset.json yourself, it should contain the keys in img_lmdb and optim.pkl.

dataset.json: {
    "train": ["000000_0", "000000_5", ..., '001384_654'],
    "val":   ["015209_0", ..., "015218_7"], 
    "test":  ["015203_0", ..., "015252_139"]
}

Step 4: Modify the config and train

python train.py --config gaga --dataset vfhq

Citation

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

@inproceedings{
    chu2024gagavatar,
    title={Generalizable and Animatable Gaussian Head Avatar},
    author={Xuangeng Chu and Tatsuya Harada},
    booktitle={The Thirty-eighth Annual Conference on Neural Information Processing Systems},
    year={2024},
    url={https://openreview.net/forum?id=gVM2AZ5xA6}
}

Acknowledgements

Some part of our work is built based on FLAME, StyleMatte, EMICA and VGGHead. The GAGAvatar Logo is designed by Caihong Ning. We also thank the following projects for sharing their great work.

Nearby in the ranking
Similar items