Iris Zheng, Guojun Tang, Alexander Doronin, Paul Teal, Fang-Lue Zhang
Victoria University of Wellington
Paper | ICLR 2026 | Video | Poster | Dataset
SSD-GS.Camera.Ready.Video.mp4
Clone the repository:
git clone https://github.com/irisfreesiri/SSD-GS.git
cd SSD-GSCreate a new conda environment:
conda create --name ssd-gs python=3.10 pytorch==2.4.1 torchvision==0.19.1 pytorch-cuda=12.4 cuda-toolkit=12.4 cuda-cudart=12.4 -c pytorch -c "nvidia/label/cuda-12.4.0"
conda activate ssd-gs
pip install ninja # speedup torch cuda extensions compilation
pip install -r requirements.txtThis project uses three datasets in the original paper. Please download the datasets, unzip them, and organize them following the directory structure below:
SSD-GS/
βββ data/
β βββ Real_NRHints/
β β βββ Cat/
β β βββ CatSmall/
β β βββ ...
β βββ Synthetic_GS3/
β β βββ AnisoMetal/
β β βββ Drums/
β β βββ ...
β βββ Synthetic_SSS-GS/
β βββ bunny_small/
β βββ candle_small/
β βββ ...
We provide both batch scripts for full experiments and standalone scripts for flexible usage.
The full pipeline includes:
- Training: optimize Gaussian parameters and decomposition modules
- Rendering: generate novel view images
- Evaluation: compute quantitative metrics
Each batch script runs training + rendering + evaluation automatically.
env["TORCH_CUDA_ARCH_LIST"] = "8.6" # RTX 3090 = 8.6(You can find the correct compute capability for NVIDIA GPUs here: https://developer.nvidia.com/cuda-gpus)
python batch_script_real_nrhints.pypython batch_script_synthetic_gs3.pypython batch_script_synthetic_sssgs.pyTo train a single scene, run:
python train.py -s <path_to_scene> -m <output_model_path> --use_nerual_phasefunc --evalpython train.py \
-s data/Real_NRHints/Cat \
-m output/real_nrhints_Cat_20260430 \
--data_device cpu \
--view_num 2000 \
--iterations 100000 \
--use_nerual_phasefunc \
--cam_opt \
--pl_opt \
--evalThe following arguments are commonly used for training:
| Argument | Type | Description |
|---|---|---|
-s |
str | Path to the input scene dataset |
-m |
str | Path to save the trained model |
--iterations |
int | Total number of training iterations |
--use_nerual_phasefunc |
flag | Enable the neural phase-function module |
--cam_opt |
flag | Enable camera-pose optimization, mainly for real-world scenes |
--pl_opt |
flag | Enable point-light optimization, mainly for real-world scenes |
--eval |
flag | Enable evaluation split during training |
After training, render novel views from a trained model:
python render.py -m <output_model_path> --iteration <iteration> --use_nerual_phasefunc --opt_posepython render.py \
-m output/real_nrhints_Cat_20260430 \
--iteration 100000 \
--opt_pose \
--use_nerual_phasefuncThe following arguments are commonly used for rendering:
| Argument | Type | Description |
|---|---|---|
-m |
str | Path to the trained model directory |
--iteration |
int | Model iteration used for rendering |
--opt_pose |
flag | Use optimized camera poses during rendering, mainly for real-world scenes |
--use_nerual_phasefunc |
flag | Enable the neural phase-function module during rendering |
After rendering, compute quantitative metrics:
python metrics.py -m <output_model_path>python metrics.py -m output/real_nrhints_Cat_20260430The evaluation script computes image-quality metrics for the rendered views, such as PSNR, SSIM, and LPIPS, depending on the available outputs.
The repository is under active development.
Upcoming updates include:
Code ReleaseβDataset ReleaseβTraining & Rendering InstructionsβTeaser / Demo Videoβ
We have intensively borrow codes from gaussian splatting, gs^3, and gsplat. We also use tiny-cuda-nn for it's efficient MLP implementation. Many thanks to the authors for sharing their codes.