Downloads · 30 days
0
mnmly/zipsplat-mlx
zipsplat-mlx is a image-to-3d model from mnmly. Use it for the image-to-3d task on the model card, and read the license before you ship it in a product. It is set up for mlx. The card lists the license as cc-by-nc-4.0.
Format conversion of the ZipSplat zipsplat-da3g-252p checkpoint for mlx-swift, used by mlx-swift-ZipSplat.
Downloads · 30 days
0
Access
Public
Updated Aug 21, 2026
Repo size
2.9 GB
Likes
0
Public
Click a slice to open those files.
.safetensors2.9 GB · 100%
From the Hugging Face model README
Format conversion of the ZipSplat zipsplat-da3g-252p
checkpoint for mlx-swift, used by
mlx-swift-ZipSplat.
This is not a new model. It is the original checkpoint re-serialised so it can be loaded on Apple Silicon without PyTorch. All credit for the model belongs to the original authors.
ZipSplat: Fewer Gaussians, Better Splats — Alexander Veicht, Sunghwan Hong, Dániel Baráth, Marc Pollefeys (ETH Zürich / Microsoft).
CC BY-NC 4.0 — non-commercial use only. https://creativecommons.org/licenses/by-nc/4.0/
Inherited from the original weights, which carry it because the checkpoint is initialised from DA3-Giant (CC BY-NC 4.0) and trained on DL3DV-10K (CC BY-NC 4.0). The ZipSplat code is Apache-2.0; the weights are not. This conversion is a derivative and carries the same terms.
zipsplat-da3g-252p.tar (5.79 GB, fp32 PyTorch) → zipsplat-da3g-252p-f16.safetensors
(2.90 GB, fp16). 907 tensors, 1.4477 B parameters, verified against the reference model
structure with 0 missing and 0 unexpected keys. Three mechanical changes, no retraining and
no architectural modification:
patch_embed.*, cls_token and pos_embed are
nested under an embeddings. prefix, matching the module tree in
mlx-swift-da3.0,2,3,1), as MLX
convolutions are channels-last.Reproduce with
Scripts/convert_weights.py.
The port was checked against the PyTorch reference at three levels:
| check | result |
|---|---|
| per-stage activations (patch embed → backbone → fuse → head) | within fp16 tolerance |
end-to-end .ply, every Gaussian parameter | worst field mean-rel 0.043, all corr ≥ 0.9996 |
| novel views rendered through gsplat's CUDA rasteriser | mean PSNR 46.10 dB, worst 38.23 dB |
For scale, the model's own eval PSNR against ground truth is 21.77 dB, so the conversion's deviation sits about 24 dB below the model's own error.
import MLXZipSplat
let session = try ZipSplatSession(weights: weightsURL)
session.loadViews(images)
let gaussians = session.gaussians(compression: 1.0)[0]
try gaussians.writePLY(to: outputURL)
See mlx-swift-ZipSplat for the CLI and the SwiftUI viewer.