[ICCV 2025 & ICCV 2025 RIWM Outstanding Paper] Aether: Geometric-Aware Unified World Modeling
609
stars
14
commits
Python
primary language
Oct 26, 2025
updated
Aether addresses a fundamental challenge in AI: integrating geometric reconstruction with generative modeling for human-like spatial reasoning. Our framework unifies three core capabilities: (1) 🌏 4D dynamic reconstruction, (2) 🎬 action-conditioned video prediction, and (3) 🎯 goal-conditioned visual planning. Trained entirely on synthetic data, Aether achieves strong zero-shot generalization to real-world scenarios.
:partying_face: NEWS:
Note: We recommend using virtual environments such as Anaconda.
# clone project
git clone https://github.com/OpenRobotLab/Aether.git
cd Aether
# create conda environment
conda create -n aether python=3.10
conda activate aether
# install dependencies
pip install -r requirements.txt
Warning: When doing reconstruction, Aether pipeline automatically centers crop the input video if its size does not match 480x720. Therefore, for evaluation purpose, we have to slide a 480p window both on the spatial and temporal dimensions, and blend all windows' outputs both spatially and temporally. Examples of video depth and camera pose evaluation can be found at evaluation/.
4D reconstruction:
python scripts/demo.py --task reconstruction --video ./assets/example_videos/moviegen.mp4
Action-conditioned video prediction:
python scripts/demo.py --task prediction --image ./assets/example_obs/car.png --raymap_action assets/example_raymaps/raymap_forward_right.npy
Goal-conditioned visual planning:
python scripts/demo.py --task planning --image ./assets/example_obs_goal/01_obs.png --goal ./assets/example_obs_goal/01_goal.png
Results will be saved in ./outputs/ by default.
The Gradio demo provides an interactive web-based Aether experience.
python scripts/demo_gradio.py
Our local testing environment is deployed using an A100 GPU with 80GB of memory, and it is set to run on the local port 7860 by default.
Suppose you have a sequence of camera poses, you have to convert it to raymap action trajectories before inference with Aether.
Note that your camera poses should be within the camera coordinate system of the first frame.
You can use the camera_pose_to_raymap function in postprocess_utils.py.
# suppose you have the ground-truth depth values:
disparity = 1. / depth[depth > 0]
dmax = disparity.max()
# otherwise, you can set dmax to 1.0 by default:
dmax = 1.0
# then suppose we have a camera trajectory
# camera_pose: shape of (N, 4, 4), e.g. N = 41
# intrinsic: shape of (N, 3, 3), e.g. N = 41
from aether.utils.postprocess_utils import camera_pose_to_raymap
# we will get a raymap sequence of shape (N, 6, h, w)
# where h = image height // 8 and w = image width // 8
raymap = camera_pose_to_raymap(camera_pose=camera_pose, intrinsic=intrinsic, dmax=dmax)
# save the raymap
np.save("/path/to/your/raymap.npy", raymap)
If you find this work useful in your research, please consider citing:
@article{aether,
title = {Aether: Geometric-Aware Unified World Modeling},
author = {Aether Team and Haoyi Zhu and Yifan Wang and Jianjun Zhou and Wenzheng Chang and Yang Zhou and Zizun Li and Junyi Chen and Chunhua Shen and Jiangmiao Pang and Tong He},
journal = {arXiv preprint arXiv:2503.18945},
year = {2025}
}
Aether represents an initial step in our journey, trained entirely on synthetic data. While it demonstrates promising capabilities, it is important to be aware of its current limitations:
We are actively working on the next generation of Aether and are committed to addressing these limitations in future releases.
This repository is licensed under the MIT License - see the LICENSE file for details. For any questions, please email to tonghe90[at]gmail[dot]com.
Our work is primarily built upon Accelerate, Diffusers, CogVideoX, Finetrainers, DepthAnyVideo, CUT3R, MonST3R, VBench, GST, SPA, DroidCalib, Grounded-SAM-2, ceres-solver, etc. We extend our gratitude to all these authors for their generously open-sourced code and their significant contributions to the community.
Python
99.6%
[ICCV 2025 & ICCV 2025 RIWM Outstanding Paper] Aether: Geometric-Aware Unified World Modeling
609
stars
14
commits
Python
primary language
Oct 26, 2025
updated
Aether addresses a fundamental challenge in AI: integrating geometric reconstruction with generative modeling for human-like spatial reasoning. Our framework unifies three core capabilities: (1) 🌏 4D dynamic reconstruction, (2) 🎬 action-conditioned video prediction, and (3) 🎯 goal-conditioned visual planning. Trained entirely on synthetic data, Aether achieves strong zero-shot generalization to real-world scenarios.
:partying_face: NEWS:
Note: We recommend using virtual environments such as Anaconda.
# clone project
git clone https://github.com/OpenRobotLab/Aether.git
cd Aether
# create conda environment
conda create -n aether python=3.10
conda activate aether
# install dependencies
pip install -r requirements.txt
Warning: When doing reconstruction, Aether pipeline automatically centers crop the input video if its size does not match 480x720. Therefore, for evaluation purpose, we have to slide a 480p window both on the spatial and temporal dimensions, and blend all windows' outputs both spatially and temporally. Examples of video depth and camera pose evaluation can be found at evaluation/.
4D reconstruction:
python scripts/demo.py --task reconstruction --video ./assets/example_videos/moviegen.mp4
Action-conditioned video prediction:
python scripts/demo.py --task prediction --image ./assets/example_obs/car.png --raymap_action assets/example_raymaps/raymap_forward_right.npy
Goal-conditioned visual planning:
python scripts/demo.py --task planning --image ./assets/example_obs_goal/01_obs.png --goal ./assets/example_obs_goal/01_goal.png
Results will be saved in ./outputs/ by default.
The Gradio demo provides an interactive web-based Aether experience.
python scripts/demo_gradio.py
Our local testing environment is deployed using an A100 GPU with 80GB of memory, and it is set to run on the local port 7860 by default.
Suppose you have a sequence of camera poses, you have to convert it to raymap action trajectories before inference with Aether.
Note that your camera poses should be within the camera coordinate system of the first frame.
You can use the camera_pose_to_raymap function in postprocess_utils.py.
# suppose you have the ground-truth depth values:
disparity = 1. / depth[depth > 0]
dmax = disparity.max()
# otherwise, you can set dmax to 1.0 by default:
dmax = 1.0
# then suppose we have a camera trajectory
# camera_pose: shape of (N, 4, 4), e.g. N = 41
# intrinsic: shape of (N, 3, 3), e.g. N = 41
from aether.utils.postprocess_utils import camera_pose_to_raymap
# we will get a raymap sequence of shape (N, 6, h, w)
# where h = image height // 8 and w = image width // 8
raymap = camera_pose_to_raymap(camera_pose=camera_pose, intrinsic=intrinsic, dmax=dmax)
# save the raymap
np.save("/path/to/your/raymap.npy", raymap)
If you find this work useful in your research, please consider citing:
@article{aether,
title = {Aether: Geometric-Aware Unified World Modeling},
author = {Aether Team and Haoyi Zhu and Yifan Wang and Jianjun Zhou and Wenzheng Chang and Yang Zhou and Zizun Li and Junyi Chen and Chunhua Shen and Jiangmiao Pang and Tong He},
journal = {arXiv preprint arXiv:2503.18945},
year = {2025}
}
Aether represents an initial step in our journey, trained entirely on synthetic data. While it demonstrates promising capabilities, it is important to be aware of its current limitations:
We are actively working on the next generation of Aether and are committed to addressing these limitations in future releases.
This repository is licensed under the MIT License - see the LICENSE file for details. For any questions, please email to tonghe90[at]gmail[dot]com.
Our work is primarily built upon Accelerate, Diffusers, CogVideoX, Finetrainers, DepthAnyVideo, CUT3R, MonST3R, VBench, GST, SPA, DroidCalib, Grounded-SAM-2, ceres-solver, etc. We extend our gratitude to all these authors for their generously open-sourced code and their significant contributions to the community.
Python
99.6%