HUGINN β€” OMG4 Optimized Minimal 4D Gaussian Splatting

Part of the ANIMA Perception Suite by Robot Flow Labs.

Paper

OMG4: Optimized Minimal 4D Gaussian Splatting (Oct 2025) Minseo Lee, Byeonghyeon Lee, Lucas Yunkyu Lee, Eunsoo Lee, Sangmin Kim, Seunghyeon Song, Joo Chan Lee, Jong Hwan Ko, et al. Paper | Project Page

Architecture

Three-stage progressive pruning pipeline for compact dynamic 3D scenes:

  1. Gaussian Sampling β€” Importance-based retention (opacity x spatial variance x temporal variance)
  2. Gaussian Pruning β€” Opacity thresholding + spatial overlap removal
  3. Gaussian Merging β€” Weighted fusion of similar primitives
  4. SVQ Compression β€” Sub-Vector Quantization with multi-codebook encoding (20.7x compression)

Renderer: gsplat 1.5.3 CUDA kernels (563 FPS @ 50K Gaussians, 800x800)

D-NeRF Benchmark Results

Scene Test PSNR Test SSIM Gaussians (post-prune)
hellwarrior 27.49 dB 0.838 7,944
mutant 23.29 dB 0.910 ~100
standup 21.11 dB 0.921 ~40K
trex 20.90 dB 0.924 ~3K
jumpingjacks 19.93 dB 0.920 ~16K
hook 19.71 dB 0.858 19,182
bouncingballs 19.54 dB 0.743 ~1K
lego 14.67 dB 0.540 ~88K

Primary model: hellwarrior (best quality, 27.49 dB -- near paper target of 28 dB)

Exported Formats

Format File Size Use Case
PyTorch (.pth) pytorch/huginn_v3.pth 1.9 MB Training, fine-tuning
SafeTensors pytorch/huginn_v3.safetensors 1.9 MB Fast loading, safe
ONNX (projection) onnx/huginn_projection_v3.onnx <1 MB Cross-platform inference
ONNX (SVQ decoder) onnx/huginn_decoder_v3.onnx <1 MB Compressed inference
TensorRT FP16 tensorrt/huginn_projection_v3_fp16.trt 0.5 MB Edge (Jetson/L4)
TensorRT FP32 tensorrt/huginn_projection_v3_fp32.trt 0.5 MB Full precision
Per-scene checkpoints scenes/{scene}_best.pth varies Scene-specific models

Usage

import torch
from safetensors.torch import load_file

# Load Gaussian attributes
state = load_file("pytorch/huginn_v3.safetensors")
means = state["means"]        # (N, 3)
quats = state["quats"]        # (N, 4) -- rotation quaternions
scales = state["scales"]      # (N, 3) -- scale factors
sh_coeffs = state["sh_coeffs"]     # (N, 16, 3) -- SH appearance
opacities = state["opacities"]     # (N,)

# Render with gsplat
import gsplat
render_colors, render_alphas, info = gsplat.rasterization(
    means=means, quats=quats, scales=scales,
    opacities=opacities, colors=sh_coeffs,
    viewmats=viewmat, Ks=K, width=800, height=800, sh_degree=3,
)

Training

  • Hardware: NVIDIA L4 (23GB VRAM) x 1 GPU
  • Framework: PyTorch 2.10 + CUDA 12.8 + gsplat 1.5.3
  • Dataset: D-NeRF (8 dynamic scenes, 800x800 native resolution)
  • Gaussians: 3M initial, pruned per scene
  • Iterations: 30K per scene
  • Parallel: 4 scenes simultaneously on 1 GPU
  • Total time: ~6 hours for all 8 scenes
  • Config: See configs/train_l4_max.yaml

SVQ Compression

Sub-Vector Quantization achieves 20.7x compression (4.8% of original size):

  • Position codebook: 256 entries
  • Covariance codebook: 256 entries
  • Appearance codebook: 256 entries
  • Opacity+time codebook: 256 entries

License

Apache 2.0 -- Robot Flow Labs / AIFLOW LABS LIMITED

Built with ANIMA by Robot Flow Labs

Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading

Paper for ilessio-aiflowlab/project_huginn