Skip to content

stepankonev/StandardE2E

Repository files navigation

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
Argoverse 2 Map Change
KITTI
KITTI-360 + 2 x
Waymo Motion Prediction
Argoverse 2 Motion Forecasting [?]

🚀 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
  • 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

@software{standarde2e,
  title={StandardE2E: A Unified Framework for Autonomous Driving Dataset Management},
  author={stepankonev},
  year={2025--2026},
  url={https://github.com/stepankonev/StandardE2E}
}

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>