Table of Contents
Please install all dependencies by following the instructions here. You can use anaconda and pip to finish the installation easily. We tested VTGaussian-SLAM on RTX 3090 and RTX 4090 GPUs with Python 3.10, Torch 1.12.1, and CUDA=11.6.
You can build a conda environment called vtgaussian-slam
following the instructions below.
git clone https://github.com/MachinePerceptionLab/VTGaussian-SLAM.git
cd VTGaussian-SLAM
conda create -n vtgaussian-slam python=3.10
conda activate vtgaussian-slam
conda install -c "nvidia/label/cuda-11.6.0" cuda-toolkit
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.6 -c pytorch -c conda-forge
pip install -r requirements.txt
DATAROOT is ./data
by default. Please change the input_folder path in the scene-specific config files if datasets are stored somewhere else on your machine.
Please download the Replica dataset generated by the authors of iMAP into ./data/Replica
folder. Please cite iMAP if you use the dataset.
bash bash_scripts/download_replica.sh # Released by authors of NICE-SLAM
bash bash_scripts/download_tum.sh
Please follow the data downloading procedure on ScanNet website, and extract color/depth frames from the .sens
file using this code.
[Directory structure of ScanNet (click to expand)]
DATAROOT is ./data
by default. If a sequence (sceneXXXX_XX
) is stored in other places, please change the basedir
path in the config file.
DATAROOT
└── scannet
└── scene0000_00
├── color
│ ├── 0.jpg
│ ├── 1.jpg
│ ├── ...
│ └── ...
├── depth
│ ├── 0.png
│ ├── 1.png
│ ├── ...
│ └── ...
├── intrinsic
└── pose
├── 0.txt
├── 1.txt
├── ...
└── ...
Please follow the data downloading and image undistortion procedure on the ScanNet++ website. Additionally, for undistorting the DSLR depth images, we use a variant of the official ScanNet++ processing code from SplaTAM.
To run VTGaussian-SLAM on the room0
scene, please use the following command:
python src/vtgaussian_slam.py configs/replica/room0.py
To run VTGaussian-SLAM on the freiburg1_desk
scene, please use the following command:
python src/vtgaussian_slam.py configs/tum/fr1_config.py
To run VTGaussian-SLAM on the scene0000_00
scene, please use the following command:
python src/vtgaussian_slam.py configs/scannet/scene00_config.py
To run VTGaussian-SLAM on the 2e74812d00
scene, please use the following command:
python src/vtgaussian_slam.py configs/scannetpp/2e_config.py
When running VTGaussian-SLAM using the above commands, we can get the final evaluation results in rendering and tracking. If you want to evaluate it with the saved params_ls.npy
, you can set the eval_mode
in the scene-specific config files to True and run the above commands again.
This project was partially supported by an NVIDIA academic award and a Richard Barber research award.
We adapt codes from some awesome repositories, including 3D Gaussian Splatting, GradSLAM & ConceptFusion, SplaTAM, and Gaussian-SLAM. Thanks for making the code available and for prompt responses to our inquiries regarding the details of their methods.
If you find our code or paper useful, please cite
@InProceedings{Hu2025VTGSSLAM,
title = {VTGaussian-SLAM: RGBD SLAM for Large Scale Scenes with Splatting View-Tied 3D Gaussians},
author = {Hu, Pengchong and Han, Zhizhong},
booktitle = {Proceedings of the 42nd International Conference on Machine Learning},
year = {2025}
}