BevAD

June 30, 2026 ยท View on GitHub

Official code release for What Matters for Scalable and Robust Learning in End-to-End Driving Planners? โ€” accepted at CVPR Findings 2026.

David Holtz, Niklas Hanselmann, Simon Doll, Marius Cordts and Bernt Schiele
Mercedes-Benz AG & Max-Plack-Institute for Informatics, SIC

Paper Project Page Hugging Face


๐Ÿ“ฐ News

  • 2026-06 โ€” Initial code and checkpoint release.
  • 2026-06 โ€” Publish Fail2Drive results.
  • 2026-03 โ€” Paper release on arXiv.

๐ŸŒ Overview

bevad-workspace/
โ”œโ”€โ”€ bevad/                  # Main codebase
โ”œโ”€โ”€ bevad-sim/              # Connector between bevad and CARLA
โ”œโ”€โ”€ checkpoints/            # Model checkpoints (download separately)
โ”œโ”€โ”€ data/b2d-xml/           # Bench2Drive route definitions (XML)
โ”œโ”€โ”€ external/               # Third-party dependencies (CARLA, mmcv)
โ”œโ”€โ”€ recordings/             # Simulation episode stored here (created by inference.py)
โ””โ”€โ”€ inference.py            # Example script for closed-loop inference

โš™๏ธ Installation

Requirements:

  • Ubuntu 22.04 (recommended)
  • Python 3.10
  • CUDA 12 with a GPU of compute capability โ‰ฅ 7.0
  • CARLA 0.9.15 with additional large maps installed
  • uv package manager (recommended)

Setup:

# Set the number of parallel compilation jobs (adjust to your CPU core count)
export MAX_JOBS=24
# Specify target CUDA architectures
export TORCH_CUDA_ARCH_LIST="7.0+PTX 7.5 8.0+PTX"
# Install all dependencies
uv sync -p 3.10

Note: Installation takes 5โ€“15 minutes depending on hardware. The majority of time is spent compiling mmcv from source โ€” setting MAX_JOBS to match your available CPU cores speeds this up significantly.

๐Ÿš— Closed-Loop Simulation

  1. Download the BevAD checkpoint from Hugging Face and place it at checkpoints/bevad-m.ckpt.
  2. Run closed-loop simulation on a Bench2Drive route:
python inference.py \
    --checkpoint checkpoints/bevad-m.ckpt \
    --config bevad/bevad/configs/cvpr/scaling_diffusion.py \
    --route data/b2d-xml/b2d-24224.xml \
    --output-dir recordings

All arguments are optional and default to the values shown above. To run a different route, replace the --route path with any XML file from data/b2d-xml/.

๐Ÿ˜ Fail2Drive

Fail2Drive evaluates both in-distribution performance and generalization under distribution shift. These results were conducted by Karol Fedurko during his research internship in our lab.

MethodIn-Distribution DS โ†‘In-Distribution SR โ†‘In-Distribution HM โ†‘Generalization DS โ†‘Generalization SR โ†‘Generalization HM โ†‘
TCP24.739.130.324.531.427.5
UniAD47.536.341.244.027.633.9
Orion53.052.052.551.246.048.5
HiP-AD74.170.772.467.156.761.5
SimLingo82.679.380.971.755.062.2
TF++83.378.580.875.461.167.5
PlanT 2.087.885.086.473.358.064.8
BevAD (ours)87.483.385.382.368.774.9

๐Ÿ“š Citation

@InProceedings{Holtz_2026_CVPRF,
    author    = {Holtz, David and Hanselmann, Niklas and Doll, Simon and Cordts, Marius and Schiele, Bernt},
    title     = {What Matters for Scalable and Robust Learning in End-to-End Driving Planners?},
    booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) Findings},
    month     = {June},
    year      = {2026},
    pages     = {931-941}
}

๐Ÿ“„ License

This project is licensed under the MIT License. Note that it includes third-party components in the external/ directory that are subject to their own license terms. See the LICENSE file for details.