GaussianSplatting.jl

Gaussian Splatting algorithm in pure Julia.

Requirements

Install

Add GaussianSplatting.jl package:

] add https://github.com/JuliaNeuralGraphics/GaussianSplatting.jl.git

Usage

GaussianSplatting.jl comes with a GUI application to train & view the gaussians.

  1. Add necessary packages:

    ] add AMDGPU # for AMD GPU
    ] add CUDA   # for Nvidia GPU
    ] add Metal  # for Apple GPU
  2. Start Julia with at least 2 threads (training runs on a background thread to keep the UI responsive):

    julia -t auto

    -t auto is worth preferring: dataset images, masks & depth priors are read from disk with prefetching, additional threads make sure they overlap with training steps.

  3. Run:

    julia> using AMDGPU; kab = ROCBackend()  # for AMD GPU
    julia> using CUDA; kab = CUDABackend()   # for Nvidia GPU
    julia> using Metal; kab = MetalBackend() # for Apple GPU
    julia> GaussianSplatting.app(kab)

Hyperparameters

The Open Dataset dialog exposes a handful of the most useful options as checkboxes; the rest of OptimizationParams (learning rates, loss weights, warm-up iterations) is read from an optional .toml file next to them.

Use Save... to write out the values a run is about to use, and Load... to train another dataset with exactly those - which is what makes a reconstruction reproducible once the session that produced it is gone.

Fields that the file omits keep their default, so it only needs to list what a run changes:

use_bilateral_grid = true
bilateral_grid_size = [16, 16, 8]
depth_loss_weight = 2.0
depth_loss_mode = "ssi"

The same file works outside the GUI:

julia> opt_params = GaussianSplatting.load_opt_params("params.toml")
julia> GaussianSplatting.save_opt_params("params.toml", opt_params)

References