Crowdsourced, dashcam-based road quality assessment with quality-aware route planning across 808 OSM segments in Kerala.
Active learning moved class ratio from 9.2:1 → 4.6:1 (Good:Bad).
| # | Architecture | Params | Acc | Macro F1 |
|---|---|---|---|---|
| 01 | swin_small ✓ | 50M | 53.8% | 47.0% |
| 02 | swin_tiny | 28M | 51.5% | 46.1% |
| 03 | resnet34 | 21M | 51.1% | 45.4% |
| 04 | convnext_tiny | 28M | 50.4% | 44.8% |
| 05 | resnet18 | 11M | 49.7% | 44.4% |
| 06 | vit_small | 22M | 49.8% | 44.0% |
| 07 | efficientnet_b1 | 8M | 49.4% | 41.4% |
| 8–13 | efficientnet_b0/b2 · resnet50 · convnext_s/base · vit_base (efficientnetv2_s/m failed) | 5–89M | 45–50% | 39–42% |
| model | swin_small |
| learning rate · scheduler | 3e-5 · CosineAnnealingLR |
| backbone freeze | none — full fine-tune |
| loss · smoothing | unweighted CE · 0.0 |
| optimiser · batch · stop | Adam · 32 · val-loss patience 30 |
Confusion matrices across all 13 successful architectures showed persistent confusion at the Excellent ↔ Good and Fair ↔ Poor boundaries. Annotator-disagreement data corroborated this — humans split on those exact pairs. The ambiguity was real, not a modelling failure.
Pessimistic edge aggregation at the segment level partially mitigates the 47% Bad miss-rate — a segment is only labelled Good if all observations agree.
| Class | Precision | Recall | F1 | Support |
|---|---|---|---|---|
| Bad | 83% | 53% | 65% | 342 |
| Good | 78% | 94% | 85% | 599 |
| Macro avg | 80% | 73% | 75% | 941 |
17 YOLO variants benchmarked; best mAP50 of 20.3%.
3,216 labels across 53 contributors · gamified + active learning.
5 → 3 merge drove val accuracy 53% → 79.6%.
UTM snapping, dual aggregation, Flask + Leaflet nav server.