Skip to content

Latest commit

 

History

193 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Abstract

Dynamic scene reconstruction converts videos into compact, renderable 4D models. The dominant approach, Native 4D Gaussian Splatting is fast and effective but often suffers from Gaussian overgrowth, high VRAM use, large checkpoints, slow rendering, and fragile pruning or densification choices. OMNI-4DGS studies these quality-efficiency tradeoffs by jointly evaluating representation, rendering, and training decisions. We ablate covariance type, RGB versus 4DSH, rendering strategy, pruning schedules, ESS, dropout, and motion regularization across quality and efficiency metrics. Our best tested quality-compact preset improves visual quality while keeping model size compact, reaching 34.42 PSNR/29k Gaussians on bouncingballs and 31.89 PSNR/81k on trex, improving the quality-compactness tradeoff for practical 4DGS deployment.

Bouncing Balls ⚾

Fixed: No USplat/Prune/ESS/Dropout, Sort, 10k.

Sort Sort-Free
Ellipsoid
Spherical

TRex 🐉

Fixed: No USplat/Prune/ESS/Dropout, Sort, 20k.

SH(3) RGB
Ellipsoid
Spherical

MOG'D - Dataset


5 x Moving Cameras

5 x Still Cameras

Conclusion

We presented OMNI-4DGS, a unified framework for fast, compact dynamic reconstruction built on Native 4D Gaussian Splatting, combining architectural choices from recent work into a single ablation study. Efficient 4DGS requires increasing expressiveness per Gaussian while controlling primitive growth: anisotropic covariance and SH(3) improve reconstruction quality; interleaved pruning and densification reduce Gaussian count, serialized model size, and VRAM, and a final one-shot prune further improves FPS at deployment. Dropout and the adapted sort-free renderer were not consistently beneficial across scenes. The aniso · SH(3) · sort · ESS · interleaved prune · dropout configuration achieved the best tested quality-compactness tradeoff on both trex and bouncingballs.

Repository layout

Path Purpose
train.py Train or resume a 4D Gaussian checkpoint.
render.py Render videos or image frames from a checkpoint.
interactive_viewer.py Open a real-time CUDA viewer for a checkpoint.
batch_train.py Generate, run, and evaluate ablation sweeps.
compress.py Simple checkpoint compression and round-trip validation.
compression_postprocess.py Universal post-training compression, pruning, evaluation, and diagnostics.
mobile_export.py Export a Mobile-GS/NVQ compressed payload.
mobile_benchmark.py Benchmark a Mobile-GS payload for size, FPS, and optional quality.
html_export.py Build a local HTML overview of rendered ablation outputs.
ablation_script.sh Batch-render ablation checkpoints into consistently named videos.
scripts/ Dataset conversion, FPS profiling, rerun helpers, and utility scripts.
configs/dnerf/ Standard D-NeRF scene configs.
configs/dnerf_ablation/ Clean baseline configs intended for ablation sweeps.

Setup and script guide

Information on how to run each script is in the Guide File.

Reproducibility notes

For experiments intended for comparison:

  1. Start with configs in configs/dnerf_ablation/.
  2. Use explicit --matrix-preset and --axes choices.
  3. Set --seed or --seed-offset.
  4. Keep --test_iterations and --save_iterations consistent across rows.
  5. Record the exact command and generated configs.
  6. Prefer chkpnt_best.pth for final render/benchmark comparisons.
  7. Use the same render mode, resolution, split, and temporal-mask settings when comparing FPS or visual quality.

Code Visualization

Feature Matrix

Feature 4DGS-1K / 1000FPS Instant4D MobileGS DropoutGS USplat4D Code reference
Gaussians
4D
Current-only mode. GaussianModel.__init__, training guard, render guard
Gaussians
3D
Not supported as a train/render mode. --gaussian_dim choices=[4], GaussianModel guard
Gaussians
Quaternion
Existing / reused. get_rotation, build_rotation_4d
Gaussians
Rotation Matrix
Derived only, not optimized as parameters. build_rotation, build_rotation_4d
Gaussians
Isotropic
Existing / adapted. DEFAULT_ISOTROPY, GaussianModel isotropic flag, get_scaling, _apply_isotropic_parameterization, Instant4D override
Gaussians
Anisotropic
Existing / default. DEFAULT_ISOTROPY, get_scaling, build_scaling_rotation, build_scaling_rotation_4d
Gaussians
RGB
Existing / preset-driven. RGB preset, RGB2SH, create_from_pcd, Instant4D override
Gaussians
SH(1)
Existing / MobileGS-style. SH1 preset, _first_order_features, MobileGS preset, capture_mobile_payload
Gaussians
SH(3)
Existing / native 4DGS appearance. sh_degree = 3, SH3 preset, get_max_sh_channels, eval_shfs_4d
Init
Random
Existing. readNerfSyntheticInfo, create_from_pcd
Init
MegaSAM
Not found in repo.
Compress
MLP / Distillation
Implemented for MobileGS sort-free runs. MobileOpacityPhiNN, _load_mobilegs_teacher, distillation setup, distillation loss, MobileGS preset
Compress
K-means / NVQ
Implemented. _run_kmeans, nvq_encode_tensor, mobile_export.py
Compress
Spatial GPCC
Implemented. voxelize, compress_gpcc, capture_mobile_payload
Train
Uncertainty
Re-implemented for USplat4D. compute_uncertainty_single_frame, compute_uncertainty_all_frames, rebuild_usplat_state
Train
Batch in Time
Existing / global training support. DataLoader batch_size, batch loop
Train
Voxelization
Implemented in MobileGS compression and USplat graphing. voxelize, build_graph voxel candidates
Prune
Contribution
Implemented. render gaussian_scores, compute_spatio_temporal_variation_score, generic_contribution_scores, prune_generic_contribution
Prune
Gradient Loss
Existing base density-control path. add_densification_stats, densify_and_prune, training densification call
Prune
Spatio-Temporal
Re-implemented. compute_spatio_temporal_variation_score, prune_with_spatio_temporal_score, scheduled ST pruning
Prune
Opacity
Existing for sorted rendering; disabled for sort-free MobileGS. thresh_opa_prune, densify_and_prune, sort-free opacity-prune guard
Prune
One-shot
Implemented as pruning option. final_prune_from_iter, densify_then_prune_once registry, final ST prune
Prune
Scheduled
Implemented as pruning option / paper preset. interleaved_prune_densify registry, scheduled pruning loop
Prune
Densify
Existing base Gaussian densification. densify_and_split, densify_and_clone, training densification call
Prune
Edge-guided Split
Re-implemented DropoutGS ESS-style split. build_ess_registry, compute_edge_guided_split_mask, split_points_by_mask, ESS schedule
Prune
Dropout
Re-implemented DropoutGS RDR. random_dropout_prob, lambda_rdr, build_dropout_registry, render dropout mask, RDR loss
Render
Visibility Mask
Re-implemented 4DGS-1K-style export/inference mask. build_temporal_visibility_filter, attach_temporal_visibility_filter, _select_temporal_active_mask, mobile_export
Render
Sort-based
Existing sorted alpha blending. sorted render path, duplicateWithKeys, SortPairs
Render
Sort-free
Heavily modified MobileGS-style OIT path. sort_free_render, MobileGS opacity/phi render, duplicateWithTileKeys, OIT kernels

References

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages