Vehicle speed and plate reading
Detection finds a box. Tracking is what makes that box the same car a moment later, so speed and a plate belong to a vehicle rather than to a flicker.
- YOLOv8
- SORT
- TrOCR
- FastAPI
- Docker
- Azure
- ~15 msvehicle pass on an RTX 3050
- 0.95plate detector mAP50
- 50epochs on 222 plate crops
Identity before speed
A speed from a box that jumps between cars is not a speed. The tracker has to hold an id across frames before the motion means anything.
- YOLOv8n for vehicles. The pass is about 15 ms a frame on an RTX 3050.
- SORT associates detections by overlap with a predicted position, and drops a track only after it has been missed.
The plate as its own problem
A plate is small relative to the vehicle. Running one detector for both tends to miss the thin object, so the plate model only sees the vehicle crop.
- Custom YOLOv8n, 50 epochs, about 222 cropped plates.
- Validation mAP50 about 0.95, mAP50-95 about 0.67.
- TrOCR, fine-tuned from the Microsoft base model, reads the characters in that crop.
From pixels to a service
Speed is the movement of the tracked center, scaled from pixels into a road distance. The service is the same pipeline behind an HTTP stream, not a notebook.
- FastAPI serves the annotated frames.
- Docker image pushed to Azure Container Registry and checked against a live IP webcam.