Giter Club home page Giter Club logo

splatam's Introduction

SplaTAM: Splat, Track & Map 3D Gaussians for Dense RGB-D SLAM

Nikhil Keetha · Jay Karhade · Krishna Murthy Jatavallabhula · Gengshan Yang · Sebastian Scherer
Deva Ramanan · Jonathon Luiten

Logo


Coming Soon: Stay Tuned for Faster, Better and Stronger SplaTAM V2 Update!

Table of Contents
  1. Installation
  2. Online Demo
  3. Downloads
  4. Run
  5. Acknowledgement
  6. Citation
  7. Contact

Installation

First, you have to make sure that you have all dependencies in place. The simplest way is to use anaconda.

You can create an anaconda environment called splatam.

conda env create -f environment.yml
conda activate splatam

Demo

You can SplaTAM your own environment with an iPhone or LiDAR-equipped Apple device by downloading and using Nerf-capture.

Make sure that your iPhone and PC are connected to the same WiFi network, and then run the following command:

bash bash_scripts/online_demo.bash configs/iphone/online_demo.py

On the app, keep clicking send for successive frames, and watch SplaTAM's reconstruction visualizations! Here's a cool example result!

Logo

You can also run offline optimization for your iPhone captures by first capturing a dataset with the following command:

bash bash_scripts/nerfcapture2dataset.bash

Then, perform slam with the following command:

bash bash_scripts/nerfcapture.bash configs/iphone/nerfcapture.py

Downloads

Replica

Download the data as below, and the data is saved into the ./datasets/Replica folder. Note that the Replica data is generated by the authors of iMAP (but hosted by the authors of NICE-SLAM). Please cite iMAP if you use the data.

bash bash_scripts/download_replica.sh

TUM-RGBD

bash bash_scripts/download_tum.sh

DATAROOT is ./data by default. Please change the input_folder path in the scene-specific config files if stored somewhere else on your machine.

ScanNet

Please follow the data downloading procedure on the ScanNet website, and extract color/depth frames from the .sens file using this code.

[Directory structure of ScanNet (click to expand)]

DATAROOT is ./datasets by default. If a sequence (sceneXXXX_XX) is stored in other places, please change the input_folder path in the config file or in the command line.

  DATAROOT
  └── scannet
        └── scene0000_00
            └── frames
                ├── color
                │   ├── 0.jpg
                │   ├── 1.jpg
                │   ├── ...
                │   └── ...
                ├── depth
                │   ├── 0.png
                │   ├── 1.png
                │   ├── ...
                │   └── ...
                ├── intrinsic
                └── pose
                    ├── 0.txt
                    ├── 1.txt
                    ├── ...
                    └── ...

We use the following sequences:

scene0000_00
scene0059_00
scene0106_00
scene0181_00
scene0207_00

ScanNet++

Please follow the data downloading and image undistortion procedure on the ScanNet++ website. We use the following sequences:

8b5caf3398
b20a261fdf

For b20a261fdf, we use the first 360 frames.

Replica-V2

We use the Replica-V2 to evaluate novel view synthesis, we use the pre-generated replica sequences from vMAP.

Run

For running SplaTAM, we recommend using weights and biases for the logging. This can be turned on by setting the wandb flag to True in the configs file. Also make sure to specify the path wandb_folder. If you don't have a wandb account, first create one. Each scene has a config folder, where the input_folder and output paths need to be specified. Below, we show some example run commands for one scene from each dataset.

Replica

To run SplaTAM on the room0 scene, run the following command.

python scripts/slam.py configs/Replica/slam.py

After reconstruction, the trajectory error will be evaluated along with the rendering metrics. For other scenes, modify the configs/Replica/slam.py file.

TUM-RGBD

To run SplaTAM on the freiburg1_desk scene, run the following command.

python run.py configs/TUM_RGBD/slam.py

After reconstruction, the trajectory error will be evaluated along with the rendering metrics. For other scenes, modify the configs/TUM_RGBD/slam.py file.

ScanNet

To run SplaTAM on the scene0000_00 scene, run the following command.

python run.py configs/ScanNet/slam.py

After reconstruction, the trajectory error will be evaluated along with the rendering metrics. For other scenes, modify the configs/ScanNet/slam.py file.

Acknowledgement

We thank the authors of the following repositories for their open-source code:

Citation

If you find our paper and code useful, please cite it as:

@article{keetha2023splatam,
    author    = {Keetha, Nikhil and Karhade, Jay and Jatavallabhula, Krishna Murthy and Yang, Gengshan and Scherer, Sebastian and Ramanan, Deva and Luiten, Jonathan}
    title     = {SplaTAM: Splat, Track & Map 3D Gaussians for Dense RGB-D SLAM},
    journal   = {arXiv},
    year      = {2023},
}

Developers

splatam's People

Contributors

nik-v9 avatar jaykarhade avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.