DashLab

Train object detectors and visual models on dashcam footage without labelling any of it

Status
Live
Version
0.1.0
Platform
GPU workstation
License
MIT
01 · Problem

Labelling dashcam footage by hand is the bottleneck for training detectors and visual models on it. DashLab derives supervision from the footage itself (teacher predictions, self-distillation, OSD telemetry) and reports scores as agreement with the teacher, not ground truth.

02 · Architecture

How it is put together.

DashLab produces three models from raw dashcam video with no human annotation: a YOLO11n detector distilled from a YOLO11x teacher, a DINO-style self-supervised ResNet-18 backbone, and an embedding-density anomaly scorer. It also reads speed, GPS and clock off the burned-in OSD, supports query-by-example and CLIP text search, and clusters braking events by GPS. A PyQt6 desktop app with eight workspaces runs the 31 pipeline stages as subprocesses and browses the results. It was built and measured on a Jetson AGX Orin using 128 clips (22,805 sampled frames) of 4K30 footage.

Frame extractionpipeline/01_extract.pySelf-supervisionpipeline/Student training and ev…pipeline/08_train_student.pyAnalysispipeline/Export and livepipeline/15_export.pyDesktop appgui/Frame extractionpipeline/01_extract.pySelf-supervisionpipeline/Student training and ev…pipeline/08_train_student.pyAnalysispipeline/Export and livepipeline/15_export.pyDesktop appgui/
FIG. 01Modules and data flows, from the repository layout and documentation.
  1. 1

    Frame extraction

    Decode clips, crop hood and OSD, sample frames incrementally

    pipeline/01_extract.py
  2. 2

    Self-supervision

    DINO backbone training, OSD OCR, teacher pseudo-labels, embeddings

    pipeline/
  3. 3

    Student training and evaluation

    Train student detector, self-training, compare checkpoints, ground-truth sampling and eval

    pipeline/08_train_student.py
  4. 4

    Analysis

    Anomaly scoring, retrieval, GPS hotspots, class discovery, tracking, TTC, CLIP search

    pipeline/
  5. 5

    Export and live

    ONNX / TensorRT export and benchmark; real-time camera or video loop

    pipeline/15_export.py
  6. 6

    Desktop app

    PyQt6 app running stages as subprocesses and browsing results

    gui/
03 · Capabilities

Specification.

Models
YOLO11n student detector (11 classes), self-supervised ResNet-18 backbone (512-d), anomaly / novelty scorer
Detector (vs teacher, 25 held-out clips, 1280px)
mAP50 0.583 / mAP50-95 0.482 over 11 classes; agreement with teacher, not ground truth
Class discovery
Clustering in the SSL embedding space separated autorickshaw, minibus and goods_carrier (~33,000 boxes relabelled)
OSD telemetry
Speed, GPS and clock read from burned-in overlay; 99.98% per-digit accuracy over 250,980 digits
Deployment (Jetson AGX Orin)
TensorRT FP16 57.1 fps; PyTorch GPU 35.1 fps; live loop 24.7 fps on 1080p at 960 width
Search
Query-by-example and CLIP text search; zero-shot scene tags (day/night 99.0% on 14,810 frames)
Dataset
DashLab Traffic v1.1: 22,805 frames, 296,616 pseudo-label boxes, 11 classes, anonymised
Desktop app
PyQt6, eight workspaces, stages as subprocesses with progress, ETA and live GPU/CPU/RAM telemetry
Runs on
PyQt6 desktop front end, but training and inference need CUDA/TensorRT; built and measured on a Jetson AGX Orin
Stack
  • Python
  • PyTorch
  • Ultralytics (YOLO11)
  • PyQt6
  • OpenCV
  • scikit-learn
  • SciPy
  • pandas
  • ONNX / ONNX Runtime
  • TensorRT
  • CLIP
04 · Changelog

Releases.

  1. v0.1.0
    Label-free training pipeline and desktop app for dashcam footage.