GaussianSpa: An “Optimizing-Sparsifying” Simplification Framework for Compact and High-Quality 3D Gaussian Splatting (CVPR 2025)
Yangming Zhang*, Wenqi Jia*, Wei Niu, Miao Yin
GaussianSpa formulates simplification as an optimization problem and introduces an “optimizing-sparsifying” solution that alternately solves two independent sub-problems, gradually imposing strong sparsity onto the Gaussians in the training process. GaussianSpa significantly reduces the number of Gaussians while maintaining high rendering quality.Feb 2025: Results evaluated by metrics.py across all scenes are available now.
Mar 2025: We apply our "sparisifying-optimizing" framework to vanilla 3DGS and Mini-Splatting. Release the codes and scripts.
The repository contains submodules which are not compatible with newest 3DGS , thus please check it out with
# HTTPS
git clone https://github.com/noodle-lab/GaussianSpa.git --recursiveconda create -n gaussian_spa python=3.7
conda activate gaussian_spa
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 -f https://download.pytorch.org/whl/torch_stable.html
pip install -r requirements.txtDownload datasets Mip-360 and Tanks&Temples and Deep Blending. Then put the scenes to Dataset folder for running scripts perfectly. The expected folder structure is:
GaussianSpa
├──train_opacity.sh
├──train_imp_score.sh
└── ...
Dataset
├── drjohnson
├── playroom
├── bicycle
├── bonsai
├── counter
├── flowers
├── garden
├── kitchen
├── room
├── stump
├── treehill
├── train
└── truck
We provide two different criteria to sparisify auxiliary variable Z (details please refer our paper 5.2. Generality of GaussianSpa): opacity in 3DGS and importance score proposed by Mini-Splatting.
# Metric opacity for vanilla 3DGS
chmod +x train_opa.sh
bash train_opa.shCommand Line Arguments for train_op.py
Flag to enable optimizing and spasifying
Ratios for spasifying/pruning points at the sparisifying stop iteration.
Interval to perform the “sparsifying” step every fixed number of iterations
# Metric opacity for Mini-Splatting
chmod +x train_opacity.sh
bash train_opacity.sh
# Metric importance score for Mini-Splatting
chmod +x train_imp_score.sh
bash train_imp_score.shCommand Line Arguments for train_opacity.py or train_imp_score.py
Flag to enable optimizing and spasifying
Ratios for pruning points at the simplifying iteration1.
Ratios for spasifying/pruning points at the sparisifying stop iteration.
Interval to perform the “sparsifying” step every fixed number of iterations
Other arguments are similar to offical 3DGS and Mini-Splatting.
Recommend Arguments Setting for Evaluation
| Scenes | Method | Pruning_ratio1 | Pruning_ratio2 |
|---|---|---|---|
| drjohnson | imp_score | 75 | 50 |
| playroom | opacity | 50 | 77 |
| bicycle | imp_score | 50 | 72 |
| bonsai | imp_score | 50 | 80 |
| counter | opacity | 60 | 50 |
| flowers | opacity | 50 | 70 |
| garden | imp_score | 60 | 50 |
| kitchen | opacity | 40 | 80 |
| room | opacity | 50 | 80 |
| stump | imp_score | 65 | 70 |
| treehill | opacity | 40 | 75 |
| train | opacity | 50 | 80 |
| trunk | opacity | 62 | 80 |
Consider citing our paper if you find its insights and contributions somewhat valuable.
@misc{zhang2024gaussianspa,
title={GaussianSpa: An "Optimizing-Sparsifying" Simplification Framework for Compact and High-Quality 3D Gaussian Splatting},
author={Yangming Zhang and Wenqi Jia and Wei Niu and Miao Yin},
year={2024},
eprint={2411.06019},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2411.06019},
}