Back to Daft

Validation on public datasets

benchmarking/lerobot/real_datasets.md

0.7.182.2 KB
Original Source

Validation on public datasets

The batched decode was validated against the original per-row decode on six public LeRobot v3 datasets from Hugging Face, chosen to cover the codec, fps, resolution, and camera-count diversity found in the wild. Remote reads over hf://, single machine; measured 2026-07-01.

Method

real_datasets.py decodes the first 16 frames of episode 0 (every camera column) in a fresh process, timing the full lerobot.read(..., load_video_frames=True) pipeline. run_real_datasets.sh runs it once per reader revision - daft/datasets/lerobot.py at the PR's merge-base vs this branch - and checks that the decoded frames are identical between the two.

Results: 16 frames, all cameras

datasetcodecresolutionfpscamsoriginalbatchedoutput
AlexFeng1/fa_putPlace_35av1640x480303330s25.5sidentical
Cache-SCA/IsaacLab-SO101-...-push_buttonh264640x480102126s11.5sidentical
Helloworldali/pick-cube-maniskillmp4v224x22430298s10.0sidentical
HCIS-Lab/soarm101-feeding-nutsav11280x720302213s18.6sidentical
Jackie1/bridge_data_v2_convertav1256x25651132s33.5sidentical
DAVIAN-Robotics/robocasa-MG_3000av1128x128203366s35.9sidentical

Every frame pixel-identical across all six datasets; 4-13x faster.

Results: scaling up (pepijn223/egodex-test, av1 1920x1080 @30)

runframeswallper frame
original100311.8s3.12s
batched10025.6s0.26s
original632 (full dataset)1750.7s2.77s
batched632 (full dataset)115.8s0.18s

Outputs identical between readers at both scales, including every frame of the full 632-frame dataset. Batched cost grows with batches rather than frames (each 16-row batch opens its shard once) - ~0.2s/frame vs ~3s/frame - so the full dataset drops from 29 minutes to under 2.