File size: 2,856 Bytes
9dcf42c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
---
license: apache-2.0
base_model: TencentARC/FreeSplatter
pipeline_tag: image-to-3d
library_name: gguf
tags:
  - gguf
  - ggml
  - gaussian-splatting
  - 3d-reconstruction
  - free-splatter.cpp
  - pose-free
---

# free-splatter.cpp — GGUF weights

GGUF conversions of [TencentARC/FreeSplatter](https://github.com/TencentARC/FreeSplatter)
for **[free-splatter.cpp](https://github.com/localai-org/free-splatter.cpp)**, a small
C/C++ ([ggml](https://github.com/ggml-org/ggml)) inference engine that runs the
FreeSplatter neural-network front-half on CPU or a Vulkan GPU — **no camera poses,
no Python**.

Given N uncalibrated images it returns, **for every input pixel**, a 3D Gaussian
(position · spherical-harmonic colour · opacity · scale · rotation) that a
Gaussian-splatting viewer can render. The rasterizer and PnP pose solver are out
of scope — these weights cover the patch tokenizer → multi-view transformer →
per-pixel Gaussian head.

## Files

| file | variant | precision | size | notes |
|---|---|---|---|---|
| `freesplatter-scene-f16.gguf` | scene | f16 | ~596 MB | **recommended**; 2 overlapping views of a scene |
| `freesplatter-scene-f32.gguf` | scene | f32 | ~1.2 GB | full precision (reference / CPU) |
| `freesplatter-object-f16.gguf` | object | f16 | ~596 MB | 3–4 views around one object |

All variants share the same transformer backbone; they differ only in the head
config (`gaussian_channels`, `sh_residual`, `use_2dgs`) and what they were trained
on. The GGUF carries those as `free-splatter.*` KV metadata, so the engine
configures itself from the file.

## Usage

```sh
# build the engine (see the repo README), then:
free_splatter-cli --device vulkan --splat scene.splat \
  freesplatter-scene-f16.gguf view1.jpg view2.jpg
```

Each view is center-cropped and resized to 512×512. The output `.splat` (antimatter15
format) opens in the bundled WebGL viewer or any Gaussian-splatting viewer; pass
`--out result.f32` instead for the raw `[N, 512, 512, gaussian_channels]` float32
Gaussian tensor. There is also a drop-photos-in-the-browser web app and a
multi-scene demo-video renderer — see the project repo.

## How these were made

Converted with [`scripts/convert.py`](https://github.com/localai-org/free-splatter.cpp/blob/master/scripts/convert.py)
directly from the upstream FreeSplatter `.safetensors` checkpoints (needs only
`torch` + `safetensors` + `gguf`). The converter maps the `transformer.*` weights
of pieces 1–3 and fails loudly on any unmapped or missing tensor — no weight is
silently dropped.

## License & attribution

Apache-2.0. These are derivative weights of
[TencentARC/FreeSplatter](https://github.com/TencentARC/FreeSplatter) (Apache-2.0);
all credit for the model goes to the FreeSplatter authors. The GGUF packaging and
the inference engine are part of free-splatter.cpp.