InSpatio-World 1.5 — all weights in one repository
Everything InSpatio-World 1.5
(paper) needs at inference, repackaged for the minimal
re-implementation inspatio-world:
one folder per component, each a config.json + model.safetensors pair loaded with
from_pretrained. No other repository is downloaded.
| Folder | Component | Source | Params | Dtype |
|---|---|---|---|---|
dit/ | Causal Wan2.1-1.3B DiT (InSpatio-World 1.5, EMA) | inspatio/world-1.5 | 1.42 B | bf16 |
vae/ | Wan2.1 VAE (causal video autoencoder) | Wan-AI/Wan2.1-T2V-1.3B | 127 M | bf16 |
text_encoder/ | umT5-XXL encoder | Wan-AI/Wan2.1-T2V-1.3B | 5.7 B | bf16 |
tokenizer/ | umT5 tokenizer (tokenizer.json) | Wan-AI/Wan2.1-T2V-1.3B | — | — |
taehv/ | TAEHV taew2_1 encoder + decoder (fast stand-ins for the VAE) | madebyollin/taehv | 11.3 M | bf16 |
depth/ | Depth-Anything-3 nested giant-large (depth + cameras) | depth-anything/DA3NESTED-GIANT-LARGE | 1.7 B | bf16 / fp32 |
captioner/ | Florence-2-base (video prompts for uploads / examples), transformers format | florence-community/Florence-2-base | 0.23 B | fp32 |
examples/ | Scene folders: the six upstream examples, ten scenes from free Mixkit stock footage and the two video scenes of the InSpatio-World demo (oranges_sidewalk, boxing_ring); trajectories/: camera-path presets with previews | upstream examples, scripts/prepare_stock_examples.py | — | — |
The conversion only renames keys (fusing the DiT's q/k/v and cross-attention k/v projections),
drops unused branches (DA3's ray / Gaussian-splatting heads) and casts to the dtype each module
runs in; upstream runs the DiT, VAE and text encoder in bf16, so outputs are unchanged. It was
produced by scripts/convert_checkpoints.py.
Usage
pip install "inspatio-world @ git+https://github.com/julien-blanchon/inspatio-world-v1.5"
inspatio-world generate --source.paths photo.jpg --moves forward:36 turn-right+forward:36 --output out.mp4
from inspatio_world import CameraAction, CameraRig, WorldConfig, WorldModel
from inspatio_world.data import load_scene
world = WorldModel.from_pretrained(WorldConfig(dit_precision="fp8", compile=True))
scene = load_scene(examples_dir / "image_example_00")
session, rig = world.start(scene), CameraRig(scene)
while True:
block = session.step(rig.advance(CameraAction(forward=1.0, yaw=0.3), session.frames_needed))
... # block.frames: (12, 480, 832, 3) uint8
Interactive demo: spaces/blanchon/inspatio-world-v1.5.
Licenses
Each component keeps its original license:
dit/: InSpatio-World 1.5 weights, released by the InSpatio team with the Apache-2.0 code of inspatio/inspatio-world-v1.5.vae/,text_encoder/,tokenizer/: Wan2.1, Apache-2.0.taehv/: TAEHV, MIT.captioner/: Florence-2, MIT.depth/: Depth-Anything-3 DA3NESTED-GIANT-LARGE, CC BY-NC 4.0 (non-commercial).examples/: the upstream examples come from the upstream repository; the others are frames of Mixkit clips under the Mixkit Stock Video Free License, downscaled to 832x480 with estimated depth, for demonstration only;oranges_sidewalkandboxing_ringare the source videos of the InSpatio team's online demo, first 120 frames.
Citation
@misc{inspatio-world,
title={INSPATIO-WORLD: A Real-Time 4D World Simulator via Spatiotemporal Autoregressive Modeling},
author={InSpatio Team},
journal={arXiv preprint arXiv:2604.07209},
year={2026}
}