Skip to content

KAIST-VICLab/EcoSplat

Repository files navigation

EcoSplat: Efficiency-controllable Feed-forward 3D Gaussian Splatting from Multi-view Images

Training code — SPFSplat base

Jongmin Park1* · Minh-Quan Viet Bui1* · Juan Luis Gonzalez Bello1 · Jaeho Moon1 · Jihyong Oh2† · Munchurl Kim1†
1KAIST, South Korea, 2Chung-Ang University, South Korea
*Co-first authors (equal contribution), †Co-corresponding authors

CVPR 2026 (Highlight)


This branch holds the training and inference code for EcoSplat on the SPFSplat base (pose-free, sparse-view feed-forward 3DGS). EcoSplat is also released on a ZPressor base for scalable many-view input — see the eco_zpressor branch.

EcoSplat's efficiency control is implemented as a reusable, base-agnostic package, ecosplat_wrapper/ (the IGF training strategy), vendored into this branch. To understand the mechanism or apply it to another base model, read ecosplat_wrapper/README.md; for the exact changes we made to SPFSplat (forward + training), see INTEGRATION.md.

EcoSplat base variants — pick the branch for your setup:

  • SPFSplatthis branch (eco_spfsplat): pose-free.
  • ZPressoreco_zpressor: both inter-view and intra-view compression (MVSplat baseline + IGF).

Table of Contents

Installation

This branch is a fork of SPFSplat — set up its environment first (conda env, dependencies, and the optional CroCo RoPE CUDA kernels) following SPFSplat's installation. Then install the EcoSplat efficiency-control package (IGF) into that environment:

pip install -e ecosplat_wrapper

Datasets

Please refer to DATASETS.md for dataset preparation.

Pre-trained Checkpoints

The EcoSplat (IGF) checkpoint is on Hugging Face 🤗ecosplat-spfsplat-re10k.ckpt. Download it into pretrained_weights/:

wget -P pretrained_weights https://huggingface.co/quan5609/EcoSplat/resolve/main/ecosplat-spfsplat-re10k.ckpt

EcoSplat training starts from a stage-1 SPFSplat checkpoint — download one from the SPFSplat model zoo (e.g. re10k.ckpt, re10k_10view.ckpt).

Training

EcoSplat's IGF training finetunes a converged stage-1 base checkpoint (a standard SPFSplat model — see Pre-trained Checkpoints). IGF is controlled by the model.encoder.igf config (an empty {} uses the paper defaults from IGFConfig: loss_weight=0.1, io_weight=0.1, PLGC 0.85→0.95); the provided spfsplat/re10k_10view experiment already sets igf: {}.

python -m src.main +experiment=spfsplat/re10k_10view \
    checkpointing.load=pretrained_weights/re10k_10view.ckpt checkpointing.resume=false \
    wandb.mode=online wandb.name=re10k_igf

bash train.sh wraps the multi-GPU launch used for the released model (set CKPT to your stage-1 checkpoint). Tune the strategy via model.encoder.igf fields, e.g. model.encoder.igf.io_weight=0.2.

Evaluation

Evaluate novel-view synthesis at a chosen primitive budget — the protect rate κ (inference_rho); lower κ → fewer rendered Gaussians. The bundled launchers eval_igf_rho{0p7,0p4,0p1,0p02}.sh sweep the budget — edit the checkpoint / index paths inside them, then run e.g. bash eval_igf_rho0p4.sh.

The underlying command:

python -m src.main +experiment=spfsplat/re10k_10view mode=test wandb.name=re10k_igf \
    dataset/view_sampler@dataset.re10k.view_sampler=evaluation \
    dataset.re10k.view_sampler.index_path=assets/evaluation_index_re10k.json \
    checkpointing.load=pretrained_weights/ecosplat-spfsplat-re10k.ckpt \
    +model.encoder.igf.inference_rho=0.4 \
    test.compute_scores=true test.align_pose=true

Sweep inference_rho (0.7 → 0.4 → 0.1 → 0.02, default 0.4) to trade primitive count against quality. The published inference release exposes a related knob, model.encoder.primitive_ratio, on its dedicated encoder_ecosplat — it re-allocates the budget per view by high-frequency content, whereas this wrapper applies a single uniform rate.

Camera Conventions

We follow the pixelSplat camera system: normalized intrinsics (first row ÷ width, second row ÷ height), and OpenCV-style camera-to-world extrinsics (+X right, +Y down, +Z into the screen).

Acknowledgements

This project is built upon these excellent repositories: SPFSplat, NoPoSplat, pixelSplat, DUSt3R, and CroCo. We thank the original authors for their excellent work.

Citation

If you find EcoSplat useful, please cite:

@inproceedings{park2025ecosplat,
      title={EcoSplat: Efficiency-controllable Feed-forward 3D Gaussian Splatting from Multi-view Images}, 
      author={Jongmin Park and Minh-Quan Viet Bui and Juan Luis Gonzalez Bello and Jaeho Moon and Jihyong Oh and Munchurl Kim},
        year = {2026},
      booktitle={CVPR},
      }

Please also consider citing the SPFSplat base:

@article{huang2025spfsplat,
      title={No Pose at All: Self-Supervised Pose-Free 3D Gaussian Splatting from Sparse Views},
      author={Huang, Ranran and Mikolajczyk, Krystian},
      journal={arXiv preprint arXiv: 2508.01171},
      year={2025}
    }

About

[CVPR'26] EcoSplat: Efficiency-controllable Feed-forward 3D Gaussian Splatting from Multi-view Images (Highlight)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages