Flexible Feed-Forward 3D Gaussian Splatting without Point Cloud Correspondence

1Georgia State University 2Duke University 3University of Tennessee, Knoxville
Georgia State University Duke University University of Tennessee, Knoxville
BMVC 2026 (Acceptance ratio: 28%)
FlexSplat workflow. Uncalibrated input views are processed through learned geometry and Gaussian decoding to produce a compact 3D representation. Project video: watch the full walkthrough.
FlexSplat 3D Gaussian Splatting architecture
FlexSplat architecture. The model predicts camera geometry and depth from uncalibrated views, fuses depth-aware image features, and decodes a compact set of object-centered Gaussian queries for feed-forward 3D reconstruction.

Abstract

FlexSplat is a flexible feed-forward framework for object-centric novel view synthesis with 3D Gaussian Splatting under a practical but difficult setting: the input images are uncalibrated, so camera poses are not assumed to be known. Instead of requiring a precomputed point cloud or a dense set of pixel-aligned Gaussian primitives, the model learns a compact set of object-centered Gaussian queries that can represent the scene independently of image resolution.

The method couples a geometry transformer with a Gaussian decoder so camera prediction, depth reasoning, and 3D representation learning happen in one forward pipeline. The geometry branch estimates camera parameters and depth from the input views, while the decoder projects learned Gaussian queries into the available images and gathers evidence through depth-aware multi-view deformable attention.

This design avoids per-scene optimization and removes the need to build Gaussians directly from every image pixel or from externally supplied point correspondences. As a result, FlexSplat can reconstruct a view-consistent Gaussian representation from one or more unposed input images while keeping the Gaussian budget compact, controllable, and decoupled from the source image resolution.

TL;DR — what does FlexSplat make possible?

Flexible

Unlike pixel- or point-aligned approaches, Gaussians are represented as learnable queries rather than being tied to every image pixel or a dense point cloud. This enables a much more compact Gaussian representation whose size is decoupled from image resolution.

Feed-forward

There is no per-scene optimization. The model reconstructs the 3D representation in a single forward pipeline instead of retraining or optimizing a new model for every scene.

Uncalibrated

Camera poses do not need to be provided as input. FlexSplat jointly predicts the camera geometry and depth from the images themselves, making reconstruction possible without knowing the camera locations beforehand.

Method Overview

The pipeline first estimates camera geometry and depth from unordered views, then uses those predictions to condition a shared Gaussian query decoder. This makes the representation independent of dense point correspondence and keeps the Gaussian budget fixed by design choice rather than image resolution.

Joint geometry

A VGGT-style branch predicts cameras, depth, and confidence while staying in the training path, letting geometry adapt to the reconstruction objective.

Flexible Gaussians

Learned Gaussian queries form a compact scene representation, with 10K, 15K, or 20K primitives depending on the input-view setting.

Multi-view attention

Queries project into each image plane and sample fused feature maps, allowing the decoder to build view-consistent structure from noisy geometry.

Multi-view Gaussian projection
Gaussian queries aggregate feature evidence across views using learned offsets around projected reference points.

Results

Experiments cover single-view ShapeNet-SRN reconstruction, multi-view Google Scanned Objects evaluation, view-count scaling, ablations, timing, and robustness to camera-pose perturbation.

29.73

PSNR on 4-view GSO

0.041

LPIPS on 4-view GSO

20K

Gaussians for 4 views

0.992s

End-to-end inference

The two diagnostic plots below summarize the behavior most directly tied to FlexSplat's design: scaling with the number of available context views and robustness when camera poses are perturbed. Together, they show how the query-based Gaussian representation benefits from extra visual evidence while avoiding a hard dependency on perfectly calibrated inputs.

Effect of input view count
View scaling. Increasing the number of input views gives FlexSplat more cross-view evidence for geometry and appearance, improving novel-view synthesis quality while keeping the Gaussian count explicitly controlled. This highlights the benefit of a flexible representation whose budget can be chosen independently of the input image resolution.
Robustness to camera-pose perturbation
Pose robustness. Performance degrades gracefully under moderate camera-pose perturbations because the model does not rely on a fixed point cloud or one-to-one pixel correspondence. Gaussian queries aggregate multi-view features around learned projected locations, making reconstruction less brittle when the estimated camera geometry is imperfect.

Reproducing Experiments

The repository includes Hydra configurations for Objaverse-LVIS training, ShapeNet-SRN and GSO evaluation, ablations, inference timing, pose metrics, and custom-image reconstruction.

conda create -n flexsplat python=3.10 -y
conda activate flexsplat
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121
pip install -r requirements.txt

python -m src.main +experiment=objaverse
python -m src.main +experiment=gso checkpointing.load=$CKPT
python -m src.demo --images path/to/images --checkpoint $CKPT --export-ply

See the GitHub repository for dataset layout, full table commands, and test instructions.

BibTeX

@inproceedings{sabbaghziarani2026flexsplat,
  title={FlexSplat: Flexible Feed-Forward 3D Gaussian Splatting without Point Cloud Correspondence},
  author={Sabbaghziarani, Amir and Ye, Hanting and Gorlatova, Maria and Ding, Yi},
  booktitle={British Machine Vision Conference},
  year={2026},
  url={https://arxiv.org/abs/2608.07937},
  eprint={2608.07937},
  archivePrefix={arXiv}
}