TL;DR: We present StructSplat, a feed-forward and generalizable NVS framework that predicts 3D gaussians from uncalibrated images without requiring camera parameters.
We present StructSplat, a feed-forward and generalizable 3D Gaussian reconstruction framework that operates directly on uncalibrated images without requiring camera parameters. Existing methods either rely on per-scene optimization or assume known camera poses, and often entangle geometry and appearance within a unified backbone, limiting reconstruction fidelity and generalization. Our key idea is to adopt a structured representation that organizes geometry, semantic, and texture cues with explicit roles in the reconstruction process. Specifically, we introduce a pixel-aligned feature injection mechanism to enable accurate texture modeling from 2D observations, incorporate semantic-aware priors to improve global consistency, and design a camera alignment strategy to prevent information leakage and improve generalization. Experiments show that our method significantly outperforms prior approaches on challenging benchmarks.
git clone --recursive https://github.com/iLearn-Lab/ECCV26-StructSplat.git
cd StructSplat
conda create -n structsplat python=3.10.19
conda activate structsplat
pip install torch==2.4.0 torchvision==0.19.0 -i https://download.pytorch.org/whl/cu118
pip install -r requirements.txt
-
DL3DV
Download training set and evaluation set. Put them into folder
dataas:data ├── dl3dv │ ├── 1K │ ├── 2K │ ├── 3K │ ├── ... │ └── DL3DV-bm └── ...
-
Download pretrained VGGT and Dino V3 checkpoints. Put them into folder
ckptsas:ckpts ├── dinov3_convnext_large │ └── ... ├── vggt │ └── ... └── ... -
Run the following command to train the model:
python train.py -c config/dl3dv.yaml -
Importan arguments:
--configor-c: Configuration file path.--gaussian_training_stage.data.annotations: List of training data annotation file pathes, default:[dataset_annotations/dl3dv_train_clean.json].
- [Optional] Download our pretrained checkpoint. Put it into folder
ckptsas:ckpts ├── dinov3_convnext_large │ └── ... ├── vggt │ └── ... └── structsplat └── pytorch_model.bin
- [Optional] Convert a trained checkpoint from Deepspeed format into binary format:
python -m deepspeed.utils.zero_to_fp32 "$deepspeed_checkpoint_dir" "ckpts/structsplat" --max_shard_size 10GB - Run the following command to evaluate the model:
python evaluation.py -c config/dl3dv.yaml - Importan arguments:
--configor-c: Configuration file path.--gaussian_evaluation_stage.data.annotations: List of evaluation data annotation file pathes, default:[dataset_annotations/dl3dv_eva_src-2_tar-2.json].--gaussian_evaluation_stage.ckpt: Checkpoint file path, default:ckpts/structsplat/pytorch_model.bin.
@inproceedings{zhao2026structsplat,
title={StructSplat: Generalizable 3D Gaussian Splatting from Uncalibrated Sparse Views},
author={Zhao, Jia-Chen and Chen, Beiqi and Chen, Xinyang and Wang, Guangcong and Nie, Liqing},
booktitle={European Conference on Computer Vision},
year={2026}
}
