Skip to content

Repository files navigation

LEAD: Minimizing Learner-Expert Asymmetry in End-to-End Driving

Unit Tests E2E Test

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 api module to highlight contracts.
  • Extend the data-access documentation.
Older changelog entries
Version Date Content
v1.2.0 2026.07.20
  • Fix GNSS localization for CARLA 0.9.16, which projects GNSS with a transverse Mercator.
  • Reduce failure rate on Slurm when collecting data.
v1.1.0 2026.07.15
  • Added basic documentation.
  • Introduce abstraction for training and evaluation.
  • Bugs fixes and verification pipeline.
v1.0.0 2026.07.12
  • Integrated py123d as first-class data format.
  • Modernised code base.
  • Expert run time increased by up to 10x.

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.

Setup for development

Clone the repository:

git clone https://github.com/kesai-labs/lead.git
cd lead

Install 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 lead

Install 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.sh

See setup for more details.

Data collection

To collect one single route for testing:

python -m lead --expert --routes lead/src/lead/routes/data_routes/lead/Accident/route_001761.xml

The expert is expected to produce data at a rate of 10Hz. See data collection for details.

Read data

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.EgoStateSE3

See data access for further documentation on the data. We also provide a notebook.

Visualize data

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.

Citation

@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}
}

About

[CVPR26] LEAD: Minimizing Learner–Expert Asymmetry in End-to-End Driving

Topics

Resources

Stars

Watchers

Forks

Releases

Contributors

Languages