Skip to main content

A unified framework for autonomous driving dataset management for end-to-end model development

Project description

StandardE2E Logo

A framework for unified end-to-end autonomous driving datasets processing

Python versions PyTorch License Tests codecov Code Style mypy StandardE2E

Docs Discord

StandardE2E provides a consistent interface for preprocessing, loading, and training with multimodal data from various end-to-end autonomous driving datasets. It standardizes the complex process of working with different dataset formats, allowing researchers to focus on model development rather than data engineering.

StandardE2E Architecture


๐Ÿ“– Documentation

๐Ÿ“ฆ Installation

Option 1: From PyPI (Recommended for Users)

pip install standard-e2e

Option 2: Development with uv (recommended)

# Install uv: https://docs.astral.sh/uv/
git clone https://github.com/stepankonev/StandardE2E.git
cd StandardE2E
uv sync --all-extras   # installs deps and dev deps from uv.lock
uv run pytest tests/   # run tests

Option 3: Manual development (pip/conda)

conda create -n standard_e2e python=3.12
conda activate standard_e2e
pip install -e ".[dev]"

Plan for E2E Autonomous Driving Datasets Support

Dataset Cameras Lidar HD Map Detections Driving Command Preference Trajectories
Waymo End-to-end โŒ โŒ โŒ โœ… โœ…
Waymo Perception โœ… โœ… โœ… โŒ โŒ
Navsim โœ… โœ… โœ… โœ… โŒ
WayveScenes101 ยน โŒ โŒ โŒ โŒ
Argoverse 2 Sensor โœ… โœ… โœ… โŒ โŒ
Argoverse 2 Lidar โŒ โœ… โœ… โŒ โŒ โŒ
comma2k19 ยฒ โŒ โŒ โŒ โŒ โŒ
Argoverse 2 Map Change โœ… โœ… โœ… โŒ โŒ โŒ
KITTI โœ… โ“ โ“ โ“ โ“
KITTI-360 + 2 x โœ… โ“ โ“ โ“ โ“
Waymo Motion Prediction โŒ โœ… โœ… โœ… โŒ โŒ
Argoverse 2 Motion Forecasting [?] โŒ โŒ โœ… โœ… โŒ โŒ

ยน WayveScenes101 ships no sensor lidar; the lidar_pc modality is populated from the per-scene COLMAP SfM point cloud, transformed into each frame's ego frame and range-clipped so it flows through the lidar adapters. It is photogrammetric (sparse, up-to-scale), not a sensor measurement. Cameras are 5 fisheye views (forward + side arc); the ego past/future trajectory is derived from the COLMAP poses. Scenes must be extracted from the distributed scene_<NNN>.zip archives before processing.

ยฒ comma2k19 is a single forward-facing 20 Hz camera (comma EON, 1164ร—874, pinhole) with a fused GNSS/IMU ego pose; the ego past/future trajectory is derived from the global ECEF poses and global_position additionally carries the ego speed. It ships no lidar, HD map, 3D boxes, or driving command. Segments must be extracted from the distributed Chunk_*.zip archives before processing (as with WayveScenes101); each video.hevc is then decoded frame-by-frame, forward-only. global_position is expressed in a per-segment local frame (ECEF-axis-aligned, origin at the segment start), so absolute X/Y/Z and heading are segment-relative; the ego-relative past/future trajectories are unaffected. Native rate is 20 Hz โ€” use --frame_stride to subsample and bound output volume.

๐Ÿš€ Key Features

  • Unified Dataset Interface: Work with multiple datasets through a single API
  • Multimodal Support: Cameras, LiDAR (point cloud + BEV histogram), HD maps (BEV raster), trajectories, detections and more
  • Flexible Preprocessing: Configurable pipelines with standardization and augmentation
  • Lazy modality loading: Configured adapters declare what they consume; no decoding work is done for modalities no adapter reads
  • Trajectory Management: Advanced handling of time-series vehicle data
  • PyTorch Integration: Ready-to-use datasets and dataloaders

๐Ÿ“ Quick Start & Examples

Notebooks

Code Examples

Run from the project root so uv run uses the project environment. If you use pip/conda instead, activate your env and use python in place of uv run python.

  1. Preprocess Waymo End-to-end dataset - Convert raw dataset to standardized format (dataset_preprocessing.py)

    uv run python examples/dataset_preprocessing.py \
      --e2e_dataset_path E2E_DATASET_PATH \
      --split {training,val,test} \
      --processed_data_path PROCESSED_DATA_PATH
    
  2. Train your model - End-to-end training with multimodal data (very_simple_training.py). This example illustrates iteration over the preprocessed dataset. Also, in this example for validation we use 2 DataLoaders - full validation split and filtered validation split that only contains samples with preferred trajectories.

    uv run python examples/very_simple_training.py --processed_data_path PROCESSED_DATA_PATH
    
  3. Create a unified DataLoader: This example shows how to process 2 different datasets within same DataLoader. First, please do preprocessing for Waymo E2E and Waymo Perception datasets in order to utilize them in the DataLoader with the script (prepare_datasets_waymo_e2e_perception.sh).

    The script creating_unified_dataloader.py created a unified dataloader that iterates over both Waymo E2E and Waymo Perception in one epoch providing consistent data structure.

    uv run python examples/creating_unified_dataloader.py --processed_data_path PROCESSED_DATA_PATH
    
  4. Add a new dataset adapter - Guide for adding support for new datasets (adding_new_dataset.md)

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ“š Citation

If you find this project useful, you can support it by giving it a โญ, or by contributing with your PRs / issues / feature requests. Also, if you use this project, you can greatly support it by citing our paper (arXiv:2606.04271):

@misc{konev2026standarde2e,
  title={StandardE2E: A Unified Framework for End-to-End Autonomous Driving Datasets},
  author={Stepan Konev},
  year={2026},
  eprint={2606.04271},
  archivePrefix={arXiv},
  primaryClass={cs.CV},
  url={https://arxiv.org/abs/2606.04271}
}

and using the badge StandardE2E

Markdown

[![StandardE2E](https://raw.githubusercontent.com/stepankonev/StandardE2E/refs/heads/main/assets/StandardE2E_gh_badge_dark.svg)](https://github.com/stepankonev/StandardE2E)

HTML

<a href="https://github.com/stepankonev/StandardE2E">
  <img src="https://raw.githubusercontent.com/stepankonev/StandardE2E/refs/heads/main/assets/StandardE2E_gh_badge_dark.svg" alt="StandardE2E"/>
</a>

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

standard_e2e-0.0.5.tar.gz (170.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

standard_e2e-0.0.5-py3-none-any.whl (199.3 kB view details)

Uploaded Python 3

File details

Details for the file standard_e2e-0.0.5.tar.gz.

File metadata

  • Download URL: standard_e2e-0.0.5.tar.gz
  • Upload date:
  • Size: 170.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for standard_e2e-0.0.5.tar.gz
Algorithm Hash digest
SHA256 1a5ad75fbeb99df73f4aa96c215c9379580353d9a2c33c05c7bcb005b8f5ebac
MD5 b71a3ffeb00845fdf58d9a8311d6d3c6
BLAKE2b-256 524993ada37d1b44926166fe5ebb1c8d38b8c04eb2251399ed13b62080cd7cdf

See more details on using hashes here.

File details

Details for the file standard_e2e-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: standard_e2e-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 199.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for standard_e2e-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 679afe8ba4cf10490875191adc56f4179fd1176a0d0e2bb9aa27b8ba84dbbcec
MD5 945fba84b11bf7463bffd2673d88c41d
BLAKE2b-256 0c5e7a1c3e2aa92cae74a7250747eab1542b04c57893b2cb2db54cde28f57033

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page