Yixing Lao1,2†,
Xuyang Bai2,
Xiaoyang Wu1,
Nuoyuan Yan2,
Zixin Luo2,
Tian Fang2,
Jean-Daniel Nahmias2,
Yanghai Tsin2,
Shiwei Li2‡,
Hengshuang Zhao1
1HKU 2Apple
†Work done during an internship at Apple ‡Project lead
ICLR 2026
Existing feed-forward Gaussian Splatting methods can't scale to 4K. LGTM is the first native 4K feed-forward method that predicts compact textured Gaussians.
# Follow uv installation guides
# https://docs.astral.sh/uv/getting-started/installation/
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone the repository
git clone https://github.com/apple/ml-lgtm.git
cd ml-lgtm
# Install lgtm (editable) and dependencies (regular)
# This creates .venv/ automatically
uv sync
source .venv/bin/activate
# Clone, patch, and install gsplat with lgtm support
# LGTM implements custom textured 2DGS for gsplat
./scripts/clone_patch_gsplat.sh
uv pip install extern/gsplat/ --no-build-isolationIf you need a specific CUDA version, override after the uv sync step, e.g.,:
uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124The inference scripts download a test scene from the gated DL3DV-Benchmark HuggingFace dataset. Before running them, accept the dataset license on the linked page and log in:
hf auth loginThe inference scripts will load LGTM Lightning checkpoints from weights/ and
run feed-forward reconstruction on example images. Make sure you have downloaded
the weights:
wget -P weights \
https://ml-site.cdn-apple.com/models/lgtm/dl3dv_depthsplat_lgtm_512x960_2048x3840.ckpt \
https://ml-site.cdn-apple.com/models/lgtm/dl3dv_flash3d_lgtm_288x512_2304x4096.ckpt \
https://ml-site.cdn-apple.com/models/lgtm/dl3dv_noposplat_lgtm_288x512_2304x4096.ckpt
Now, run the inference scripts:
python examples/inference_depthsplat.py
python examples/inference_noposplat.py
python examples/inference_flash3d.pyThis will render the target views and interpolation videos, along with the context images and target ground truth. You shall get something like:
examples/outputs_lgtm_depthsplat
|-- context_0.png
|-- context_9.png
|-- interpolation.mp4
|-- target_gt_1.png
|-- target_gt_3.png
|-- target_gt_5.png
|-- target_gt_7.png
|-- target_pd_1.png
|-- target_pd_3.png
|-- target_pd_5.png
`-- target_pd_7.png
For training, we support DL3DV dataset. We provide data processing scripts to convert the original datasets to PyTorch chunk files which can be directly loaded with this codebase. Please refer to docs/DATASETS.md for more details.
Download backbone pretrained weights (required for training):
python scripts/download_pretrained.pyYou shall get:
pretrained/
|-- MASt3R_ViTLarge_BaseDecoder_512_catmlpdpt_metric.pth # For NoPoSplat
|-- depthsplat-gs-base-re10kdl3dv-448x768-randview2-6-f8ddd845.pth # For DepthSplat
`-- unidepth-v1-vitl14.bin # For Flash3D
By using backbone weights, you agree to comply with the licenses of NoPoSplat,
DepthSplat, and Flash3D, along with their associated dependencies, including but
not limited to: MASt3R, UniDepth, and UniMatch. See src/lgtm/model/backbone
for more details of the backbone implementations.
NoPoSplat LGTM:
# Stage 1: 2DGS
python main.py +experiment=dl3dv_noposplat_2dgs_288x512_2304x4096
# Stage 2: BBSplat (no texture projection)
python main.py +experiment=dl3dv_noposplat_bbsplat_288x512_2304x4096
# Stage 3: LGTM
python main.py +experiment=dl3dv_noposplat_lgtm_288x512_2304x4096DepthSplat LGTM:
# Stage 1: 2DGS
python main.py +experiment=dl3dv_depthsplat_2dgs_512x960_2048x3840
# Stage 2: LGTM
python main.py +experiment=dl3dv_depthsplat_lgtm_512x960_2048x3840Flash3D LGTM:
# Stage 1: 2DGS
python main.py +experiment=dl3dv_flash3d_2dgs_288x512_2304x4096
# Stage 2: LGTM
python main.py +experiment=dl3dv_flash3d_lgtm_288x512_2304x4096Prepare the test dataset in data/dl3dv/ directory:
data/dl3dv/test/
|-- 000000.torch
|-- 000001.torch
|-- ...
`-- index.json
Download the weights to weights/ directory:
wget -P weights \
https://ml-site.cdn-apple.com/models/lgtm/dl3dv_depthsplat_lgtm_512x960_2048x3840.ckpt \
https://ml-site.cdn-apple.com/models/lgtm/dl3dv_flash3d_lgtm_288x512_2304x4096.ckpt \
https://ml-site.cdn-apple.com/models/lgtm/dl3dv_noposplat_lgtm_288x512_2304x4096.ckpt
Run evaluation on the test set using the weights:
# NoPoSplat LGTM
python main.py +experiment=dl3dv_noposplat_lgtm_288x512_2304x4096 mode=test wandb.mode=disabled \
checkpointing.test_ckpt_path=weights/dl3dv_noposplat_lgtm_288x512_2304x4096.ckpt
# DepthSplat LGTM
python main.py +experiment=dl3dv_depthsplat_lgtm_512x960_2048x3840 mode=test wandb.mode=disabled \
checkpointing.test_ckpt_path=weights/dl3dv_depthsplat_lgtm_512x960_2048x3840.ckpt
# Flash3D LGTM
python main.py +experiment=dl3dv_flash3d_lgtm_288x512_2304x4096 mode=test wandb.mode=disabled \
checkpointing.test_ckpt_path=weights/dl3dv_flash3d_lgtm_288x512_2304x4096.ckpt@inproceedings{lao2026lgtm,
title = {Less Gaussians, Texture More: 4K Feed-Forward Textured Splatting},
author = {Lao, Yixing and Bai, Xuyang and Wu, Xiaoyang and Yan, Nuoyuan and Luo, Zixin and Fang, Tian and Nahmias, Jean-Daniel and Tsin, Yanghai and Li, Shiwei and Zhao, Hengshuang},
booktitle = {ICLR},
year = {2026},
}Please check out the repository LICENSE before using the provided code and LICENSE_MODEL for the released models.