Home

Awesome

RAIN-GS: Relaxing Accurate Initialization Constraint for 3D Gaussian Splatting

<a href="https://arxiv.org/abs/2403.09413"><img src="https://img.shields.io/badge/arXiv-2403.09413-%23B31B1B"></a> <a href="https://ku-cvlab.github.io/RAIN-GS/ "><img src="https://img.shields.io/badge/Project%20Page-online-brightgreen"></a> <br>

This is our official implementation of the paper "Relaxing Accurate Initialization Constraint for 3D Gaussian Splatting"!

by Jaewoo Jung<sup>:umbrella:</sup>, Jisang Han<sup>:umbrella:</sup>, Honggyu An<sup>:umbrella:</sup>, Jiwon Kang<sup>:umbrella:</sup>, Seonghoon Park<sup>:umbrella:</sup>, Seungryong Kim<sup></sup>

:umbrella:: Equal Contribution <br> †: Corresponding Author

News

We found that the current version of our code has minor bugs including the rendering code 😢. <br> We will fix everything as soon as possible.

Introduction

<br> We introduce a novel optimization strategy (RAIN-GS) for 3D Gaussian Splatting!

We show that our simple yet effective strategy consisting of sparse-large-variance (SLV) random initialization, progressive Gaussian low-pass filter control, and the Adaptive Bound-Expanding Split (ABE-Split) algorithm robustly guides 3D Gaussians to model the scene even when starting from random point cloud.

❗️Update (2024/05/29): We have updated our paper and codes which significantly improve our previous results! <br> 😴 TL;DR for our update is as follows:

For further details and visualization results, please check out our updated paper and our new project page.

Installation

We implement RAIN-GS above the official implementation of 3D Gaussian Splatting. <br> For environmental setup, we kindly guide you to follow the original requirements of 3DGS.

Training

To train 3D Gaussians Splatting with our updated RAIN-GS novel strategy, all you need to do is:

python train.py -s {dataset_path} --exp_name {exp_name} --eval --ours_new 

You can train from various initializations by adding --train_from ['random', 'reprojection', 'cluster', 'noisy_sfm'] (random is default)<br><br> To train with Mip-NeRF360 dataset, you can add argument --images images_4 for outdoor scenes and --images images_2 for indoor scenes to modify the resolution of the input images.

<details> <summary>Toggle to find more details for training from various initializations.</summary>
python train.py -s {dataset_path} --exp_name {exp_name} --eval --ours_new --train_from 'random'
python train.py -s {dataset_path} --exp_name {exp_name} --eval --ours_new --train_from 'noisy_sfm'
</details>

To train 3D Gaussian Splatting with our original RAIN-GS, all you need to do is:

python train.py -s {dataset_path} --exp_name {exp_name} --eval --ours

For dense-small-variance (DSV) random initialization (used in the original 3D Gaussian Splatting), you can simply run with the following command:

python train.py -s {dataset_path} --exp_name {exp_name} --eval --paper_random

For SfM (Structure-from-Motion) initialization (used in the original 3D Gaussian Splatting), you can simply run with the following command:

python train.py -s {dataset_path} --exp_name {exp_name} --eval

For Noisy SfM initialization (used in the original 3D Gaussian Splatting), you can simply run with the following command:

python train.py -s {dataset_path} --exp_name {exp_name} --eval --train_from 'noisy_sfm'

Acknowledgement

We would like to acknowledge the contributions of 3D Gaussian Splatting for open-sourcing the official codes for 3DGS!

Citation

If you find our work helpful, please cite our work as:

@article{jung2024relaxing,
  title={Relaxing Accurate Initialization Constraint for 3D Gaussian Splatting},
  author={Jung, Jaewoo and Han, Jisang and An, Honggyu and Kang, Jiwon and Park, Seonghoon and Kim, Seungryong},
  journal={arXiv preprint arXiv:2403.09413},
  year={2024}
}