Diffusers
Safetensors
chenchenshi commited on
Commit
1022a96
Β·
verified Β·
1 Parent(s): 3df8775

Upload README.md

Browse files
Files changed (1) hide show
  1. README.md +276 -3
README.md CHANGED
@@ -1,3 +1,276 @@
1
- ---
2
- license: mit
3
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div align="center">
2
+ <h1>DriveWAM: Video Generative Priors Enable Scalable World-Action Modeling for Autonomous Driving</h1>
3
+
4
+ <a href="https://arxiv.org/abs/2605.28544"><img src="https://img.shields.io/badge/Paper-b31b1b" alt="Paper"></a>
5
+ <a href="https://chenshi3.github.io/drivewam.github.io/"><img src="https://img.shields.io/badge/Project_Page-green" alt="Project Page"></a>
6
+
7
+ <br>
8
+
9
+ Chen Shi\*, Jinrui Xu\*, Shaoshuai Shi, Kehua Sheng, Bo Zhang, Li Jiang†
10
+
11
+ *The Chinese University of Hong Kong, Shenzhen &amp; Voyager Research, Didi Chuxing*
12
+
13
+ \*Equal Contribution, †Corresponding Author
14
+
15
+ </div>
16
+
17
+ **DriveWAM** is a joint **video generation and action prediction** model for autonomous driving. It adapts a pretrained video diffusion transformer into an **autoregressive video-action policy**, organizing video and action streams into a unified temporal token sequence trained under a joint flow-matching objective β€” preserving video generation priors while extending the model to ego-motion action prediction.
18
+
19
+ <!-- Demo video: add a github user-attachments link here -->
20
+
21
+ ## Highlights
22
+
23
+ ### NavSim
24
+
25
+ Comparison on NAVSIM v1. \*: results with imitation learning. †: trained with multiple trajectory anchors. MV: multi-view cameras; SV: single-view camera; L: LiDAR.
26
+
27
+ <div align="center">
28
+
29
+ | Method | Ref | Sensors | NC ↑ | DAC ↑ | TTC ↑ | C. ↑ | EP ↑ | PDMS ↑ |
30
+ |---|---|---|---|---|---|---|---|---|
31
+ | Human | – | – | 100.0 | 100.0 | 100.0 | 99.9 | 87.5 | 94.8 |
32
+ | UniAD | CVPR'23 | MV | 97.8 | 91.9 | 92.9 | 100.0 | 78.8 | 83.4 |
33
+ | TransFuser | TPAMI'23 | MV & L | 97.7 | 92.8 | 92.8 | 100.0 | 79.2 | 84.0 |
34
+ | PARA-Drive | CVPR'24 | MV | 97.9 | 92.4 | 93.0 | 99.8 | 79.3 | 84.0 |
35
+ | LAW | ICLR'25 | SV | 96.4 | 95.4 | 88.7 | 99.9 | 81.7 | 84.6 |
36
+ | DiffusionDrive | CVPR'25 | MV & L | 98.2 | 96.2 | 94.7 | 100.0 | 82.2 | 88.1 |
37
+ | WoTE | ICCV'25 | MV & L | 98.5 | 96.8 | 94.4 | 99.9 | 81.9 | 88.3 |
38
+ | *VLA-based Methods* | | | | | | | | |
39
+ | ReCogDrive\* | ICLR'26 | MV | 98.1 | 94.7 | 94.2 | 100.0 | 80.9 | 86.5 |
40
+ | DriveVLA-W0 | ICLR'26 | SV | 98.7 | 96.2 | 95.5 | 100.0 | 82.2 | 88.4 |
41
+ | AutoVLA | NeurIPS'25 | MV | 98.4 | 95.6 | 98.0 | 99.9 | 81.9 | 89.1 |
42
+ | DriveDreamer-Policy | arXiv'26 | MV | 98.4 | 97.1 | 95.1 | 100.0 | 83.5 | 89.2 |
43
+ | DriveVLA-W0† | ICLR'26 | SV | 98.7 | 99.1 | 95.3 | 99.3 | 83.3 | 90.2 |
44
+ | *WA-based Methods* | | | | | | | | |
45
+ | Epona | ICCV'25 | SV | 97.9 | 95.1 | 93.8 | 99.9 | 80.4 | 86.2 |
46
+ | WorldDrive | arXiv'26 | SV | 98.4 | 95.8 | 95.2 | 99.8 | 83.3 | 89.0 |
47
+ | **DriveWAM (Ours)** | – | SV | 98.3 | **98.1** | 95.2 | 100.0 | **84.3** | **90.1** |
48
+
49
+ </div>
50
+
51
+ ### PhysicalAI-AV
52
+
53
+ Comparison on PhysicalAI-Autonomous-Vehicles.
54
+
55
+ <div align="center">
56
+
57
+ | Method | Source | ADE@3s ↓ | FDE@3s ↓ | ADE@4s ↓ | FDE@4s ↓ |
58
+ |---|---|---|---|---|---|
59
+ | VaVAM | Valeo | 2.31 | 4.32 | - | - |
60
+ | Alpamayo-1.5 | NVIDIA | 0.80 | 2.31 | 1.44 | 4.18 |
61
+ | **DriveWAM (Ours)** | β€” | **0.47** | **1.35** | **0.83** | **2.47** |
62
+
63
+ </div>
64
+
65
+ ### Qualitative Results
66
+
67
+ <div align="center">
68
+
69
+ ![Qualitative Results](assets/result_vis.jpg)
70
+
71
+ </div>
72
+
73
+ ### Data Scaling
74
+
75
+ DriveWAM's action prediction error improves consistently as training data scales from 4k to 100k clips. Scene-evolving (SE) guidance provides complementary benefit at every scale.
76
+
77
+ <div align="center">
78
+
79
+ <img src="assets/data_scaling.jpg" width="300">
80
+
81
+ | # Clips | # Iters | SE Guidance | ADE@4s ↓ | FDE@4s ↓ |
82
+ |---|---|---|---|---|
83
+ | 4k | 50k | βœ— | 1.21 | 3.65 |
84
+ | 4k | 50k | βœ“ | 1.01 | 2.95 |
85
+ | 20k | 50k | βœ— | 0.95 | 2.94 |
86
+ | 20k | 50k | βœ“ | 0.94 | 2.65 |
87
+ | 100k | 50k | βœ— | 0.92 | 2.75 |
88
+ | 100k | 50k | βœ“ | **0.83** | **2.47** |
89
+
90
+ </div>
91
+
92
+ ## News
93
+ - [Jun 7, 2026] We open-source all code and model weights.
94
+ - [May 27, 2026] We release the paper and project page.
95
+
96
+ ## Getting Started
97
+
98
+ ### Installation
99
+
100
+ First, clone this repository and set up the environment.
101
+
102
+ ```bash
103
+ git clone <repo-url>
104
+ cd DriveWAM
105
+
106
+ # 1. Create conda environment
107
+ conda env create -f environment.yml
108
+ conda activate drivewam
109
+
110
+ # 2. Install PyTorch (CUDA 12.6)
111
+ pip install torch==2.9.0 torchvision==0.24.0 --index-url https://download.pytorch.org/whl/cu126
112
+
113
+ # 3. Install Flash Attention
114
+ pip install flash-attn==2.8.3 --no-build-isolation
115
+ ```
116
+
117
+ Two optional extras, installed when you need the corresponding feature:
118
+
119
+ ```bash
120
+ # NavSim evaluation extras (for the NavSim benchmark)
121
+ pip install -r requirements-navsim.txt
122
+
123
+ # VLM preprocessing extras (to generate navigation guidance)
124
+ pip install vllm qwen-vl-utils
125
+ ```
126
+
127
+ ## Data Preparation
128
+
129
+ DriveWAM trains and evaluates on two benchmarks. Prepare whichever you need.
130
+
131
+ ### NavSim
132
+
133
+ Follow the [NavSim installation guide](https://github.com/autonomousvision/navsim) to download the nuPlan-based dataset and cache metric files, and export the environment variables from that guide (`OPENSCENE_DATA_ROOT`, `NUPLAN_MAPS_ROOT`, `NUPLAN_MAP_VERSION`). Then extract per-scene samples:
134
+
135
+ ```bash
136
+ # navtrain split (training)
137
+ python -m src.navsim.process_data --output-path ./data/navsim/trainval
138
+
139
+ # navtest split (evaluation)
140
+ python -m src.navsim.process_data \
141
+ --navsim-log-path $OPENSCENE_DATA_ROOT/navsim_logs/test \
142
+ --sensor-blobs-path $OPENSCENE_DATA_ROOT/sensor_blobs/test \
143
+ --scene-filter-config navsim/planning/script/config/common/train_test_split/scene_filter/navtest.yaml \
144
+ --output-path ./data/navsim/test
145
+ ```
146
+
147
+ Each scene becomes one pkl file, which is what the training and evaluation scripts read by default:
148
+
149
+ ```
150
+ ./data/navsim/trainval/
151
+ sample_000000.pkl
152
+ sample_000001.pkl
153
+ ...
154
+ ```
155
+
156
+ ### PhysicalAI-Autonomous-Vehicles
157
+
158
+ The raw dataset is hosted on [Hugging Face](https://huggingface.co/datasets/nvidia/PhysicalAI-Autonomous-Vehicles) and accessed through the [physical_ai_av](https://github.com/NVlabs/physical_ai_av) devkit. The devkit requires Python β‰₯ 3.11, so install it in a separate environment from `drivewam`:
159
+
160
+ ```bash
161
+ pip install physical_ai_av
162
+ ```
163
+
164
+ Accept the dataset license on the Hugging Face page, then download the dataset (or a subset of chunks) to `./data/physicalai`. DriveWAM only needs the **`camera_front_wide_120fov`** camera plus the egomotion and calibration features. Extract 10 Hz clips from the download:
165
+
166
+ ```bash
167
+ python -m src.physicalai.process_data \
168
+ --dataset_root ./data/physicalai \
169
+ --output_dir ./data/physicalai/front \
170
+ --num_workers 16
171
+ ```
172
+
173
+ This writes one directory per clip:
174
+
175
+ ```
176
+ ./data/physicalai/
177
+ β”œβ”€β”€ clip_index.parquet # official train/test split; keep it even if you prune the raw chunks
178
+ └── front/
179
+ └── <clip_id>/
180
+ β”œβ”€β”€ camera_front_wide_120fov.mp4
181
+ └── camera_front_wide_120fov_ego.pkl
182
+ ```
183
+
184
+ VLM navigation prompts are used as conditioning during training and inference. We provide pregenerated prompts: training-split prompts are available on [Hugging Face](https://huggingface.co/chenchenshi/DriveWAM); the 1k-sample test-split prompts used for evaluation are included in the repo at `src/physicalai/eval_data/prompts_test_sample_1k.json`. To regenerate them yourself:
185
+
186
+ ```bash
187
+ # Step 1 – generate route / BEV / scene-evolving guidance
188
+ bash scripts/drivewam_physicalai_vlm_preprocess.sh
189
+
190
+ # Step 2 – VLM-based clip quality filtering and sub-sampling
191
+ SPLIT=train \
192
+ bash scripts/drivewam_physicalai_vlm_data_sample.sh
193
+ ```
194
+
195
+ ## Training
196
+
197
+ DriveWAM model checkpoints are available on [Hugging Face](https://huggingface.co/chenchenshi/DriveWAM). DriveWAM is trained on top of [LingBot-VA Base](https://huggingface.co/robbyant/lingbot-va-base), a pretrained autoregressive diffusion transformer. Download the base model weights before training.
198
+
199
+ Key training hyperparameters (see configs for full details):
200
+
201
+ | Hyperparameter | NavSim / PhysicalAI |
202
+ |---|---|
203
+ | Training steps | 50 000 |
204
+ | Learning rate | 1e-5 |
205
+ | Optimizer | AdamW (β₁=0.9, Ξ²β‚‚=0.95, wd=0.1) |
206
+ | Warmup steps | 10 |
207
+ | Batch size (per GPU) | 1 |
208
+ | Precision | bfloat16 |
209
+ | Input resolution | 256Γ—448 |
210
+ | SNR shift (video / action) | 5.0 / 1.0 |
211
+
212
+ All experiments are conducted on 48 Γ— NVIDIA H20 GPUs.
213
+
214
+ Edit the config (`src/configs/navsim_cfg.py` or `src/configs/physicalai_cfg.py`) to set your paths and hyperparameters, then launch with the matching script:
215
+
216
+ | Benchmark | Config | Launch script |
217
+ |---|---|---|
218
+ | NavSim | `src/configs/navsim_cfg.py` | `scripts/drivewam_navsim_train.sh` |
219
+ | PhysicalAI | `src/configs/physicalai_cfg.py` | `scripts/drivewam_physicalai_train.sh` |
220
+
221
+ ```bash
222
+ # NavSim
223
+ bash scripts/drivewam_navsim_train.sh
224
+
225
+ # PhysicalAI
226
+ bash scripts/drivewam_physicalai_train.sh
227
+ ```
228
+
229
+ For PhysicalAI, we provide three CSV files listing clip IDs at different training data scales (4k / 20k / 100k clips), available on [Hugging Face](https://huggingface.co/chenchenshi/DriveWAM). Set the `clip_csv` field in `src/configs/physicalai_cfg.py` to the desired scale before training.
230
+
231
+ ## Evaluation
232
+
233
+ ### NavSim (PDM Score)
234
+
235
+ PDM score evaluation requires a metric cache β€” a set of per-scenario `.pkl` files that store precomputed map and route information to score each predicted trajectory. The precomputed metric cache for the navtest split is available for download on [Hugging Face](https://huggingface.co/chenchenshi/DriveWAM). To generate it yourself, run:
236
+
237
+ ```bash
238
+ python navsim/planning/script/run_metric_caching.py \
239
+ train_test_split=navtest \
240
+ cache.cache_path=./data/navsim/metric_cache
241
+ ```
242
+
243
+ This writes one `metric_cache.pkl` per scenario token under `./data/navsim/metric_cache/`. Pass the resulting directory to the evaluation script via `--metric-cache-path`.
244
+
245
+ ```bash
246
+ python -m src.navsim.eval \
247
+ --checkpoint-path /path/to/checkpoint \
248
+ --config-name navsim_cfg \
249
+ --dataset-path ./data/navsim/test \
250
+ --metric-cache-path ./data/navsim/metric_cache
251
+ ```
252
+
253
+ ### PhysicalAI
254
+
255
+ ```bash
256
+ python -m src.physicalai.eval \
257
+ --checkpoint-path /path/to/checkpoint \
258
+ --config-name physicalai_cfg
259
+ ```
260
+
261
+ ## Citation
262
+
263
+ If you find DriveWAM useful, please cite:
264
+
265
+ ```bibtex
266
+ @article{shi2026drivewam,
267
+ title={DriveWAM: Video Generative Priors Enable Scalable World-Action Modeling for Autonomous Driving},
268
+ author={Shi, Chen and Xu, Jinrui and Shi, Shaoshuai and Sheng, Kehua and Zhang, Bo and Jiang, Li},
269
+ journal={arXiv preprint arXiv:2605.28544},
270
+ year={2026}
271
+ }
272
+ ```
273
+
274
+ ## Acknowledgements
275
+
276
+ We gratefully acknowledge the following open-source projects that DriveWAM builds upon: [Wan2.2](https://github.com/Wan-Video/Wan2.2), [LingBot-VA](https://github.com/robbyant/lingbot-va), [NavSim](https://github.com/autonomousvision/navsim), [NVIDIA PhysicalAI-Autonomous-Vehicles](https://huggingface.co/datasets/nvidia/PhysicalAI-Autonomous-Vehicles).