Official implementation of
EvoWorld: Evolving Panoramic World Generation with Explicit 3D Memory
EvoWorld is a generative world model that explicitly reconstructs and utilizes a 3D memory for egocentric video generation. Starting from a single panoramic image and a sequence of camera poses, EvoWorld synthesizes future frames with strong 3D consistency by projecting an evolving 3D point cloud onto future views as conditioning for a video diffusion model.
- 🔧 Installation
- 📦 Pretrained Weights & Dataset
- ⚡ Quickstart
- Single-clip generation
- 3-clip iterative generation
- 🧪 Inference (full test set)
- 📊 Evaluation
- 🏋️ Training
- 🗺️ Spatial360 Dataset
- 📎 Acknowledgements
git clone [email protected]:JiahaoPlus/EvoWorld.git --recursive
cd EvoWorld
conda create -n evoworld python=3.11
conda activate evoworld
pip install -r requirements.txt
conda install -c conda-forge "cudnn>=9,<10"We have released:
- Model weights trained on Unity Curve Path (subset): Evoworld_Unity_Curve_Path (Hugging Face)
- Corresponding dataset: Google Drive link
1. Download model weights and dataset
- Download model weights from Hugging Face and place them in the
MODELS/directory. - Download the dataset from Google Drive.
- After downloading the dataset, extract it (adjust paths as needed):
tar -xvf /path/to/dataset.tar -C data/
- Update the model path in
run_single_segment.shandrun_unified_pipeline.shto point to your downloaded weights.
2. Run model on provided example
- For single clip generation, run:
bash run_single_segment.sh
- For 3-clip iterative generation, run:
bash run_unified_pipeline.sh
- Make sure the model path in these scripts matches your downloaded weights in
MODELS/.
3. Run model across the whole test set
- Change your model path in
inference_unity_curve.shto the downloaded weights. - Execute:
bash inference_unity_curve.sh
4. Get evaluation metrics
- Run:
bash calculate_metrics.sh
bash run_single_segment.shbash run_unified_pipeline.shNotes:
run_single_segment.shruns a single-clip example.run_unified_pipeline.shruns three clips iteratively, reusing the evolving 3D memory.- Ensure the model path inside these scripts points to your downloaded weights in
MODELS/.
We have released the Unity Curve Path subset — remaining subsets are coming soon!
To reproduce our performance, run the train script:
# Train EvoWorld
bash train.shUpdate your model path in inference_unity_curve.sh and run:
bash inference_unity_curve.shCompute evaluation metrics on the outputs:
bash calculate_metrics.shThis codebase builds upon:
