All Case Studies

Lane Marking on Rainy‑Night Dashcam Footage

Lane Marking on Rainy‑Night Dashcam Footage

We delivered 210k high‑fidelity rainy‑night lane labels and lifted night/rain mAP by 9 points without increasing labeling cost.

#ComputerVision#ai#LaneDetection#ADAS#AutonomousDriving#DataAnnotation#MachineLearning#AITrainingData#VisionAI#DatasetPreparation#MobilityTech

Scope: Vision · 210k frames · Polyline & polygon labels
Outcome: Night/rain lane‑detection mAP +9 pts with flat labeling cost

Snapshot

  • Client: Mobility/ADAS team operating in multiple Indian cities (name withheld)

  • Data: 210k frames (1080p & 720p) from 1,900+ night/rain segments across 17 urban routes

  • Timeline: 6 weeks, secure VPC environment

  • Deliverables: Annotated dataset, guidelines, QA reports, format converters (CULane/TuSimple)

Client context

The client’s lane‑keeping stack struggled in low‑light, wet asphalt conditions. Puddles, headlight glare, and worn paint produced false lanes; legitimate lanes often disappeared under reflections. Their team needed production‑quality labels to retrain models without blowing the labeling budget.

Challenge

  1. Glare & reflections: High‑luminance streaks and puddles mimicked dashed lines.

  2. Worn & partial paint: Faded markings, construction zones, and irregular lane widths.

  3. Occlusions: Wiper blades, vehicles, and roadside water spray.

  4. Heterogeneous sensors: Mixed resolutions/FOVs and inconsistent camera pitch/roll.

  5. Budget guardrail: Add rigor (consensus) where needed but keep cost flat overall.

What we labeled (schema)

  • Lane boundary polylines (per visible boundary), captured as ordered control points.

  • Attributes per segment: solid | dashed | double, color: white | yellow, wornness: 0–3, occlusion: 0–2, and a reflection likelihood flag.

  • Merge/split zones and gore areas as polygons to preserve topology.

  • “Maybe‑lane” tags on ambiguous sections to route frames to adjudication instead of forcing bad certainty.

Process

1) Pilot & calibration (first 1,000 frames)
We assembled an “edge‑case deck” of 120 images (puddles, zebra‑cross near-lane, bus‑only lanes, wet curb paint). Three tight guideline revisions came out of this pilot:

  • Treat continuous puddle highlights as non‑lane unless aligned with paint across ≥25 m in perspective.

  • For dashed lanes under glare, annotate the lane centerline continuity, not every light streak.

  • For worn markings, extend polylines through occlusions only if both pre‑ and post‑segments are consistent.

2) Targeted consensus instead of blanket triple‑labeling
We computed a frame ambiguity score (low median luminance, high specular index, high motion blur proxy).

  • Top ~22% of frames (most ambiguous) received consensus‑of‑3 with an adjudicator tie‑break.

  • Remaining frames got single‑pass labels with 10% stratified audit.

3) Speed without quality: pre‑label + snapping
We integrated a lightweight lane‑proposal model to auto‑suggest polylines; annotators edited rather than drew from scratch. A custom curvature‑snap tool locked control points to realistic cubic curves, reducing jitter.

4) QA you can measure

  • Inter‑annotator agreement for geometry: mean perpendicular distance (MPD) between polylines; target p95 ≤ 3.5 px (achieved 3.1 px).

  • Attribute agreement (κ): 0.88 across solid/dashed/color.

  • Gold‑frame seeding: 8–12 per batch with weekly drift checks and reviewer retraining when κ < 0.8.

Results

Metric (Night + Rain hold‑out) Before After Change
Lane‑detection mAP 0.58 0.67 +0.09
CULane‑style F1 (overall) 0.72 0.806 +0.086
False positives near puddles −34%
Broken lane segments per km −28%
Reviewer disagreement rate 19% 7% −12 pp

Cost & speed: By applying consensus only to flagged frames and using pre‑labels + snapping, we kept unit label cost within ±2% of the original budget while improving cycle time.
Downstream impact: The client reported fewer lateral “nudges” from their planner on wet nights and smoother lane continuity through merges/splits.

Security & compliance

  • Work executed inside a client‑approved VPC with S3‑equivalent object locks.

  • Faces/plates automatically blurred prior to labeling; no raw data left the environment.

  • Full audit trail: who changed what, when, and why (linked to guideline clauses).


Deliverables

  1. Annotated frames with polylines/polygons + attributes (JSON)

  2. Converters to CULane and TuSimple formats

  3. Guideline PDF (17 pages) with visual do/don’t examples

  4. QA packet: MPD distributions, κ by attribute, confusion log (reflection vs. dashed, worn vs. occluded)

Tech stack

  • Annotation: CVAT (custom curvature‑snap plugin)

  • Automation: Python, OpenCV, NumPy, Shapely, FFmpeg

  • QA & reports: Jupyter, Pandas, lightweight internal dashboards

Oliver Thomas

Written by

Oliver Thomas

Oliver Thomas is a passionate developer and tech writer. He crafts innovative solutions and shares insightful tech content with clarity and enthusiasm.

client
client
client
client
client
client
client
client
client
client