Datasets:
𧬠DriveDNA
A Large-Scale Multimodal Naturalistic Driving Dataset and Benchmark for Driving Style Identification
Recognizing a driver is not the same as capturing driving style β DriveDNA makes vehicle, route, and driving-condition shortcuts measurable.
The sample dataset opens after accepting the research-use terms (automatic approval, no manual review): DriveDNA-Sample
π TL;DR
DriveDNA turns a large, in-the-wild naturalistic driving corpus into a benchmark for personalized driving style: representing who is driving as distinct from what they are driving and where. It pairs time-synchronized CAN telemetry (10 Hz) and forward-road video across hundreds of drivers and vehicle models, retains only human-controlled driving (automation-engaged frames removed), and ships a frozen evaluation protocol whose central question is:
Does a model recognize how a person drives β or merely which car they own, which roads they frequent, and which conditions they encounter?
Why it's unique. Public personalized-style resources are small and hold vehicle/route fixed (e.g., PDB: 12 drivers, one car), while large AV datasets (nuScenes, Waymo) carry no persistent driver identity. DriveDNA is the first public corpus combining many drivers Γ many vehicles Γ multi-session CAN+video, with clean human-vs-automation separation and explicit confound diagnostics.
β¨ Highlights
| π§ββοΈ Drivers | 460 released drivers with persistent de-identified identities (driver_001 β¦ driver_460), consistent across vehicles; the paper's corpus statistics cite 465 decoded drivers |
| π Vehicle models | 115 nameplate-level models across 26 brands (paper consolidation). In the release index, 426 drivers share a model with at least one other driver and 22 appear on two or more models; within the 428-driver benchmark cohort these counts are 392 and 20 (see Counts) |
| π£οΈ Drives | 4,121 decoded drives (Mar 2023 β Jul 2026, multi-continent) |
| β±οΈ Human-controlled driving | 975 h total, 581 h in motion, at 10 Hz with forward video |
| πͺ Benchmark windows | 62,674 tagged 60-s windows from 428 drivers (355 in frozen folds) |
| π·οΈ Annotations | 6 driving scenarios Β· 8 behavioral primitives (93.0% audit agreement) Β· 276,248 maneuver events incl. 22,322 individually verified lane changes |
| π§ͺ Protocol | Driver-disjoint splits Β· 3-seed error bars Β· frozen evaluation manifests Β· leakage probes |
π‘ Modalities & Committed Signals
All streams are decoded from openpilot logs and resampled to a unified 10 Hz grid:
| Signal | Meaning | Style construct |
|---|---|---|
vEgo, aEgo (+ jerk) |
speed, longitudinal accel | longitudinal aggressiveness |
steeringAngleDeg, steeringRateDeg |
driver steering INPUT (vehicle-dependent via steer ratio) | steering entropy, reversal rate |
actual_curvature |
realized path curvature (vehicle-normalized) | cornering sharpness, path geometry |
yaw_rate β curv_measured |
independently-sensed turning | aggressiveness, slip |
leadOne_dRel/vRel/status |
lead-vehicle distance & relative speed (radar) | THW, TTC, gap preference |
gas, brake (+ pressed) |
pedal application (subset of fleet) | pedal dynamics |
laneLeft_y, laneRight_y |
lane offsets | lane-keeping (SDLP) |
Key distinction β steering INPUT vs realized PATH. steeringAngleDeg is the raw wheel input and is vehicle-dependent; actual_curvature is the vehicle-normalized realized path. Their gap is a signal-level handle on the "who vs which-car" question at the heart of the benchmark: vehicle-model probes read 2.3Γ chance from steering angle but βchance from realized curvature.
π― Benchmark Tasks & Splits
| Task | Input β Output | Metrics |
|---|---|---|
| Driver re-identification (core) | k-min support β driver identity | Top-k, AUROC, EER |
| Personalized behavior prediction (core) | 5-s history β 1β5-s future motion | RMSE, PG, MMD/KL/W1 |
| Condition-matched comparison (core) | matched window pair β same driver? | AUROC, EER |
| Event forecasting (optional) | 5-s history β event in 1β5 s | AP, AUROC, lead time |
| Style explanation (optional) | event window β category + evidence | accuracy (exploratory) |
The main driver-disjoint split is 212 train / 45 val / 45 test, plus a 53-driver few-shot hold-out (support and query always from different drives). Additional frozen manifests isolate generalization sources: within-nameplate (same model, different drivers, 24 models), cross-vehicle (same driver, different vehicles), condition-matched pairs (14,868), and missing-channel robustness.
π Key Results
| Finding | Evidence |
|---|---|
| Learned representations β« classical descriptors | AUROC .935 vs .707 on unseen drivers |
| Driver signal survives condition matching | .811 Β± .006 on 14,868 matched pairs (descriptors β .550, chance) |
| High re-ID β driving style | Video-only probe hits .937 re-ID but predicts route at 347Γ chance; collapses to .675 under matching |
| Recognition β prediction | Best re-ID embedding yields no prediction gain (β0.2%); task-aligned FiLM conditioning does (+0.4 to +1.4%) |
| Foundation models need adaptation | Zero-shot LLM/TS/VLM rows land at/below the descriptor level; 1-epoch LoRA lifts Qwen3-8B to .871 on event forecasting |
30 baseline configurations across five families β representation learning, shortcut robustness, personalization, multimodal modeling, distributional prediction β under one fixed multi-seed protocol.
π¦ What's Released
This gated repository contains the complete release (data files frozen at revision 1f9c67170db726c977686ebe6ca86284f2aed444; access is granted on request under the research license): de-identified 10 Hz signal tables Β· raw forward road video (low-resolution 526Γ330 dashcam view, 1-min segments) Β· frozen video embeddings (DINOv2/DINOv3/SigLIP2/V-JEPA 2) Β· all split manifests Β· VLM scene attributes. The evaluation harness and baseline code live in the GitHub repo.
The signal tables, features, and manifests alone reproduce every number in the paper; video is provided for multimodal research under the same research-only license.
Repository layout (~325 GB):
DriveDNA/
βββ README.md Β· LICENSE
βββ data/
β βββ windows.parquet # 62,674 benchmark windows: driver, drive, scenario, 8 primitives, stats
β βββ maneuver_events.parquet # 276,248 maneuver events (window-indexed)
β βββ lane_changes_verified.parquet# individually verified lane-change rows
β βββ vlm_attrs.jsonl / vlm_attrs_qwen3.jsonl # per-window VLM scene attributes
β βββ t5_llm_subsample.parquet # frozen 3,000-window event-forecasting subsample
βββ features/
β βββ windows_x.npy # [62674, 600, 17] 10 Hz CAN windows (+ windows_mask.npy, channels.json)
β βββ windows_vid*.npy # window-aligned frozen video features (DINOv2/DINOv3/SigLIP2/V-JEPA 2)
βββ raw_signals/
β βββ driver_XXX/drive_YYY.parquet # full 10 Hz signal table per drive β 4,121 drives, 460 drivers
βββ raw_signals_csv/
β βββ driver_XXX/drive_YYY.csv # the same tables as CSV
βββ embeddings/
β βββ {dinov2,dinov3,siglip2,vjepa2}/driver_XXX/drive_YYY.npz # per-drive frame embeddings
βββ videos/
β βββ driver_XXX/drive_YYY/segN.mp4 # forward road video, 1-min segments (526Γ330); segN aligns with embeddings
βββ splits/ # driver_folds / cross_route / within_vehicle / cross_vehicle / matched pairs
βββ index/
β βββ drives.parquet # one row per drive: model, human fraction, fold, month, durations
β βββ human_segments.parquet # 12,440 human-driving spans: i0/i1 row range + t0/t1 seconds per drive
βββ paper/ # the submitted PDF
The evaluation harness, every baseline, the result files behind the paper's tables and the exact environment are in the GitHub repository (tag v1.1-kdd2027); trained checkpoints are in HenryYHW/DriveDNA-models.
πͺͺ Naming & de-identification
- Drivers are released as
driver_001β¦driver_460and each driver's drives asdrive_001β¦drive_NNN(per-driver, chronological). The raw-ID mapping is held privately by the authors and is append-stable: future data additions never renumber existing entries. raw_signals/tables contain all frames of each drive, including ADAS-engaged frames (cs_enabled/cruiseState_enabledflags included). To reproduce the paper's human-only analysis, slice each drive withindex/human_segments:
import pandas as pd
seg = pd.read_parquet("index/human_segments.parquet") # human-driving spans
s = seg[(seg.driver == "driver_042")].iloc[0]
sig = pd.read_parquet(f"raw_signals/{s.driver}/{s.drive}.parquet")
human = sig.iloc[int(s.i0):int(s.i1)] # 10 Hz rows, human-controlled & moving
index/drives.parquetis the master index: per drive it lists the consolidated vehicle model, human-controlled fraction, minutes of moving human driving, number of human spans, benchmark fold of the driver, and month of recording.
π’ Counts and cohorts
Different numbers refer to different cohorts; each is reproducible from the released files with code/preprocessing/model_merge.py (nameplate-level model consolidation) in the GitHub repository.
| Cohort | Drivers | Share a model with β₯1 other driver | On two or more models |
|---|---|---|---|
Release index (index/drives.parquet, all 4,121 drives) |
460 | 426 | 22 |
Benchmark window cohort (data/windows.parquet, 62,674 windows) |
428 | 392 | 20 (7 admit model-matched negatives, Appendix G) |
The paper's corpus statistics (465 decoded drivers; 420 sharing a model) were computed on the decoded corpus before the release index was frozen; the camera-ready version will carry the release-index figures above with these definitions. Placeholder vehicle labels (UNKNOWN in the index, MOCK in the windows table) are counted as a model in these figures, as in the paper; excluding them gives 411 / 18 (release index) and 379 / 18 (benchmark cohort), with 117 and 115 real nameplates respectively. splits/cross_vehicle.json lists the 16 drivers with drive-disjoint data on two or more models. Forward video exists for 3,983 drives (452 drivers) and the four embedding families for 3,891 of them.
π Reproducing the paper
hf download HenryYHW/DriveDNA --repo-type dataset --local-dir ./hf/DriveDNA
git clone https://github.com/WangYuHang-cmd/DriveDNA && cd DriveDNA && git checkout v1.1-kdd2027
python scripts/prepare_release_layout.py --data ../hf/DriveDNA # builds the layout the scripts expect
The repository README maps every table of the paper to the command that reproduces it; CHECKSUMS.sha256, ENVIRONMENT.md and results/ hold the checksums, the exact package versions and the result files. The 14-driver same-vehicle companion set DriveDNA-Controlled uses the same format.
π Ethics & Privacy
- Collected from community drivers with informed consent and compensation; follows source-platform terms.
- Driver and drive identifiers are sequential pseudonyms (
driver_001/drive_001); the private raw-ID mapping is withheld by the authors. VINs, device identifiers, precise timestamps, and GPS coordinates removed; no cabin video/audio; forward road video is exterior-only, low-resolution, released under gated research-only access. - Leakage probes ship as part of the benchmark β users are asked to report leakage alongside utility.
- Prohibited: re-identification attempts; insurance, employment, or law-enforcement scoring of individuals.
- A takedown contact allows any driver to request removal from future versions.
π Citation
@article{drivedna2026,
title = {DriveDNA: A Large-Scale Multimodal Naturalistic Driving Dataset and
Benchmark for Driving Style Identification},
author = {Wang, Yuhang and Li, Lingyao and Zhou, Hao},
journal = {arXiv preprint arXiv:2607.23822},
year = {2026}
}
π Links & Status
- π Paper: arXiv:2607.23822 Β· π€ Papers page Β· KDD 2027 Datasets & Benchmarks (under review)
- π» Code & harness: github.com/WangYuHang-cmd/DriveDNA, tag
v1.1-kdd2027(checksums, environment, result files, reproduction commands) - π¦ Data: complete (~325 GB); data files frozen at revision
1f9c6717Β· DriveDNA-Sample (no approval needed) Β· DriveDNA-Controlled Β· π§ DriveDNA-models - βοΈ Contact: haozhou1@usf.edu
- Downloads last month
- 115