This repository provides the official implementation of SeeLe, a general acceleration framework for the 3D Gaussian Splatting (3DGS) pipeline, specifically designed for resource-constrained mobile devices. Our framework achieves a 2.6Γ speedup and 32.5% model reduction while maintaining superior rendering quality compared to existing methods. On an NVIDIA AGX Orin mobile SoC, SeeLe achieves over 90 FPSβ‘, meeting the real-time requirements for VR applications.
There is a short demo video of our algorithm running on an Nvidia AGX Orin SoC:
seele_demo.mp4
Low resolution due to GitHub size limits. For higher resolution videos, please visit our website.
To clone the repository:
git clone https://github.com/SJTU-MVCLab/SeeLe.git --recursive && cd SeeLeTo install requirements:
conda create -n seele python=3.9
conda activate seele
# Example for CUDA 12.4:
pip3 install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu124
pip3 install -r requirements.txtNote: PyTorch installation varies by system. Please ensure you install the appropriate version for your hardware.
We use datasets from MipNeRF360 and Tank & Temple, which can be downloaded from the authors' official website. The dataset should be organized in the following structure:
dataset
βββ seele
βββ [bicycle|bonsai|counter|train|truck|playroom|drjohnson|...]
βββ images
βββ sparse
This section provides detailed instructions on how to train, cluster, fine-tune, and render the model using our provided scripts. We also provide standalone evaluation scripts for assessing the trained model.
For convenience, you can use the run_all.sh script to automate the entire process from training to rendering in a single command:
bash scripts/run_all.shNote: By default, all scripts will run on an exmaple scene "Counter" from MipNeRF360. If you want to train on other datasets, please modify the datasets variable in the script accordingly.
Instead, you can use the following scripts to run SeeLe step-by-step.
To train the 3D Gaussian Splatting (3DGS) model, use:
bash scripts/run_train.sh seeleOnce training is complete, apply k-means clustering to the trained model with:
bash scripts/generate_cluster.sh seeleAfter clustering, fine-tune the model for better optimization:
bash scripts/run_finetune.sh seeleTo generate the rendered images using the fine-tuned model, run:
bash scripts/run_seele_render.sh seeleAfter training and fine-tuning, you can evaluate the model using the following standalone scripts:
Renders a SeeLe model with optional fine-tuning:
python3 seele_render.py -m <path_to_model> [--load_finetune] [--debug]- With
--load_finetune: Loads the fine-tuned model for improved rendering quality. Otherwise, loads the model before fine-tuning(output fromgenerate_cluster.py). - With
--debug: Prints the execution time per rendering.
Uses CUDA Stream API for efficient memory management, asynchronously loading fine-tuned Gaussian point clouds:
python3 async_seele_render.py -m <path_to_model> [--debug]Interactively preview rendered results in a GUI:
python3 render_video.py -m <path_to_model> --use_gui [--load_seele]- With
--load_seele: Loads the fine-tuned SeeLe model. Otherwise, loads the original model.
To verify the correctness of SeeLe, we provide an example(dataset and checkpoint) for evaluation. You can download it here. This example includes the following key components:
- clusters β The fine-tuned SeeLe model.
- point_cloud β The original 3DGS checkpoint.
You can use this checkpoint to test the pipeline and ensure everything is working correctly.
Our work is largely based on the implementation of 3DGS, with significant modifications and optimizations to improve performance for mobile devices. Our key improvements include:
submodules/seele-gaussian-rasterzationβ Optimized diff_gaussians_splatting with Opti and CR techniques.generate_cluster.pyβ Implements k-means clustering to partition the scene into multiple clusters.finetune.pyβ Fine-tunes each cluster separately and saves the trained models.seele_render.pyβ A modified version ofrender.py, designed to load and render SeeLe models.async_seele_render.pyβ Utilizes CUDA stream API for asynchronous memory optimization across different clusters.render_video.pyβ Uses pyglet to render images in a GUI. The--load_finetuneoption enables SeeLe model rendering.
For more technical details, please refer to our paper.
If you have any questions, feel free to reach out to:
- He Zhu β 2394241800@qq.com
- Xiaotong Huang β hxt0512@sjtu.edu.cn
We appreciate your interest in SeeLe!
If you find this work helpful, please kindly consider citing our paper:
@inproceedings{zhu2026seele,
title={SeeLe: A Unified Acceleration Framework for Real-Time Gaussian Splatting},
author={Zhu, He and Huang, Xiaotong and Liu, Zihan and Lin, Weikai and Liu, Xiaohong and He, Zhezhi and Leng, Jingwen and Guo, Minyi and Feng, Yu},
booktitle={Proceedings of the Computer Vision and Pattern Recognition Conference},
year={2026}
}
