[2026-07] 🎉 Initial release of code. Training code is coming soon.
Introduction
In this work, we aim to address the challenge of long-range memory in panoramic world models by exploiting the rotation-equivariant property of omnidirectional representations, where rotation can be treated as an implicit geometric transformation.
Building on this insight, we propose PanoWorld, which simplifies camera trajectories into translations via fixed headings for both current-action modeling and long-range memory through Dense Panoramic Ray-Conditioning (DPRC) and Geometry-aware Memory Augmentation (GMA). Then, a three-stage training pipeline is introduced to progressively optimize each component.
To better evaluate physical consistency under large-scale spatial variations and diverse illumination conditions, where existing datasets are relatively stable, we construct World360, a large-scale dataset consisting of both real-world video clips collected via panoramic unmanned aerial vehicles and high-quality simulated clips generated by AirSim360.
Environment Setup
Prerequisites
OS: Linux (tested on Ubuntu 22.04)
GPU: CUDA-compatible GPU with ≥20GB VRAM
CUDA: 12.8 or higher
Python: 3.10
FFmpeg: For video processing
Step 1: Create Conda Environment
Action Model inference assumes the PanoWorld conda env is already active.
Dependencies are listed in requirements.txt. After Step 1, continue with Step 2–3 (base model + PanoWorld checkpoints) before running inference_action.sh.
1# Download using provided script2python scripts/download_wan2.2.py
34# Or manually download from Hugging Face5# Visit: https://huggingface.co/Wan-AI/Wan2.2-TI2V-5B6# Download to: models/Wan-AI/Wan2.2-TI2V-5B/
Step 3: Download Panoworld Models
Download the 480p or 720p checkpoints:
bash
1# Option 1: Using our download script2python scripts/download_panoworld_models.py
34# Option 2: Manual download from Hugging Face5# Visit: https://huggingface.co/Insta360-Research/PanoWorld
World360 comprises 120,000 high-quality sequences, unifying 70,000 curated real-world clips with 50,000 high-fidelity simulations from AirSim360, and introduces diverse multi-altitude aerial trajectories with precise camera poses and depth information.
Output: Each dataset generates:
81-frame & 161-frame panoramic video.
Camera trajectory csv file
PNG image sequence
Inference
Bundled demo assets live under assets/demo/. Resolution-specific cases are under 480/ and 720/; each case folder contains a 2:1 equirectangular panorama (input.jpg), text prompt (prompt.txt), and camera trajectory (pose.txt). 720p cases also include a reference video (reference_gen_joint_step2000.mp4).
Pose spacing: For custom pose.txt trajectories, we recommend a horizontal step of ~0.05 between consecutive frames, i.e. sqrt(action_dx² + action_dy²) ≈ 0.05 in the model world frame (-x forward, +y left). The bundled demo poses use this spacing.
Camera-Controlled Video Generation
High-quality panoramic I2V with camera trajectory control.
Unified entry: inference_action.sh
Output:{output}/gen_video.mp4 (single sample) or gen_video_{i}.mp4 (batch).
bash
1# --- Demo: image + prompt + synthetic forward motion ---2./inference_action.sh \3 --resolution 480\4 --image assets/demo/input.jpg \5 --prompt "$(cat assets/demo/prompt.txt)"\6 --motion forward \7 --output ./inference_output/demo_forward
89# --- Demo case with recorded pose (480p) ---10CASE=assets/demo/480/case2_waterway_slice000
11./inference_action.sh \12 --resolution 480\13 --image ${CASE}/input.jpg \14 --prompt "$(cat ${CASE}/prompt.txt)"\15 --motion ${CASE}/pose.txt \16 --output ${CASE}/out_action
1718# --- Demo case with recorded pose (720p) ---19CASE=assets/demo/720/case1_waterway_slice706
20./inference_action.sh \21 --resolution 720\22 --image ${CASE}/input.jpg \23 --prompt "$(cat ${CASE}/prompt.txt)"\24 --motion ${CASE}/pose.txt \25 --output ${CASE}/out_action
2627# 480p — single sample from test CSV28./inference_action.sh \29 --resolution 480\30 --prompt_nums 1\31 --output ./inference_output/demo_480p
3233# 720p — native 1408×704, upscaled to 1440×72034./inference_action.sh \35 --resolution 720\36 --prompt_nums 1\37 --output ./inference_output/demo_720p
3839# Or via top-level wrapper40RESOLUTION=480PROMPT_NUMS=1 ./inference_preview.sh
41RESOLUTION=720PROMPT_NUMS=1 ./inference_preview.sh
4243python Action-Model/infer_action.py --help
Flag
Description
--resolution
480 (960×480) or 720 (1408×704 → 1440×720)
--image / --prompt
Demo mode: panoramic image + text prompt (2:1 image)
--motion
forward / backward / left / right / up /down /, or a pose file (demo mode)
--output
Output directory
--output_filename
Default gen_video.mp4
--prompt_path
CSV with columns video, short_prompt, pose_path (batch mode)
--prompt_nums
Number of CSV rows to run (batch mode)
Default test CSVs: data_test.csv (480p), data_test_720p.csv (720p).
Causal Forcing Stage
Real-time panoramic generation with Causal Forcing on Wan2.2 5B.
Entry: Casual-forcing/inference_causal.sh (requires causal_forcing env).
Causal-Forcing: Causal-Forcing distillation for fast diffusion models
Citation
If you find Panoworld useful for your research, please cite:
bibtex
1@misc{li2026panoworldrealworldpanoramicgeneration,
2 title={PanoWorld: Real-World Panoramic Generation},
3 author={Haoyuan Li and Dizhe Zhang and Yuemei Zhou and Xiangkai Zhang and Haoran Feng and Xiaofan Lin and Wenjie Jiang and Bo Du and Ming-Hsuan Yang and Lu Qi},
4 year={2026},
5 eprint={2607.09661},
6 archivePrefix={arXiv},
7 primaryClass={cs.CV},
8 url={https://arxiv.org/abs/2607.09661},
9}