mirror of
https://github.com/graphdeco-inria/gaussian-splatting
synced 2025-03-31 15:50:00 +00:00
1 - add configs to reproduce MipNerf360 results
2 - add instructions to build the code on ubuntu 3- add video and names
This commit is contained in:
parent
d518a8df8a
commit
7a4611defd
81
README.md
81
README.md
@ -1,5 +1,41 @@
|
||||
# 3D Gaussian Splatting as Markov Chain Monte Carlo
|
||||
|
||||
[](https://ubc-vision.github.io/3dgs-mcmc/)
|
||||
[](https://arxiv.org/abs/2404.09591)
|
||||
|
||||
<span class="author-block">
|
||||
<a href="https://shakibakh.github.io/">Shakiba Kheradmand</a>,
|
||||
</span>
|
||||
<span class="author-block">
|
||||
<a href="http://drebain.com/"> Daniel Rebain</a>,
|
||||
</span>
|
||||
<span class="author-block">
|
||||
<a href="https://hippogriff.github.io/"> Gopal Sharma</a>,
|
||||
</span>
|
||||
<span class="author-block">
|
||||
<a href="https://wsunid.github.io/"> Weiwei Sun</a>,
|
||||
</span>
|
||||
<span class="author-block">
|
||||
<a href="https://scholar.google.com/citations?user=1iJfq7YAAAAJ&hl=en"> Yang-Che Tseng</a>,
|
||||
</span>
|
||||
<span class="author-block">
|
||||
<a href="http://www.hossamisack.com/">Hossam Isack</a>,
|
||||
</span>
|
||||
<span class="author-block">
|
||||
<a href="https://abhishekkar.info/">Abhishek Kar</a>,
|
||||
</span>
|
||||
<span class="author-block">
|
||||
<a href="https://taiya.github.io/">Andrea Tagliasacchi</a>,
|
||||
</span>
|
||||
<span class="author-block">
|
||||
<a href="https://www.cs.ubc.ca/~kmyi/">Kwang Moo Yi</a>
|
||||
</span>
|
||||
|
||||
<hr>
|
||||
|
||||
<video controls>
|
||||
<source src="docs/resources/training_rand_compare/bicycle_both-rand.mp4" type="video/mp4">
|
||||
</video>
|
||||
|
||||
<section class="section" id="BibTeX">
|
||||
<div class="container is-max-desktop content">
|
||||
@ -15,12 +51,42 @@
|
||||
|
||||
|
||||
|
||||
## How to install
|
||||
## How to Install
|
||||
|
||||
Please refer to [Original 3DGS code base](https://github.com/graphdeco-inria/gaussian-splatting) for installation instructions. Make sure to reinstall diff-gaussian-rasterization with the following command on an available 3DGS environment as this library has been modified:
|
||||
```
|
||||
pip install submodules/diff-gaussian-rasterization
|
||||
```
|
||||
This project is built on top of the [Original 3DGS code base](https://github.com/graphdeco-inria/gaussian-splatting) and has been tested only on Ubuntu 20.04. If you encounter any issues, please refer to the [Original 3DGS code base](https://github.com/graphdeco-inria/gaussian-splatting) for installation instructions.
|
||||
|
||||
### Installation Steps
|
||||
|
||||
1. **Clone the Repository:**
|
||||
```sh
|
||||
git clone --recursive git@github.com:ubc-vision/3dgs-mcmc.git
|
||||
cd 3dgs-mcmc
|
||||
```
|
||||
2. **Set Up the Conda Environment:**
|
||||
```sh
|
||||
conda create -y -n 3dgs-mcmc-env python=3.8
|
||||
conda activate 3dgs-mcmc-env
|
||||
```
|
||||
3. **Install Dependencies:**
|
||||
```sh
|
||||
pip install plyfile tqdm torch==1.13.1+cu117 torchvision==0.14.1+cu117 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu117
|
||||
conda install cudatoolkit-dev=11.7 -c conda-forge
|
||||
```
|
||||
4. **Install Submodules:**
|
||||
```sh
|
||||
CUDA_HOME=PATH/TO/CONDA/envs/3dgs-mcmc-env/pkgs/cuda-toolkit/ pip install submodules/diff-gaussian-rasterization submodules/simple-knn/
|
||||
```
|
||||
### Common Issues:
|
||||
1. **Access Error During Cloning:**
|
||||
If you encounter an access error when cloning the repository, ensure you have your SSH key set up correctly. Alternatively, you can clone using HTTPS.
|
||||
2. **Running diff-gaussian-rasterization Fails:**
|
||||
You may need to change the compiler options in the setup.py file to run both the original and this code. Update the setup.py with the following extra_compile_args:
|
||||
```sh
|
||||
extra_compile_args={"nvcc": ["-Xcompiler", "-fno-gnu-unique", "-I" + os.path.join(os.path.dirname(os.path.abspath(__file__)), "third_party/glm/")]}
|
||||
```
|
||||
Afterwards, you need to reinstall diff-gaussian-rasterization. This is mentioned in [3DGS-issue-#41](https://github.com/graphdeco-inria/gaussian-splatting/issues/41).
|
||||
|
||||
By following these steps, you should be able to install the project and reproduce the results. If you encounter any issues, refer to the original 3DGS code base for further guidance.
|
||||
|
||||
## How to run
|
||||
Running code is similar to the [Original 3DGS code base](https://github.com/graphdeco-inria/gaussian-splatting) with the following differences:
|
||||
@ -30,6 +96,11 @@ Running code is similar to the [Original 3DGS code base](https://github.com/grap
|
||||
- You need to specify the noise learning rate. This is performed using --noise_lr argument. For all the experiments in the paper, we use 5e5.
|
||||
- You need to specify the initialization type. This is performed using --init_type argument. Options are random (to initialize randomly) or sfm (to initialize using a pointcloud).
|
||||
|
||||
## How to Reproduce the Results in the Paper
|
||||
```sh
|
||||
python train.py --source_path PATH/TO/Shape --config configs/shape.json --eval
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -53,7 +53,7 @@ class ModelParams(ParamGroup):
|
||||
self._resolution = -1
|
||||
self._white_background = False
|
||||
self.data_device = "cuda"
|
||||
self.eval = True
|
||||
self.eval = False
|
||||
self.cap_max = -1
|
||||
self.init_type = "random"
|
||||
super().__init__(parser, "Loading Parameters", sentinel)
|
||||
|
4
configs/bicycle.json
Normal file
4
configs/bicycle.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"resolution": 4,
|
||||
"cap_max": 5900000
|
||||
}
|
4
configs/bonsai.json
Normal file
4
configs/bonsai.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"resolution": 2,
|
||||
"cap_max": 1300000
|
||||
}
|
4
configs/counter.json
Normal file
4
configs/counter.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"resolution": 2,
|
||||
"cap_max": 1200000
|
||||
}
|
4
configs/garden.json
Normal file
4
configs/garden.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"resolution": 4,
|
||||
"cap_max": 5200000
|
||||
}
|
4
configs/kitchen.json
Normal file
4
configs/kitchen.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"resolution": 2,
|
||||
"cap_max": 1800000
|
||||
}
|
4
configs/room.json
Normal file
4
configs/room.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"resolution": 2,
|
||||
"cap_max": 1500000
|
||||
}
|
4
configs/stump.json
Normal file
4
configs/stump.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"resolution": 4,
|
||||
"cap_max": 4750000
|
||||
}
|
@ -4,13 +4,12 @@ channels:
|
||||
- conda-forge
|
||||
- defaults
|
||||
dependencies:
|
||||
- cudatoolkit=11.6
|
||||
- cudatoolkit=11.7
|
||||
- plyfile
|
||||
- python=3.7.13
|
||||
- pip=22.3.1
|
||||
- pytorch=1.12.1
|
||||
- torchaudio=0.12.1
|
||||
- torchvision=0.13.1
|
||||
- python=3.8
|
||||
- pytorch=1.13.1
|
||||
- torchaudio=0.13.1
|
||||
- torchvision=0.14.1
|
||||
- tqdm
|
||||
- pip:
|
||||
- submodules/diff-gaussian-rasterization
|
||||
|
17
train.py
17
train.py
@ -10,6 +10,7 @@
|
||||
#
|
||||
|
||||
import os
|
||||
import json
|
||||
import torch
|
||||
from random import randint
|
||||
from utils.loss_utils import l1_loss, ssim
|
||||
@ -203,14 +204,18 @@ def training_report(tb_writer, iteration, Ll1, loss, l1_loss, elapsed, testing_i
|
||||
tb_writer.add_scalar('total_points', scene.gaussians.get_xyz.shape[0], iteration)
|
||||
torch.cuda.empty_cache()
|
||||
|
||||
def load_config(config_file):
|
||||
with open(config_file, 'r') as file:
|
||||
config = json.load(file)
|
||||
return config
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Set up command line argument parser
|
||||
parser = ArgumentParser(description="Training script parameters")
|
||||
lp = ModelParams(parser)
|
||||
op = OptimizationParams(parser)
|
||||
pp = PipelineParams(parser)
|
||||
parser.add_argument('--ip', type=str, default="127.0.0.1")
|
||||
parser.add_argument('--port', type=int, default=6009)
|
||||
parser.add_argument('--config', type=str, default=None)
|
||||
parser.add_argument('--debug_from', type=int, default=-1)
|
||||
parser.add_argument('--detect_anomaly', action='store_true', default=False)
|
||||
parser.add_argument("--test_iterations", nargs="+", type=int, default=[7_000, 30_000])
|
||||
@ -219,6 +224,14 @@ if __name__ == "__main__":
|
||||
parser.add_argument("--checkpoint_iterations", nargs="+", type=int, default=[])
|
||||
parser.add_argument("--start_checkpoint", type=str, default = None)
|
||||
args = parser.parse_args(sys.argv[1:])
|
||||
|
||||
if args.config is not None:
|
||||
# Load the configuration file
|
||||
config = load_config(args.config)
|
||||
# Set the configuration parameters on args, if they are not already set by command line arguments
|
||||
for key, value in config.items():
|
||||
setattr(args, key, value)
|
||||
|
||||
args.save_iterations.append(args.iterations)
|
||||
|
||||
print("Optimizing " + args.model_path)
|
||||
|
Loading…
Reference in New Issue
Block a user