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

Video and image sequences → 3D points, depth and camera poses. Refined Pi3 v2, DA3 Giant and VGGT models, with one shared demo and inference API.

Paper · Project page · Models

Demo

Linux · Python 3.11 · CUDA GPU. Download the source and launch the Gradio app:

pip install 'huggingface-hub>=0.34,<1'
hf auth login
hf download cyun9286/PURE --include 'studio/**' --local-dir PURE
cd PURE/studio
pip install -e '.[space]'
PURE_MODEL_REPO=cyun9286/PURE python app.py

Open http://localhost:7860, upload a video or image sequence, and select Pi3 v2, DA3 Giant, or VGGT. The demo defaults to 48 consecutive frames with sky removal. It returns a rotatable 3D preview, RGB/depth videos, a full PLY point cloud, camera poses and a ZIP download.

Weights download on first use. The repository currently requires authorized Hugging Face access. This release provides a locally runnable app and Space-ready source; a hosted Space is not deployed.

Examples

Try a public SelfEvo sample from the Studio directory:

mkdir -p inputs
curl -fL 'https://raw.githubusercontent.com/Self-Evo/SelfEvo/b0e0f4aa23627cb411167fdfd1f325dc774151fe/examples/motorcycle.mp4' -o inputs/motorcycle.mp4
python scripts/demo/reconstruct.py \
  --pretrained cyun9286/PURE --subfolder pi3 \
  --video inputs/motorcycle.mp4 --frames 48 \
  --output outputs/motorcycle-pi3

Use --subfolder da3 or --subfolder vggt to switch models, with a separate output directory for each run.

Sample Input Models
Motorcycle 48 consecutive video frames Pi3 v2 · DA3 Giant · VGGT
Penguin 48 consecutive video frames Pi3 v2 · DA3 Giant · VGGT
Sport 48 consecutive video frames Pi3 v2 · DA3 Giant · VGGT
Drift-straight 10 supplied images Pi3 v2 · DA3 Giant · VGGT

Motorcycle input Pi3, DA3 and VGGT motorcycle reconstruction

Static preview: sampled non-sky points within 3× median depth, normalized per model; red marks the camera path. Full PLY exports retain all valid non-sky points.

All examples, result previews and batch commands →

Python API

import torch
from pure import PURE, PUREImageProcessor

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

Use pi3, da3 or vggt as the subfolder. The installed PURE package supports Hub and local model directories, revisions, caching and save_pretrained(). The CLI and Studio add sky filtering and file export to the model's raw predictions.

Models and source

Path Contents
pi3/ Pi3 v2 — config, processor config and Safetensors
da3/ DA3 Giant — config, processor config and Safetensors
vggt/ VGGT — config, processor config and Safetensors
studio/app.py Gradio demo entry point
studio/ Complete demo, training and inference source
validation/ Conversion and GPU validation records

Deployment guide (中文) · Training guide (中文) · Code map

Validation

On 2026-10-15, all three complete checkpoints were converted without quantization or dtype changes and every tensor compared exactly equal to the original. On H20, a two-frame original-versus-converted inference comparison yielded maximum absolute error 0 for every tested output. All three actual Studio callbacks completed the same 48 consecutive SelfEvo motorcycle frames, with sky filtering and all file exports. Each produced 4,986,407 non-sky points and a 150,000-point GLB preview. Local unit/API/export tests: 13 passed; existing training/adapter regression tests: 20 passed.

These are execution and serialization checks, not reproduction of paper metrics. Relative depth and translation are not guaranteed metric; moving objects can produce multi-frame ghosts. GLB previews are sampled and normalized; downloadable PLY preserves the full exported point set.

Provenance and terms

Original weights: FunnyGuy525/RefinedModel, revision 45b24b6ec0963003281189455a2e04d517634133. Each model folder includes provenance, conversion hashes and component license files. The upstream checkpoint repository did not specify a separate weight license; this conversion does not grant a new blanket license. See third-party notices.

Paper · Original project

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Paper for cyun9286/PURE