Skip to content
IGL-HKUSTPublic

About

[ACM MM 2026] PURE: Refining Feed-forward 3D Reconstruction with Unlabeled Post-training

Resources

Stars

41 stars

Watchers

2 watching

Forks

Repository files navigation

PURE: Refining Feed-forward 3D Reconstruction with Unlabeled Post-training

arXiv Paper   Project Page   Hugging Face Weights   Open PURE Studio

Yaolong Zhu1, Peng Li2, Jiahao Lu2,▲, Chengfeng Zhao2, Mengfei Li2, Chao Wang3, Wenyue Chen1,
Zekai Gu2, Chengwei Ren2, Ronggang Wang1,✉, Yuan Liu2,✉

1 Guangdong Provincial Key Laboratory of Ultra High Definition Immersive Media Technology, Shenzhen Graduate School, Peking University
2 The Hong Kong University of Science and Technology
3 Pengcheng Laboratory
▲ Project lead   ·   ✉ Co-corresponding authors

Reconstruct 3D points, depth and camera poses from video or images with Pi3, DA3 Giant and VGGT.

PURE 15 fps preview: growing overhead map expands into the complete 3D reconstruction

PURE · From unlabeled video to dynamic 3D
Full 1:54 film: 2,000-frame reconstruction at 30 fps, overhead view, five short scenes, then the method.
13-second animated preview at 15 fps: more reconstruction, followed by a brief overhead reveal.
The full MP4 is 1080p / 30 fps, with synchronized RGB input.
Watch on the project page · Download full MP4 (1:54)

Pipeline

PURE post-training pipeline

Demo

Web app

Open PURE Reconstruction Studio →

Try the bundled Motorcycle, Penguin, Sport, Basketball close-up and Basketball wide view videos, or the Drift-straight sequence of ten images. Selecting an example fills the inputs; click Reconstruct to generate the 3D preview, point cloud, depth and camera poses. The hosted Space runs on free ZeroGPU, subject to your Hugging Face GPU quota.

Linux, Python 3.11 and a CUDA GPU. From the repository root:

pip install -e '.[space]'
PURE_MODEL_REPO=cyun9286/PURE python app.py

Open http://localhost:7860 and upload a video or image sequence. The default uses 48 consecutive frames and removes sky. Outputs: interactive 3D preview, PLY, camera poses, RGB/depth videos and ZIP.

Public weights download on first use; no login is required. Deployment and offline setup.

Command line

Run the bundled demos from the repository root:

pip install -e '.[inference]'
bash scripts/demo/run_demo.sh                         # Motorcycle + PURE (Pi3)
bash scripts/demo/run_demo.sh --sample all --model all # Six samples × three models

Use --sample motorcycle|penguin|sport|basketball-close-up|basketball-wide-view|drift-straight and --model pi3|da3|vggt to select a demo. Results go to outputs/demo/<sample>-<model>/; use --output for a new run or --dry-run to inspect commands. Videos use the first 48 consecutive frames; drift-straight uses all 10 images.

For your own video:

python scripts/demo/reconstruct.py \
  --pretrained cyun9286/PURE --subfolder pi3 \
  --video input.mp4 --frames 48 --output outputs/my-video

Choose pi3, da3 or vggt with --subfolder. Demo options.

Python API

import torch
from pure import PURE, PUREImageProcessor

model = PURE.from_pretrained("cyun9286/PURE", subfolder="pi3").to("cuda")
images = PUREImageProcessor().video("input.mp4", max_frames=48)
with torch.inference_mode(), torch.autocast("cuda", dtype=torch.bfloat16):
    predictions = model(images.unsqueeze(0).to("cuda"))

The API returns tensors. The CLI and Studio add sky filtering and exports. Model formats and provenance.

Training

Prepare aligned teacher caches using the training guide and data format, then run:

pip install -e '.[training]'
python scripts/hub/download_weights.py --model da3 --output checkpoints
bash scripts/train/run_train.sh \
  --config configs/da3_posttrain.json --data data/da3_train \
  --checkpoint checkpoints/da3.bin --output outputs/train-da3

Prefix with GPUS=4 for single-node DDP. Pi3 and VGGT use their matching configs and checkpoints.

Citation

@inproceedings{zhu2026pure,
  author    = {Zhu, Yaolong and Li, Peng and Lu, Jiahao and Zhao, Chengfeng and Li, Mengfei and Wang, Chao and Chen, Wenyue and Gu, Zekai and Ren, Chengwei and Wang, Ronggang and Liu, Yuan},
  title     = {{PURE}: Refining Feed-forward {3D} Reconstruction with Unlabeled Post-training},
  booktitle = {Proceedings of the 34th ACM International Conference on Multimedia},
  series    = {MM '26},
  year      = {2026},
  publisher = {ACM},
  doi       = {10.1145/3767308.3836296},
  url       = {https://doi.org/10.1145/3767308.3836296}
}

Acknowledgements

PURE builds on VGGT, Pi3, and Depth Anything 3. Pseudo supervision uses MoGe, Grounded SAM 2, and GIM. The scale-and-shift solver follows Track4World.

About

[ACM MM 2026] PURE: Refining Feed-forward 3D Reconstruction with Unlabeled Post-training

Resources

Stars

41 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages