Skip to content

Commit e7e080b

Browse files
committed
bug fixed
1 parent 9bae143 commit e7e080b

26 files changed

Lines changed: 83 additions & 38 deletions

README.md

Lines changed: 53 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
- [Table of Contents](#table-of-contents)
2525
- [Highlights](#highlights)
2626
- [News](#news)
27+
- [Benchmark](#benchmark)
28+
- [Qualitative Results — Closed-Loop Simulation (nuPlan)](#qualitative-results--closed-loop-simulation-nuplan)
29+
- [On-Road Deployment — Night Urban Driving](#on-road-deployment--night-urban-driving)
2730
- [System Architecture](#system-architecture)
2831
- [Roadmap](#roadmap)
2932
- [Getting Started](#getting-started)
@@ -55,19 +58,61 @@
5558
- **[2026/04/08]** Official code repository established. Data publication under preparation.
5659

5760

58-
<!-- ## Demonstrations
5961

60-
The following GIFs demonstrate WorldEngine's production-scale validation in **night urban road scenarios**:
62+
## Benchmark
63+
64+
We compare different post-training paradigms on the nuPlan dataset, evaluating on both open-loop and closed-loop metrics across common and rare driving scenarios.
65+
66+
> **Metric notes:**
67+
> - **Open-loop PDMS** is aligned with [NAVSIM v1.1](https://github.com/autonomousvision/navsim) PDM Score. *Common* denotes the standard `navtest` split; *Rare* denotes the `navtest_failures` subset — failure-prone rare-case scenarios extracted from `navtest`.
68+
> - **Closed-loop Success Rate** is defined as the fraction of simulated driving episodes completed without collision or off-road failure.
69+
> - **Closed-loop PDMS*** is the PDM Score obtained via SimEngine closed-loop testing, where the planner interacts with reactive agents in simulation under real-time rendering.
70+
>
71+
> **Training notes:**
72+
> - **Rare logs** are failure-prone scenarios automatically extracted from `navtrain` by the pre-trained agent itself (see [Rare Case Extraction](docs/algengine_usage.md#rare-case-extraction)).
73+
> - **Common logs** are the standard cases in `navtrain`.
74+
75+
| Method | Open-loop PDMS ↑ (common) | Open-loop PDMS ↑ (rare) | Closed-loop Success Rate ↑ | Closed-loop PDMS*|
76+
|:-------|:-------------------------:|:-----------------------:|:--------------------------:|:--------------------:|
77+
| Base model | 85.62 | 47.15 | 73.61 | 60.28 |
78+
| Supervised fine-tuning on rare logs | 87.03 | 49.68 | 73.26 | 62.26 |
79+
| Post-training on common logs | 86.15 | 51.49 | 64.58 | 56.66 |
80+
| Post-training on rare logs | 89.29 | 62.56 | 74.31 | 62.55 |
81+
| Post-training on rare synthetic replays | 88.01 | 56.62 | 76.39 | 62.11 |
82+
| Post-training on rare rollouts w/o Behaviour WM | 88.99 | 59.69 | 85.07 | 68.29 |
83+
| **Post-training with WorldEngine** | **88.95** | **59.83** | **88.89** | **70.12** |
84+
85+
**Key findings:**
86+
- Post-training on **rare logs** significantly outperforms supervised fine-tuning (62.56 vs 49.68 open-loop rare PDMS), demonstrating the advantage of reward-guided optimization over imitation.
87+
- Post-training on **common logs** provides limited benefit and even degrades closed-loop performance (success rate drops from 73.61% to 64.58%), confirming that long-tail event discovery is essential.
88+
- The full **WorldEngine** pipeline achieves the best closed-loop performance (**88.89%** success rate, **70.12** PDMS*), a **+15.28%** absolute improvement in success rate over the base model.
89+
90+
### Qualitative Results — Closed-Loop Simulation (nuPlan)
91+
92+
Each pair shows the **Base model (FAIL)** vs **WorldEngine post-trained model (PASS)** on the same rare-case scenario. Left: front-camera rendering; Right: BEV trajectory visualization.
6193

6294
<div align="center">
95+
<table>
96+
<tr>
97+
<td><img src="docs/imgs/nuplan_1.png" width="400px"></td>
98+
<td><img src="docs/imgs/nuplan_2.png" width="400px"></td>
99+
</tr>
100+
<tr>
101+
<td><img src="docs/imgs/nuplan_3.png" width="400px"></td>
102+
<td><img src="docs/imgs/nuplan_4.png" width="400px"></td>
103+
</tr>
104+
</table>
105+
</div>
63106

64-
**On-road Testing good cases (Night scenes)**
107+
### On-Road Deployment — Night Urban Driving
65108

66-
<img src="docs/gif/WE_road_night_01.gif" width="800px" ><br>
67-
<img src="docs/gif/WE_road_night_02.gif" width="800px" ><br>
68-
<img src="docs/gif/WE_road_night_03.gif" width="800px" >
109+
Zero disengagements in 200 km on-road testing on a mass-produced ADAS platform.
69110

70-
</div> -->
111+
<div align="center">
112+
<img src="docs/gif/WE_road_night_01.gif" width="270px">
113+
<img src="docs/gif/WE_road_night_02.gif" width="270px">
114+
<img src="docs/gif/WE_road_night_03.gif" width="270px">
115+
</div>
71116

72117

73118
## System Architecture
@@ -289,6 +334,7 @@ We acknowledge all the open-source contributors for the following projects to ma
289334
| [![nerfstudio](https://img.shields.io/badge/nerfstudio-NeRF_Framework-green?style=flat-square&logo=github)](https://github.com/nerfstudio-project/nerfstudio) | Collaboration-friendly NeRF toolkit |
290335
| [![MMDetection3D](https://img.shields.io/badge/MMDetection3D-3D_Detection-orange?style=flat-square&logo=github)](https://github.com/open-mmlab/mmdetection3d) | 3D detection framework |
291336
| [![UniAD](https://img.shields.io/badge/UniAD-End--to--End_AD-red?style=flat-square&logo=github)](https://github.com/OpenDriveLab/UniAD) | End-to-end autonomous driving framework |
337+
| [![NAVSIM](https://img.shields.io/badge/NAVSIM-AD_Benchmark-teal?style=flat-square&logo=github)](https://github.com/autonomousvision/navsim) | Non-reactive autonomous vehicle simulation benchmark |
292338
| [![nuPlan](https://img.shields.io/badge/nuPlan-Dataset-purple?style=flat-square&logo=github)](https://www.nuscenes.org/nuplan) | Large-scale autonomous driving dataset |
293339
| [![MetaDrive](https://img.shields.io/badge/MetaDrive-Driving_Simulation-ff69b4?style=flat-square&logo=github)](https://github.com/metadriverse/metadrive) | Compositional driving simulation platform |
294340
| [![Ray](https://img.shields.io/badge/Ray-Distributed_Computing-yellow?style=flat-square&logo=ray)](https://github.com/ray-project/ray) | Distributed execution framework |

docs/data_organization.md

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,17 @@ We provide pre-processed datasets and model checkpoints via **ModelScope** and *
2525

2626
### Option 1: Download from ModelScope (Recommended for Users in China)
2727

28-
​```bash
29-
30-
pip install modelscope
31-
modelscope download --dataset OpenDriveLab/WorldEngine
32-
​```
28+
```bash
29+
pip install modelscope
30+
modelscope download --dataset OpenDriveLab/WorldEngine
31+
```
3332

3433
### Option 2: Download from Hugging Face (Coming Soon)
3534

36-
​```bash
37-
38-
pip install huggingface-hub
39-
hf download OpenDriveLab/WorldEngine
40-
​```
35+
```bash
36+
pip install huggingface-hub
37+
hf download OpenDriveLab/WorldEngine
38+
```
4139

4240
> **Note:** Dataset and model URLs will be announced once the official release is ready. Stay tuned to our [News section](../README.md#-news).
4341

docs/imgs/nuplan_1.png

1.32 MB
Loading

docs/imgs/nuplan_2.png

1.39 MB
Loading

docs/imgs/nuplan_3.png

1.34 MB
Loading

docs/imgs/nuplan_4.png

1.78 MB
Loading

docs/simengine_usage.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ This guide covers how to use SimEngine for closed-loop simulation, rollout gener
1818

1919
```bash
2020

21-
cd $SIMENGINE_ROOT
21+
cd projects/SimEngine
2222

2323
# Single-GPU testing
2424
bash scripts/run_testing.sh <config> <checkpoint> <model_name> <data_type> <react_type> [<asset_name>]

projects/AlgEngine/closed_loop/sim_test.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from closed_loop.post_processor import ScorePostProcessor
2525

2626
warnings.filterwarnings("ignore")
27+
WORLDENGINE_ROOT = os.getenv('WORLDENGINE_ROOT', os.path.abspath('.'))
2728

2829
def parse_args():
2930
parser = argparse.ArgumentParser(
@@ -238,7 +239,7 @@ def main():
238239
sim_cfg = ConfigDict(dict(
239240
max_wait_time=50,
240241
maximum_step=100000000,
241-
post_process_path='test_8192_kmeans.npy',
242+
post_process_path=os.path.join(WORLDENGINE_ROOT, "data/alg_engine/test_8192_kmeans.npy"),
242243
plan_save_path='',
243244
merged_ann_save_dir = '',
244245
monitored_folder = ''

projects/AlgEngine/configs/navformer/e2e_hydramdp.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@
244244
num_poses=40,
245245
d_ffn=256 * 4,
246246
d_model=256,
247-
vocab_path='test_8192_kmeans.npy',
247+
vocab_path=os.path.join(WORLDENGINE_ROOT, "data/alg_engine/test_8192_kmeans.npy"),
248248
nhead=8,
249249
nlayers=1,
250250
num_commands=4,

projects/AlgEngine/configs/navformer/e2e_vadv2.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@
244244
num_poses=40,
245245
d_ffn=256 * 4,
246246
d_model=256,
247-
vocab_path='test_8192_kmeans.npy',
247+
vocab_path=os.path.join(WORLDENGINE_ROOT, "data/alg_engine/test_8192_kmeans.npy"),
248248
nhead=8,
249249
nlayers=1,
250250
num_commands=4,

0 commit comments

Comments
 (0)