Bing He · Jingnan Gao · Yunuo Chen · Ning Cao · Gang Chen · Zhengxue Cheng · Li Song · Wenjun Zhang
iclr2026_3110_subjective_comparison.mp4
SurfSplat, a feedforward framework based on 2D Gaussian Splatting (2DGS) primitive, which provides stronger anisotropy and higher geometric precision. By incorporating a surface continuity prior and a forced alpha blending strategy, SurfSplat reconstructs coherent geometry together with faithful textures.
- [✅] Release arXiv preprint.
- [✅] Launch project website.
- [✅] Release training code.
- [✅] Release inference code and checkpoints.
- Release preprocessed scannet dataset.
- Release mesh extraction code.
First clone the repository.
# Clone this repo
git clone https://github.com/hebing-sjtu/SurfSplat.git --recursive
# or
git clone https://github.com/hebing-sjtu/SurfSplat.git
git submodule update --init --recursiveOur code is developed using PyTorch 2.4.0, CUDA 12.4, and Python 3.10.
We recommend setting up a virtual environment using either conda or venv before installation:
# conda
conda create -y -n surfsplat python=3.10
conda activate surfsplat
# or venv
# python -m venv /path/to/venv/surfsplat
# source /path/to/venv/surfsplat/bin/activate
# installation
pip install torch==2.4.0 torchvision==0.19.0 --index-url https://download.pytorch.org/whl/cu124
pip install -r requirements.txt
# install rasterization
cd submodules/rasterization
pip install .
cd ...Our pre-trained models are hosted on Hugging Face 🤗.
For RealEstate10K and ACID datasets, we primarily follow pixelSplat. dcharatan kindly provide the preprocessed RealEstate10K and ACID datasets
For DTU dataset, we follow MVSplat. donydchen kindly provide the preprocessed DTU dataset
For DL3DV dataset, we follow DepthSplat. We will provided preprocessed dataset for test.
For Scannet dataset, We will provided preprocessed dataset for test.
- Before training, you need to download the pre-trained UniMatch and Depth Anything V2 weights, and set up your wandb account (in particular, by setting
wandb.entity=YOUR_ACCOUNT) for logging.
wget https://s3.eu-central-1.amazonaws.com/avg-projects/unimatch/pretrained/gmflow-scale1-things-e9887eda.pth -P pretrained
wget https://huggingface.co/depth-anything/Depth-Anything-V2-Small/resolve/main/depth_anything_v2_vits.pth -P pretrained
- Check out the scripts scripts/re10k_train.sh for details.
- Check out the scripts scripts/dataset_test.sh for details.
The camera intrinsic matrices are normalized, with the first row divided by the image width and the second row divided by the image height.
The camera extrinsic matrices follow the OpenCV convention for camera-to-world transformation (+X right, +Y down, +Z pointing into the screen).
If you find our work helpful, please consider citing:
@inproceedings{he2026surfsplat,
title={SurfSplat: Conquering Feedforward 2D Gaussian Splatting with Surface Continuity Priors},
author={Bing He and Jingnan Gao and Yunuo Chen and Ning Cao and Gang Chen and Zhengxue Cheng and Li Song and Wenjun Zhang},
booktitle={The Fourteenth International Conference on Learning Representations},
year={2026}
}