AdaptSplat: Adapting Vision Foundation Models for Feed-Forward 3D Gaussian Splatting

May 21, 2026 · View on GitHub

arXiv   Project Page   HuggingFace

This repository contains the official open-source implementation of "AdaptSplat: Adapting Vision Foundation Models for Feed-Forward 3D Gaussian Splatting". If you find this project helpful, please consider giving us a star on GitHub ⭐️✨


TODO

  • Release DL3DV model weights (960×540)
  • Release inference code
  • Release Stage 1 & Stage 2 training code
  • Release Stage 3 training code

Environment Setup

System Requirements

  • Python 3.10
  • CUDA 12.1 (tested; other CUDA 12.x versions may work)
  • GCC ≥ 7

Step-by-Step Installation

Step 1: Create a conda environment

conda create -n adaptsplat python=3.10 -y
conda activate adaptsplat

Step 2: Install PyTorch with CUDA 12.1

pip install torch==2.4.1 torchvision==0.19.1 --index-url https://download.pytorch.org/whl/cu121

Step 3: Install all dependencies

pip install -r requirements.txt

Model Weights

Pretrained Backbone Weights (DINOv3-distilled ConvNeXt)

Download the pretrained backbone weights and place them in the pretrian_weight/ directory:

ModelSizeDownload
ConvNeXt-Base338 MBDINOv3 Downloads

Note: Access to DINOv3 weights requires submitting a request to the DINOv3 team via the official download page.

pretrian_weight/
└── dinov3_convnext_base_pretrain_lvd1689m-801f2ba9.pth

Next, get the official dinov3 codebase.

git clone https://github.com/facebookresearch/dinov3.git

AdaptSplat Checkpoint

CheckpointTraining DataResolutionDownload
ckpt_adaptsplat_dl3dv_960.ptDL3DV960×540HuggingFace

Place the checkpoint at checkpoints/ckpt_adaptsplat_dl3dv_960.pt.


Data Preparation

DL3DV (140 benchmark scenes)

Original Dataset Download

Download the DL3DV benchmark dataset from HuggingFace and place it under data_dl3dv/.

Data Preprocessing

Run the provided preprocessing script to perform undistortion and camera format conversion:

python data/process_dl3dv.py

The preprocessing script is adapted from LongLRM.

Expected directory structure after preprocessing:

data_dl3dv/
├── dl3dv_bechmark_140_hf.txt      # scene list (one path per line, e.g. dl3dv_benchmark/<hash>/opencv_cameras.json)
└── dl3dv_benchmark/
    └── <scene_hash>/
        ├── opencv_cameras.json    # per-frame intrinsics + w2c in OpenCV convention
        └── images_undistort/
            ├── frame_00001.png
            └── ...

The k-means input frame indices (pre-computed) are provided at data/dl3dv_fold_8_kmeans_input_idx.json.


Inference

Single-GPU

CUDA_VISIBLE_DEVICES=0 python inference.py --config configs/inference.yaml

Multi-GPU (DDP)

Scenes are distributed across GPUs; each GPU runs inference independently and Rank 0 aggregates metrics at the end.

# 8-GPU inference on DL3DV
torchrun --nproc_per_node=8 inference_ddp.py --config configs/inference.yaml

Acknowledgement

This project is built upon Long-LRM and MVP. We sincerely thank the authors and contributors of these excellent open-source works.


Citation

If you find this work useful, please cite:

@article{xing2026adaptsplat,
  title   = {AdaptSplat: Adapting Vision Foundation Models for Feed-Forward 3D Gaussian Splatting},
  author  = {Xing, Mingwei and Wang, Xinliang and Shi, Yifeng},
  journal = {arXiv preprint arXiv:2605.10239},
  year    = {2026}
}