Skip to content

SNU-VGILab/FreeTimeGSPlusPlus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FreeTimeGS++: Secrets of Dynamic Gaussian
Splatting and Their Principles

Paper arXiv Project Page BibTeX

1 Seoul National University   2 POSTECH

Lucas Yunkyu Lee1,2,*, Soonho Kim1,*, Youngwook Kim1, Sangmin Kim1, Jaesik Park1,†

* Equal contribution. Corresponding author.

Requirements

FreeTimeGS++ currently targets Python 3.12 and CUDA 12.8. The repository also assumes standard system tools such as ffmpeg and native build tooling for Python extensions. See Dockerfile, flake.nix, and uv.lock for the reference system and Python environment definitions.

Installation

uv is the recommended environment manager.

This repository intentionally does not declare gsplat as an automatic Python dependency. If you want to run the training, initialization, or rendering pipeline, you must obtain and install gsplat separately from its upstream project under the Apache-2.0 license.

This release is validated against gsplat==1.5.3. In particular, the relocation path uses gsplat private strategy helpers, so using a newer or older version is not recommended unless you re-validate compatibility yourself.

git clone https://github.com/yklcs/FreeTimeGSPlusPlus.git
cd FreeTimeGSPlusPlus

uv sync --group with-torch
uv pip install "gsplat==1.5.3"

If you need a different installation method, follow the upstream instructions at https://github.com/nerfstudio-project/gsplat, but keep the version pinned to 1.5.3 for this release unless you have re-validated the code against another version. Most core commands in this repository require gsplat to be present in the environment.

Data Setup

The released configs assume that the input datasets are available under /data/dynerf and /data/selfcap. The DyNeRF scenes can be obtained from Neural 3D Video, and the SelfCap scenes can be obtained from SelfCap-Dataset. We recommend keeping the downloaded datasets read-only and mapping them into that layout with symbolic links, so that the released configs can be used without editing input paths. In the released configs, the other paths such as _extracted, _colmap, _memmap, and _points are generated artifacts and can remain unchanged.

ln -s /path/to/dynerf_root /data/dynerf
ln -s /path/to/selfcap_root /data/selfcap

The expected directory layout is:

  • /data/dynerf/<scene>/...
  • /data/selfcap/{bike,corgi,hair}/...

Main Usage

The main entry point of this repository is ./run.

./run {dataset_name} {configs_path} {output_path} [options]

dataset_name currently supports dynerf and selfcap.

For each dataset, the released configs are grouped as:

  • configs/<dataset>/ftgs: FreeTimeGS baseline
  • configs/<dataset>/ftgspp: final FreeTimeGS++ preset
  • configs/<dataset>/ablation/...: additional analysis presets

The simplest way to test the full pipeline is:

./run dynerf configs/dynerf/ftgs _run/dynerf --scenes coffee_martini

To run the final FreeTimeGS++ preset instead of the baseline, use:

./run dynerf configs/dynerf/ftgspp _run/ftgspp_dynerf --scenes coffee_martini

This runs the default pipeline from extract to render. The script also supports partial execution with --from and --to, repeated runs with -n, and statistics-only aggregation with --stats.

./run dynerf configs/dynerf/ftgs _run/dynerf --scenes coffee_martini --from train --to render
./run dynerf configs/dynerf/ftgs _run/dynerf_repeat --scenes coffee_martini -n 3
./run dynerf configs/dynerf/ftgs _run/dynerf_repeat --scenes coffee_martini -n 3 --stats

The explicit module-by-module commands used in scripts/run_dynerf and scripts/run_selfcap remain available when step-by-step execution or debugging is needed.

UFM Precomputation

If you want to use the UFM-based initialization variant (init.temporal_motion_adapted = true), dense correspondence flow from UFM must be precomputed before ftgspp.init. For a single scene, this can be done with:

uv run -m ftgspp.data.flow configs/dynerf/ftgspp/flame_steak.toml

Since this preprocessing can be time-consuming, the repository also provides scripts/run_ufm_flow to precompute and cache UFM flow for the released scenes in advance.

ftgspp.data.flow expects an external UFM installation (ufm or uniflowmatch) and is not installed by default through this repository's Python dependencies.

License

This repository is released under the non-commercial research and educational use license in LICENSE. It is a source-available research release and is not distributed under an OSI-approved open-source license.

The FreeTimeGS++ research license applies only to the original code in this repository that is owned by the authors. Third-party software, models, weights, and datasets remain under their own license terms. In particular, this project depends on external packages such as gsplat (Apache-2.0), pycolmap (BSD-3-Clause), PyTorch/torchvision (BSD-style), RoMa (MIT), MEMFOF (BSD-3-Clause), fused-ssim (MIT), tiny-cuda-nn (BSD-3-Clause), and rerun-sdk (MIT OR Apache-2.0). See THIRD_PARTY.md for a concise inventory.

Citation

@misc{ftgspp,
      title={FreeTimeGS++: Secrets of Dynamic Gaussian Splatting and Their Principles}, 
      author={Lucas Yunkyu Lee and Soonho Kim and Youngwook Kim and Sangmin Kim and Jaesik Park},
      year={2026},
      eprint={2605.03337},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2605.03337}, 
}

About

Implementation of "FreeTimeGS++: Secrets of Dynamic Gaussian Splatting and Their Principles"

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors