Live demo · Gaussian splatting

100 photos in.
A 3D scene out.

Gaussian splatting rebuilds a scene from ordinary photos as a hundred thousand soft, colored blobs. Watch one train live on a GPU in about half a minute, then grab the result and spin it around in your browser.

Train a scene

Drag the finished chest to orbit it, or press Train from scratch and watch random blobs become the photo on the right. One GPU trains one scene at a time, so if someone else is training, you will watch theirs.

gsplatOpen in new tab

How it works

A splat is a 3D Gaussian: a position, a stretch, a rotation, a color and an opacity. Render enough of them, adjust each one until the renders match the photos, and they become the scene.

Photos with poses

One hundred photos of a CC0 treasure chest, each tagged with the exact position and angle of the camera that took it. Twelve more are held out to score the result.

Rasterize and compare

Each step projects every Gaussian into one photo's camera, blends them into an image on the GPU, and measures how far that image is from the photo.

Nudge, split, prune

Gradients move, stretch, rotate and recolor every Gaussian. Ones that need more detail split in two, and ones that fade out are pruned, until about 100,000 remain.

Getting started

Deploy your own in three commands

Clone the example, log in, and run the deploy script. Chalk builds the CUDA image, provisions an L4, and prints a URL that serves this exact demo, with a scene already trained. The first build takes about eight minutes; after that, code changes roll out in a few minutes.

The training loop is plain PyTorch around gsplat's rasterizer, about 250 lines. Swap in your own posed photos and the same code reconstructs them.

chalk-ai/gaussian-splatting
git clone https://github.com/chalk-ai/gaussian-splatting
cd gaussian-splatting

# Or export CHALK_CLIENT_ID and CHALK_CLIENT_SECRET.
chalk login

# Builds a CUDA image with gsplat, provisions an L4, trains a scene, prints the URL.
./deploy.py --gpu nvidia-l4

What Chalk handles

The optimization is the interesting part. Everything around it is the part Chalk does for you.

Half a minute per scene

Seven thousand optimization steps take about 36 seconds on one NVIDIA L4, and reach 38 dB PSNR on views the model never trained on.

A GPU behind a web page

Ask for gpu="nvidia-l4" and Chalk provisions the node, builds the CUDA image, and gives the trainer an HTTPS URL that streams progress over Server-Sent Events.

Prebuilt CUDA kernels

The image pins Python, torch and CUDA to match gsplat's prebuilt wheels, so nothing compiles at build or start time. No Dockerfile, no nvcc.

Data alongside code

The 20 MB of training views ship with the deploy as a mounted volume, so changing the scene is a redeploy, not an image rebuild.

Runs in your cloud

Captures of your products, stores or sites stay in your Chalk environment. Nothing passes through a third-party API.

Open source

The renderer that made the training set, the trainer, the server and the page are Apache-2.0 on GitHub. Point it at your own posed photos.

Train on GPUs in your cloud

3D reconstruction, fine-tunes, or any training job that should finish while you watch. Talk to an engineer about running it on Chalk.