Back

June 2025 to July 2025

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.

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.