ML·Shipped
Road Damage Detection (YOLO11)
A YOLO11 pothole and road-damage detector with measured scores and a dashcam video demo
0.413
pothole AP50, India test
- Role
- Solo, end to end. Everything was trained and run on free Google Colab (T4).
- Team
- Solo
- When
- Nov 2026
Problem
Build a baseline road-damage detector (mainly potholes) with honestly measured scores, plus a small decision layer on a dashcam video demo. The limits are stated on purpose: not field-tested on Indian roads, not real time, and no accuracy claim on video.
Approach
Trained a YOLO11n baseline, then YOLO11s, on the RDD2022 India data (4 classes: longitudinal, transverse and alligator cracks, and potholes). The India-only model barely worked on UK pothole photos (Kent dataset), so I fine-tuned on India + Kent. A confidence cutoff of 0.35 was chosen on validation, because a wrong box seemed worse than a missed pothole. The video demo adds ByteTrack tracking, an editable road-area filter, duplicate-ID merging and a transparent 0-100 severity score.
Result
YOLO11s on the India test set: mAP50 0.332 and pothole AP50 0.453. The default India + Kent model scores pothole AP50 0.413 on the India test and 0.218 on a held-out Kent test, up from 0.020 before fine-tuning. At the 0.35 cutoff about 4 in 10 potholes are found (recall 0.366 on India, 0.305 on Kent). Single runs, and the scores are slightly optimistic because the split comes from the Kaggle upload.
How it fits together
- Dashcam videoUK footage
- YOLO11 + ByteTrackevery 2nd frame, min 3 hits
- Road-area filtereditable polygon, duplicate IDs merged
- Severity score0-100, my own scales
- Contact sheet + mapapproximate GPS
Features
- Detects 4 road-damage classes: longitudinal, transverse and alligator cracks, and potholes
- Video demo with tracking, a road-area filter and duplicate-ID merging
- Transparent severity score from 0 to 100 (size 50, confidence 30, persistence 20; the scales are my own assumptions)
- Best-frame contact sheet and an approximate map (about 20-30 m) from the on-screen GPS overlay
- Public repo with 5 Colab notebooks, result CSVs and figures; weights in a GitHub Release
Challenges
A domain gap: the India-only model scored 0.020 pothole AP50 on UK photos. Early false alarms on a brick wall, kerbs and road markings had confidences of 0.41-0.62, above the cutoff, so I added a road-area filter instead of just raising the cutoff. Transverse cracks can't be judged (only 7 test boxes). The video is UK footage, with no confirmed pothole count or false-alarm rate, and one clear false alarm on a white road marking.
What I learned
Only claim what is built, a lesson carried over from the AnnaDaan demo. A road-area filter beats a higher cutoff when false alarms score high, and a test photo that was also in the training data makes a check unfair (leakage).
Tech
PythonYOLO11UltralyticsByteTrackGoogle Colabfolium