[CVPR2026] Chain of World: World Model Thinking in Latent Motion
Python
68
2 commits
updated Mar 4, 2026

CoWVLA is a Vision-Language-Action (VLA) framework that combines world-model temporal reasoning with disentangled latent motion modeling.
Instead of reconstructing every future frame or learning only pairwise latent actions, CoWVLA:
This design keeps the temporal reasoning benefits of world models, avoids redundant background reconstruction, and preserves the compactness and interpretability of latent motion.
conda create -n cowvla python=3.10
conda activate cowvla
cd third_party/RoboVLMs
pip install -e .
pip install -r requirements.txt
Notes:
requirements.txt currently contains environment-specific dependencies such as a local flash_attn wheel path. Replace them with packages that match your CUDA and PyTorch stack before installation.| Benchmark | Metric | CoWVLA |
|---|---|---|
| LIBERO | Spatial / Object / Goal / Long / Avg. | 97.2 / 97.8 / 94.6 / 92.8 / 95.6 |
| SimplerEnv-WidowX | Stack Block / Put Carrot / Put Spoon / Put Eggplant / Avg. | 62.5 / 66.7 / 79.2 / 95.8 / 76.0 |
Evaluation code is provided mainly through reference/RoboVLMs.
The setup scripts install dependencies for different benchmarks. Run the appropriate script based on your evaluation target:
reference/RoboVLMs/scripts/setup_libero.shreference/RoboVLMs/scripts/setup_simplerenv.shreference/RoboVLMs/scripts/setup_simplerenv_vla.shreference/RoboVLMs/scripts/setup_calvin.shThe LIBERO evaluation workflow is designed around labtasker(https://github.com/luocfprime/labtasker) so that many checkpoints can be scheduled across multiple machines.
cd reference/RoboVLMs
python submit_libero.py
python run.py 0
python run.py 1
Before running:
reference/RoboVLMs/submit_libero.pylabtaskercd reference/RoboVLMs
bash scripts/eval_bridge.sh
Before running:
model_ckpt_paths in reference/RoboVLMs/scripts/eval_bridge.shThe paper uses 236,543 robot videos from OXE-style datasets plus simulator data for latent motion extractor fine-tuning and VLA pre-training.
| Dataset | Count |
|---|---|
| Berkeley Autolab UR5 | 892 |
| BridgeV2 | 24,879 |
| CMU Play Fusion | 576 |
| Fractal | 65,530 |
| Kuka | 84,202 |
| Maniskill | 30,029 |
| Taco Play | 3,242 |
| Toto | 899 |
| Utaustin Mutex | 1,500 |
| Viola | 135 |
| Calvin | 22,966 |
| LIBERO | 1,693 |
| Total | 236,543 |
The repository follows a four-step data pipeline:
.npy files..pkl metadata files.Examples:
tools/process/simplerenv_google.pytools/process/simplerenv_bridge.pytools/process/calvin_process.py or tools/process/calvin_process_parallel.pytools/process/libero_process.pyExample for Fractal:
python tools/process/simplerenv_google.py \
--dataset_dir /path/to/fractal20220817_data \
--output_dir /path/to/processed/oxembodiment/fractal
Example for BridgeV2:
python tools/process/simplerenv_bridge.py \
--dataset_dir /path/to/bridgev2 \
--output_dir /path/to/processed/oxembodiment/bridge
Download the tokenizer first:
Then run the tokenizer script:
bash scripts/tokenizer/extract_vq_emu3.sh
Important:
scripts/tokenizer/extract_vq_emu3.sh is an example script and contains hardcoded dataset names, GPU IDs, and output locations.models/tokenizer/emu3_tokenizer.py also contains dataset-specific path configuration. Edit both files to match your local environment before launching tokenization.Examples:
python tools/pickle_gen/pickle_generation_simplerenv_google.py
python tools/pickle_gen/pickle_generation_simplerenv_bridge.py
The metadata stores fields such as:
text: language instructionimage or gripper_image: list of tokenized image code pathsaction: robot action sequenceorig_img_list: original image paths for some datasetsTo merge multiple datasets for pre-training:
python tools/pickle_gen/world_model_pretrain.py
Or use the parallel version:
python tools/pickle_gen/world_model_pretrain_multi.py
These scripts also contain internal absolute paths and should be edited before use.
FAST action tokenizers used by the released scripts are already included under:
pretrain/fastpretrain/fast_bridge_t5_s50Before launching training, update the following in the shell scripts:
WORKDIRmodel_name_or_pathlatent_action_model_pathGPU_NUM, NODE_NUM, RANK, MASTER_ADDR, and MASTER_PORTbash scripts/pretrain/train_video_vidtwin.sh
Paper setting:
bash scripts/simulator/libero/train_libero.sh
Paper setting:
bash scripts/simulator/bridge/train_simplerenv_bridge.sh
Paper setting:
The current example script uses a longer default training schedule. Change it if you want to reproduce the exact paper setting.
This project builds upon several excellent open-source efforts:
If this repository is useful for your research, please cite:
@inproceedings{yang2026cowvla,
title = {Chain of World: World Model Thinking in Latent Motion},
author = {Yang, Fuxiang and Di, Donglin and Tang, Lulu and Zhang, Xuancheng and Fan, Lei and Li, Hao and Chen, Wei and Su, Tonghua and Ma, Baorui},
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
year = {2026}
}
[CVPR2026] Chain of World: World Model Thinking in Latent Motion
Python
68
2 commits
updated Mar 4, 2026

CoWVLA is a Vision-Language-Action (VLA) framework that combines world-model temporal reasoning with disentangled latent motion modeling.
Instead of reconstructing every future frame or learning only pairwise latent actions, CoWVLA:
This design keeps the temporal reasoning benefits of world models, avoids redundant background reconstruction, and preserves the compactness and interpretability of latent motion.
conda create -n cowvla python=3.10
conda activate cowvla
cd third_party/RoboVLMs
pip install -e .
pip install -r requirements.txt
Notes:
requirements.txt currently contains environment-specific dependencies such as a local flash_attn wheel path. Replace them with packages that match your CUDA and PyTorch stack before installation.| Benchmark | Metric | CoWVLA |
|---|---|---|
| LIBERO | Spatial / Object / Goal / Long / Avg. | 97.2 / 97.8 / 94.6 / 92.8 / 95.6 |
| SimplerEnv-WidowX | Stack Block / Put Carrot / Put Spoon / Put Eggplant / Avg. | 62.5 / 66.7 / 79.2 / 95.8 / 76.0 |
Evaluation code is provided mainly through reference/RoboVLMs.
The setup scripts install dependencies for different benchmarks. Run the appropriate script based on your evaluation target:
reference/RoboVLMs/scripts/setup_libero.shreference/RoboVLMs/scripts/setup_simplerenv.shreference/RoboVLMs/scripts/setup_simplerenv_vla.shreference/RoboVLMs/scripts/setup_calvin.shThe LIBERO evaluation workflow is designed around labtasker(https://github.com/luocfprime/labtasker) so that many checkpoints can be scheduled across multiple machines.
cd reference/RoboVLMs
python submit_libero.py
python run.py 0
python run.py 1
Before running:
reference/RoboVLMs/submit_libero.pylabtaskercd reference/RoboVLMs
bash scripts/eval_bridge.sh
Before running:
model_ckpt_paths in reference/RoboVLMs/scripts/eval_bridge.shThe paper uses 236,543 robot videos from OXE-style datasets plus simulator data for latent motion extractor fine-tuning and VLA pre-training.
| Dataset | Count |
|---|---|
| Berkeley Autolab UR5 | 892 |
| BridgeV2 | 24,879 |
| CMU Play Fusion | 576 |
| Fractal | 65,530 |
| Kuka | 84,202 |
| Maniskill | 30,029 |
| Taco Play | 3,242 |
| Toto | 899 |
| Utaustin Mutex | 1,500 |
| Viola | 135 |
| Calvin | 22,966 |
| LIBERO | 1,693 |
| Total | 236,543 |
The repository follows a four-step data pipeline:
.npy files..pkl metadata files.Examples:
tools/process/simplerenv_google.pytools/process/simplerenv_bridge.pytools/process/calvin_process.py or tools/process/calvin_process_parallel.pytools/process/libero_process.pyExample for Fractal:
python tools/process/simplerenv_google.py \
--dataset_dir /path/to/fractal20220817_data \
--output_dir /path/to/processed/oxembodiment/fractal
Example for BridgeV2:
python tools/process/simplerenv_bridge.py \
--dataset_dir /path/to/bridgev2 \
--output_dir /path/to/processed/oxembodiment/bridge
Download the tokenizer first:
Then run the tokenizer script:
bash scripts/tokenizer/extract_vq_emu3.sh
Important:
scripts/tokenizer/extract_vq_emu3.sh is an example script and contains hardcoded dataset names, GPU IDs, and output locations.models/tokenizer/emu3_tokenizer.py also contains dataset-specific path configuration. Edit both files to match your local environment before launching tokenization.Examples:
python tools/pickle_gen/pickle_generation_simplerenv_google.py
python tools/pickle_gen/pickle_generation_simplerenv_bridge.py
The metadata stores fields such as:
text: language instructionimage or gripper_image: list of tokenized image code pathsaction: robot action sequenceorig_img_list: original image paths for some datasetsTo merge multiple datasets for pre-training:
python tools/pickle_gen/world_model_pretrain.py
Or use the parallel version:
python tools/pickle_gen/world_model_pretrain_multi.py
These scripts also contain internal absolute paths and should be edited before use.
FAST action tokenizers used by the released scripts are already included under:
pretrain/fastpretrain/fast_bridge_t5_s50Before launching training, update the following in the shell scripts:
WORKDIRmodel_name_or_pathlatent_action_model_pathGPU_NUM, NODE_NUM, RANK, MASTER_ADDR, and MASTER_PORTbash scripts/pretrain/train_video_vidtwin.sh
Paper setting:
bash scripts/simulator/libero/train_libero.sh
Paper setting:
bash scripts/simulator/bridge/train_simplerenv_bridge.sh
Paper setting:
The current example script uses a longer default training schedule. Change it if you want to reproduce the exact paper setting.
This project builds upon several excellent open-source efforts:
If this repository is useful for your research, please cite:
@inproceedings{yang2026cowvla,
title = {Chain of World: World Model Thinking in Latent Motion},
author = {Yang, Fuxiang and Di, Donglin and Tang, Lulu and Zhang, Xuancheng and Fan, Lei and Li, Hao and Chen, Wei and Su, Tonghua and Ma, Baorui},
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
year = {2026}
}