LEAD is an end-to-end driving stack for the CARLA Leaderboard 2.0, covering the data generation pipeline, a TransFuser-style driving policy, and popular driving benchmarks like Bench2Drive and Fail2Drive. We build upon py123d and focus only on CARLA research.
Latest update v1.3.0 (2026.07.21):
- Increase the data sampling frequency from 4 Hz to the native 20 Hz simulator rate; only the camera streams remain on the 4 Hz save ticks.
- Fix bugs in the data loader and slim the driving-meta format.
- Add unit and end-to-end CI pipelines with new data-loader invariant tests.
- Add example Jupyter notebooks.
- Add
apimodule to highlight contracts. - Extend the data-access documentation.
Older changelog entries
| Version | Date | Content |
|---|---|---|
| v1.2.0 | 2026.07.20 |
|
| v1.1.0 | 2026.07.15 |
|
| v1.0.0 | 2026.07.12 |
|
Note
This branch is a rewrite of the CVPR 2026 branch and is under active development; interfaces may change without notice. Its datasets and checkpoints will be released soon and will not be compatible with the CVPR 2026 ones. To reproduce the paper, use the CVPR 2026 branch.
Clone the repository:
git clone https://github.com/kesai-labs/lead.git
cd leadInstall dependencies. Any conda-compatible environment manager works, we recommend micromamba:
# Create an environment
micromamba create -n lead python=3.10 -y
micromamba activate lead
# Install system tools
micromamba install -c conda-forge ffmpeg gcc git-lfs uv -y
# Tell uv once where to install deps to
export UV_PROJECT_ENVIRONMENT=$CONDA_PREFIX
# Install project
uv sync --extra dev --reinstall-package lead
# Reload environment to add shell scripts to PATH
micromamba deactivate && micromamba activate leadInstall CARLA if closed-loop evaluation or customized data are required. This step is optional if you only need the standard dataset:
# Download and setup CARLA 0.9.16
bash scripts/common/setup_carla.shSee setup for more details.
To collect one single route for testing:
python -m lead --expert --routes lead/src/lead/routes/data_routes/lead/Accident/route_001761.xmlThe expert is expected to produce data at a rate of 10Hz. See data collection for details.
Collected data can be read by py123d directly:
from py123d.api.scene.arrow.arrow_scene_builder import ArrowSceneBuilder
from py123d.api.scene.scene_filter import SceneFilter
from py123d.common.execution.thread_pool_executor import ThreadPoolExecutor
# Build scenes
scenes = ArrowSceneBuilder(
logs_root="<path/to/lead-data>/logs",
maps_root="<path/to/lead-data>/maps",
).get_scenes(
SceneFilter(
split_names=["normal_view"],
future_num_iterations=40, # 2 s at the 20 Hz tick rate
# The camera streams only exist on save ticks; anchor the scenes there.
required_scene_modalities=["camera:all@initial"],
),
ThreadPoolExecutor(),
)
# Access data of first frame
ego = scenes[0].get_ego_state_se3_at_iteration(0) # py123d.datatypes.EgoStateSE3See data access for further documentation on the data. We also provide a notebook.
The dataset can be visualized by the standard py123d viser tool:
# Either view every log
PY123D_DATA_ROOT=/path/to/lead-data py123d-viser 'scene_filter.split_names=[normal_view]'
# Or view a particular log
scripts/cli/viser </path/to/lead-data>/logs/normal_view/<scenario_type>/<log_name>For the TransFuser visualizer see notebooks/data_visualization.ipynb.
@inproceedings{Nguyen2026CVPR,
author = {Long Nguyen and Micha Fauth and Bernhard Jaeger and Daniel Dauner and Maximilian Igl and Andreas Geiger and Kashyap Chitta},
title = {LEAD: Minimizing Learner-Expert Asymmetry in End-to-End Driving},
booktitle = {Conference on Computer Vision and Pattern Recognition (CVPR)},
year = {2026},
}
@article{Dauner2026ARXIV,
title={123D: Unifying Multi-Modal Autonomous Driving Data at Scale},
author={Dauner, Daniel and Charraut, Valentin and Berle, Bastian and Li, Tianyu and Nguyen, Long and Wang, Jiabao and Jing, Changhui and Igl, Maximilian and Caesar, Holger and Ivanovic, Boris and Geiger, Andreas and Chitta, Kashyap},
journal={arXiv preprint arXiv:2605.08084},
year={2026}
}