wild-gaussians / README.md
jkulhanek's picture
Update README.md
3d14b13 verified
---
license: mit
---
<p align="center">
<h1 align="center">WildGaussians: 3D Gaussian Splatting in the Wild</h1>
<p align="center">
<a href="https://jkulhanek.com/">Jonas Kulhanek</a>
·
<a href="https://pengsongyou.github.io/">Songyou Peng</a>
·
<a href="https://cmp.felk.cvut.cz/~kukelova/">Zuzana Kukelova</a>
·
<a href="https://people.inf.ethz.ch/marc.pollefeys/">Marc Pollefeys</a>
·
<a href="https://tsattler.github.io/">Torsten Sattler</a>
</p>
<h3 align="center"><a href="https://arxiv.org/pdf/2407.08447">📄 Paper</a> | <a href="https://wild-gaussians.github.io/">🌐 Project Page</a> | <a href="https://github.com/jkulhanek/wild-gaussians">🖥 Code</a></a></h3>
</p>
<p align="center">
<table>
<tr>
<td width="10%"></td>
<td width="40.8%">
<img width="100%" alt="WildGaussians model appearance" src="https://github.com/jkulhanek/wild-gaussians/raw/main/.assets/cover-trevi.webp" />
</td>
<td width="34.4%">
<img width="100%" alt="WildGaussians remove occluders" src="https://github.com/jkulhanek/wild-gaussians/raw/main/.assets/cover-onthego.webp" />
</td>
<td width="10%"></td>
</tr>
</table>
</p>
<p align="justify">
We introduce WildGaussians, a novel approach to handle occlusions and appearance changes with 3DGS.
By leveraging robust DINO features and integrating an appearance modeling module within 3DGS, our method achieves state-of-the-art results.
We demonstrate that WildGaussians matches the real-time rendering speed of 3DGS while surpassing both 3DGS and NeRF baselines in handling in-the-wild data, all within a simple architectural framework.
</p>
<br>
## Model Details
- **Developed by:** CTU in Prague, ETH Zurich
- **License:** MIT
- **Repository:** https://github.com/jkulhanek/wild-gaussians
- **Web:** https://wild-gaussians.github.io
- **Paper:** https://arxiv.org/pdf/2407.08447
## Installation
We offer two ways to install the method: local installation (through a conda environment) and installation from [NerfBaselines](https://jkulhanek.com/nerfbaselines), where multiple backends (conda,docker,apptainer) can be selected.
### Install from NerfBaselines (recommended)
The easiest way to install WildGaussians is by using [NerfBaselines](https://jkulhanek.com/nerfbaselines).
First (if not already done), install NerfBaselines by running:
```bash
conda create -n nb python=3.11
conda activate nb
pip install nerfbaselines>=1.0.1
```
WildGaussians is then installed by running:
```bash
nerfbaselines install-method --spec https://raw.githubusercontent.com/jkulhanek/wild-gaussians/main/wildgaussians/wildgaussians_spec.py
```
### Local installation
Clone the repository and create a `python == 3.11` Anaconda environment with CUDA toolkit 11.8 installed using
```bash
git clone git@github.com:jkulhanek/wild-gaussians.git
cd wild-gaussians
conda create -y -n wg python=3.11
conda activate wg
conda install -y --override-channels -c nvidia/label/cuda-11.8.0 cuda-toolkit
conda env config vars set NERFBASELINES_BACKEND=python
pip install --upgrade pip
pip install -r requirements.txt
pip install nerfbaselines>=1.0.1
pip install -e ./submodules/diff-gaussian-rasterization ./submodules/simple-knn
pip install -e .
```
## Checkpoints, predictions, and data
The checkpoints and predictions are available online at [https://huggingface.co/jkulhanek/wild-gaussians/tree/main](https://huggingface.co/jkulhanek/wild-gaussians/tree/main):
<ul>
<li><a href="https://huggingface.co/jkulhanek/wild-gaussians/resolve/main/phototourism/trevi-fountain.zip?download=true">Photo Tourism/Trevi Fountain</a></li>
<li><a href="https://huggingface.co/jkulhanek/wild-gaussians/resolve/main/phototourism/sacre-coeur.zip?download=true">Photo Tourism/Sacre Coeur</a></li>
<li><a href="https://huggingface.co/jkulhanek/wild-gaussians/resolve/main/phototourism/brandenburg-gate.zip?download=true">Photo Tourism/Brandenburg Gate</a></li>
<br>
<li><a href="https://huggingface.co/jkulhanek/wild-gaussians/resolve/main/nerfonthego/fountain.zip?download=true">NeRF On-the-go/Fountain</a></li>
<li><a href="https://huggingface.co/jkulhanek/wild-gaussians/resolve/main/nerfonthego/mountain.zip?download=true">NeRF On-the-go/Mountain</a></li>
<li><a href="https://huggingface.co/jkulhanek/wild-gaussians/resolve/main/nerfonthego/corner.zip?download=true">NeRF On-the-go/Corner</a></li>
<li><a href="https://huggingface.co/jkulhanek/wild-gaussians/resolve/main/nerfonthego/patio.zip?download=true">NeRF On-the-go/Patio</a></li>
<li><a href="https://huggingface.co/jkulhanek/wild-gaussians/resolve/main/nerfonthego/spot.zip?download=true">NeRF On-the-go/Spot</a></li>
<li><a href="https://huggingface.co/jkulhanek/wild-gaussians/resolve/main/nerfonthego/patio-high.zip?download=true">NeRF On-the-go/Patio High</a></li>
</ul>
In order to train/evaluate on the NeRF On-the-go dataset, please download the undistorted version
from the following link:
[https://huggingface.co/datasets/jkulhanek/nerfonthego-wg/tree/main](https://huggingface.co/datasets/jkulhanek/nerfonthego-wg/tree/main)
## Interactive viewer
To start the viewer and explore the trained models, run one of the following:
```bash
# Photo Tourism
nerfbaselines viewer --checkpoint https://huggingface.co/jkulhanek/wild-gaussians/resolve/main/phototourism/trevi-fountain.zip/checkpoint --data external://phototourism/trevi-fountain
nerfbaselines viewer --checkpoint https://huggingface.co/jkulhanek/wild-gaussians/resolve/main/phototourism/sacre-coeur.zip/checkpoint --data external://phototourism/sacre-coeur
nerfbaselines viewer --checkpoint https://huggingface.co/jkulhanek/wild-gaussians/resolve/main/phototourism/brandenburg-gate.zip/checkpoint --data external://phototourism/brandenburg-gate
# NeRF on-the-go
# NOTE: Optionally attach `--data {path to data}` to load the dataset (recommended)
nerfbaselines viewer --checkpoint https://huggingface.co/jkulhanek/wild-gaussians/resolve/main/nerfonthego/fountain.zip/checkpoint
nerfbaselines viewer --checkpoint https://huggingface.co/jkulhanek/wild-gaussians/resolve/main/nerfonthego/mountain.zip/checkpoint
nerfbaselines viewer --checkpoint https://huggingface.co/jkulhanek/wild-gaussians/resolve/main/nerfonthego/corner.zip/checkpoint
nerfbaselines viewer --checkpoint https://huggingface.co/jkulhanek/wild-gaussians/resolve/main/nerfonthego/patio.zip/checkpoint
nerfbaselines viewer --checkpoint https://huggingface.co/jkulhanek/wild-gaussians/resolve/main/nerfonthego/spot.zip/checkpoint
nerfbaselines viewer --checkpoint https://huggingface.co/jkulhanek/wild-gaussians/resolve/main/nerfonthego/patio-high.zip/checkpoint
```
## Training
To start the training on the Photo Tourism dataset, run one of following commands:
```bash
# Photo Tourism
nerfbaselines train --method wildgaussians --data external://phototourism/trevi-fountain
nerfbaselines train --method wildgaussians --data external://phototourism/sacre-coeur
nerfbaselines train --method wildgaussians --data external://phototourism/brandenburg-gate
# NeRF on-the-go
nerfbaselines train --method wildgaussians --data {path to data}
```
The training will also generate output artifacts containing the **test set predictions**, **checkpoint**, and **tensorboard logs**.
## Rendering videos
To render a video on a trajectory (e.g., generated from the interactive viewer), run:
```bash
nerfbaselines render --checkpoint {checkpoint} --trajectory {trajectory file}
```
## Concurrent works
There are several concurrent works that also aim to extend 3DGS to handle in-the-wild data:
<ul>
<li>Wild-GS: Real-Time Novel View Synthesis from Unconstrained Photo Collections</li>
<li>Gaussian in the Wild: 3D Gaussian Splatting for Unconstrained Image Collections</li>
<li>SpotlessSplats: Ignoring Distractors in 3D Gaussian Splatting</li>
<li>SWAG: Splatting in the Wild images with Appearance-conditioned Gaussians</li>
<li>WE-GS: An In-the-wild Efficient 3D Gaussian Representation for Unconstrained Photo Collections</li>
</ul>
</p>
</section>
## Acknowledgements
We would like to thank Weining Ren for his help with the NeRF On-the-go dataset and code and Tobias Fischer and Xi Wang for fruitful discussions.
This work was supported by the Czech Science Foundation (GAČR) EXPRO (grant no. 23-07973X)
and by the Ministry of Education, Youth and Sports of the Czech Republic through the e-INFRA CZ (ID:90254).
The renderer is built on [3DGS](https://github.com/graphdeco-inria/gaussian-splatting) and [Mip-Splatting](https://niujinshuchong.github.io/mip-splatting/).
Please follow the license of 3DGS and Mip-Splatting. We thank all the authors for their great work and released code.
## Citation
If you find our code or paper useful, please cite:
```bibtex
@article{kulhanek2024wildgaussians,
title={WildGaussians: 3D Gaussian Splatting in the Wild},
author={Kulhanek, Jonas and Peng, Songyou and Kukelova, Zuzana and Pollefeys, Marc and Sattler, Torsten},
journal={arXiv},
year={2024}
}
```