|
| 1 | +# Waymo Open Sim Agent Challenge (WOSAC) Benchmark |
| 2 | + |
| 3 | +We provide a re-implementation of the [Waymo Open Sim Agent Challenge (WOSAC)](https://waymo.com/research/the-waymo-open-sim-agents-challenge/), which measures _distributional realism_ of simulated trajectories compared to logged human trajectories. Our version preserves the original logic and metric weighting but uses PyTorch on GPU for the metrics computation, unlike the original TensorFlow CPU implementation. The code is also simplified for clarity, making it easier to understand, adapt, and extend. |
| 4 | + |
| 5 | +**Note:** In PufferDrive, agents are conditioned on a "goal" represented as a single (x, y) position, reflecting that drivers typically have a high-level destination in mind. Evaluating whether an agent matches human distributional properties can be decomposed into: (1) inferring a person's intended direction from context (1 second in WOSAC) and (2) navigating toward that goal in a human-like manner. We focus on the second component, though the evaluation could be adapted to include behavior prediction as in the original WOSAC. |
| 6 | + |
| 7 | +[TODO: ADD bar graphs] |
| 8 | + |
| 9 | +## Usage |
| 10 | + |
| 11 | +### Running a single evaluation from a checkpoint |
| 12 | + |
| 13 | +The `[eval]` section in `drive.ini` contains all relevant configurations. To run the WOSAC eval once: |
| 14 | + |
| 15 | +```bash |
| 16 | +puffer eval puffer_drive --eval.wosac-realism-eval True --load-model-path <your-trained-policy>.pt |
| 17 | +``` |
| 18 | + |
| 19 | +The default configs aim to emulate the WOSAC settings as closely as possible, but you can adjust them: |
| 20 | + |
| 21 | +```ini |
| 22 | +wosac_num_rollouts = 32 # Number of policy rollouts per scene |
| 23 | +wosac_init_steps = 10 # When to start the simulation |
| 24 | +wosac_num_agents = 256 # Total number of WOSAC agents to evaluate |
| 25 | +wosac_control_mode = "control_wosac" # Control the tracks to predict |
| 26 | +wosac_init_mode = "create_all_valid" # Initialize from the tracks to predict |
| 27 | +wosac_goal_behavior = 2 # Stop when reaching the goal |
| 28 | +wosac_goal_radius = 2.0 # Can shrink goal radius for WOSAC evaluation |
| 29 | +``` |
| 30 | + |
| 31 | +### Log evals to W&B during training |
| 32 | + |
| 33 | +During experimentation, logging key metrics directly to W&B avoids a post-training step. Evaluations can be enabled during training, with results logged under a separate `eval/` section. The main configuration options: |
| 34 | + |
| 35 | +```ini |
| 36 | +[train] |
| 37 | +checkpoint_interval = 500 # Set equal to eval_interval to use the latest checkpoint |
| 38 | + |
| 39 | +[eval] |
| 40 | +eval_interval = 500 # Run eval every N epochs |
| 41 | +map_dir = "resources/drive/binaries/training" # Dataset to use |
| 42 | +``` |
| 43 | + |
| 44 | +## Baselines |
| 45 | + |
| 46 | +We provide baselines on a small curated dataset from the WOMD validation set with perfect ground-truth (no collisions or off-road events from labeling mistakes). |
| 47 | + |
| 48 | +| Method | Realism meta-score | Kinematic metrics | Interactive metrics | Map-based metrics | minADE | ADE | |
| 49 | +|--------|-------------------|-------------------|---------------------|-------------------|--------|------| |
| 50 | +| Ground-truth (UB) | 0.832 | 0.606 | 0.846 | 0.961 | 0 | 0 | |
| 51 | +| π_Base self-play RL | - | - | - | - | - | - | |
| 52 | +| [SMART](https://arxiv.org/abs/2405.15677) | 0.805 | 0.534 | 0.830 | 0.949 | 1.124 | 3.123 | |
| 53 | +| π_Random | 0.485 | 0.214 | 0.657 | 0.408 | 6.477 | 18.286 | |
| 54 | + |
| 55 | +*Table: WOSAC baselines in PufferDrive on 229 selected clean held-out validation scenarios.* |
| 56 | + |
| 57 | +--- |
| 58 | + |
| 59 | +> ✏️ Download the dataset from [Hugging Face](https://huggingface.co/datasets/daphne-cornelisse/pufferdrive_wosac_val_clean) to reproduce these results or benchmark your policy. |
| 60 | +
|
| 61 | +--- |
| 62 | + |
| 63 | +## Useful links |
| 64 | + |
| 65 | +- [WOSAC challenge and leaderboard](https://waymo.com/open/challenges/2025/sim-agents/) |
| 66 | +- [Sim agent challenge tutorial](https://github.com/waymo-research/waymo-open-dataset/blob/master/tutorial/tutorial_sim_agents.ipynb) |
| 67 | +- [Reference paper introducing WOSAC](https://arxiv.org/pdf/2305.12032) |
| 68 | +- [Metrics entry point](https://github.com/waymo-research/waymo-open-dataset/blob/master/src/waymo_open_dataset/wdl_limited/sim_agents_metrics/metrics.py) |
| 69 | +- [Log-likelihood estimators](https://github.com/waymo-research/waymo-open-dataset/blob/master/src/waymo_open_dataset/wdl_limited/sim_agents_metrics/estimators.py) |
| 70 | +- [Configurations proto file](https://github.com/waymo-research/waymo-open-dataset/blob/99a4cb3ff07e2fe06c2ce73da001f850f628e45a/src/waymo_open_dataset/protos/sim_agents_metrics.proto#L51) |
| 71 | +- [Default sim agent challenge configs](https://github.com/waymo-research/waymo-open-dataset/blob/master/src/waymo_open_dataset/wdl_limited/sim_agents_metrics/challenge_2025_sim_agents_config.textproto) |
0 commit comments