GeoAvatar: Adaptive Geometrical Gaussian Splatting for 3D Head Avatar
SeungJun Moon*, Hah Min Lew*, Seungeun Lee, Ji-Su Kang, Gyeong-Moon Park†
*Equal Contribution, †Corresponding Author
Abstract : Despite recent progress in 3D head avatar generation, balancing identity preservation, i.e., reconstruction, with novel poses and expressions, i.e., animation, remains a challenge. Existing methods struggle to adapt Gaussians to varying geometrical deviations across facial regions, resulting in suboptimal quality. To address this, we propose GeoAvatar, a framework for adaptive geometrical Gaussian Splatting. GeoAvatar leverages Adaptive Pre-allocation Stage (APS), an unsupervised method that segments Gaussians into rigid and flexible sets for adaptive offset regularization. Then, based on mouth anatomy and dynamics, we introduce a novel mouth structure and the part-wise deformation strategy to enhance the animation fidelity of the mouth. Finally, we propose a regularization loss for precise rigging between Gaussians and 3DMM faces. Moreover, we release DynamicFace, a video dataset with highly expressive facial motions. Extensive experiments show the superiority of GeoAvatar compared to state-of-the-art methods in reconstruction and novel animation scenarios.
Our code is heavily based on GaussianAvatars. Since our model is a variation of GaussianAvatars, we adapted its code accordingly.
Cloning the Repository:
git clone https://github.com/seungjun-moon/geoavatar.git --recursive
Create the environment:
conda create --name geoavatar -y python=3.10
conda activate geoavatar
Install PyTorch3D:
conda install -c fvcore -c iopath -c conda-forge fvcore iopath
conda install -c bottler nvidiacub
conda install pytorch3d -c pytorch3d
Install other necessary modules:
pip install -r requirements.txt
Then, download flame2023.pkl from here and place it in ./flame_model/assets/flame.
To request the DynamicFace dataset download link, you should complete the Official Access Request Form and agree to the ethical usage guidelines. Access is granted primarily for academic and non-commercial research purposes. Please use your institutional email for verification.
We provide datasets of 5 actors from DynamicFace and 10 actors from the SplattingAvatar dataset. Our preprocessing is performed using metrical-tracker, but we modify its folder structure to be compatible with the VHAP format used in GaussianAvatars.
The data is organized in the following form:
dataset
├── <id1_name>
├── transformsMetracker
├── canonical_flame_param.npz
├── flame_param # folder with tracked flame parameters
├── transforms_train.json
├── transforms_val.json
├── transforms_test.json
├── view_000 # compatible structure with multi-view dataset
├── images # images folder
├── masks # mask folder
├── <id2_name>
...
The training code will be released later due to Klleon’s policy.
Pre-trained weights can be downloaded here. You can obtain results with the following command:
python render.py \
-m [PATH_TO_PRETRAINED_MODEL] --iteration 180000 \
-t [PATH_TO_DATASET]/transformsMetracker \
--select_camera_id 0 --skip_train --skip_val
For self-reenactment, simply use the same model and dataset. For cross-reenactment, change the source dataset path to the driving video. You can try inference with your own dataset, with the tracking result of VHAP.
@inproceedings{moon2025geoavatar,
title={GeoAvatar: Adaptive Geometrical Gaussian Splatting for 3D Head Avatar},
author={Moon, SeungJun and Lew, Hah Min and Lee, Seungeun and Kang, Ji-Su and Park, Gyeong-Moon},
booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision},
pages={12811--12821},
year={2025}
}