kesai-labs / py123d

Logo

123D: Unifying Multi-Modal Autonomous Driving Data at Scale

Paper | Video | Documentation

PyPI Version Python Versions License

One library for autonomous driving datasets. 123D converts raw data from Argoverse 2, nuScenes, nuPlan, KITTI-360, PandaSet, and Waymo into a unified Apache Arrow format, and then gives you a single API to read cameras, lidar, HD maps, and labels across all of them.

📰 News

✨ Features

📦 Installation

pip install py123d

Per-dataset extras (e.g. py123d[av2], py123d[nuscenes], py123d[waymo]) install the parser dependencies for each dataset on demand. See the Demo below for an example.

🚀 Demo

Demo using the Argoverse 2 Sensor dataset, which is publicly readable from S3 and requires no cloud authentication.

The av2-sensor-stream config downloads the requested logs/maps into a managed temp directory, converts them into our self-contained Arrow format, and cleans up the source files afterwards. PY123D_DATA_ROOT controls where the converted logs/maps are written. The script below installs the Av2 extra, converts the first 3 validation logs (~250 MB each), and launches the Viser viewer:

# 1. Install
pip install py123d[av2]

export PY123D_DATA_ROOT=/path/to/py123d_data

# 2. Download + Convert
py123d-conversion dataset=av2-sensor-stream \
  dataset.parser.splits='[av2-sensor_val]' \
  dataset.parser.downloader.num_logs=3

# 3. Launch Viewer
py123d-viser scene_filter=av2-sensor

Open http://localhost:8080 to browse the converted scenes interactively.

🖼️ Viewer

Viser 3D Viewer

📊 Supported Datasets

Scale Sensors [#/Hz] Annotations [✓/Hz]
Dataset Year Dur. [h] Dist. [km] Logs [#] Cam. LiDAR 3D Box Tls. Map
Manual nuScenes 20205.6100.91,000 6 / 121 / 20 ✓ / 2✗✓
WOD-Perc. 20206.4154.01,150 5 / 105 / 10 ✓ / 10✗✓
AV2-Sens. 20214.487.51,000 9 / 202 / 10 ✓ / 10✗✓
PandaSet 20210.28.3103 6 / 102 / 10 ✓ / 10✗✗
KITTI-360 20222.773.79 4 / 101 / 10 ✓ / 10✗✓
Auto-labeled WOD-Mot. 2021574.110,323.5*103,354 ✗✗ ✓ / 10✓ / 10✓
nuPlan 20241,174.317,808.615,910 8 / 10†5 / 20† ✓ / 20✓ / 20✓
  – nuPlan-mini 20247.2103.064 8 / 10†5 / 20† ✓ / 20✓ / 20✓
PAI-AV 20251,707.069,265.7307,332 7 / 301 / 10 ✓ / 10✗✗
  – NCore 20266.3167.61,147 7 / 301 / 10 ✓ / 10✗✗
Synth. CARLA 2017var.var.var. var.var. ✓✓✓
  – L3AD 20267.3138.7789 6 / 102 / 10 ✓ / 10✓ / 10✓

* Computed only from the non-overlapping 20 s training files.   † Released for a 120 h subset; full coverage on mini.

📝 Changelog

v0.7.0 (2026-09-08)

No breaking changes to the public API, Arrow schema, or CLI entry points.

v0.6.0 (2026-06-28)

No breaking changes to the existing public API, Arrow schema, or CLI entry points. New radar and segmentation modalities follow new naming conventions.

v0.5.0 (2026-05-28)

Breaking changes: OccupancyMap2D.contains_vectorized renamed to contains_points_2d (now shape-preserving); dataset_paths moved from py123d.common to py123d.common.runtime.

v0.4.0 (2026-05-19)

No breaking changes to the public API, Arrow schema, or CLI entry points.

v0.3.0 (2026-04-28)

Includes all fixes from v0.2.1 and v0.2.2. No breaking changes to the public API, Arrow schema, or CLI entry points.

v0.2.0 (2026-04-14)

No breaking changes to the public API, Arrow schema, or CLI entry points.

v0.1.0 (2026-03-22)
v0.0.9 (2026-02-09)
v0.0.8 (2025-11-21)

📚 Citation

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

⚖️ License

123D is released under the Apache License 2.0.