P.04Internal prototype

Pr-venx

Real-time detection of road signs and traffic lights on a camera stream, with hand-built and hand-annotated datasets.

Period
January 2026
Role
Dataset construction, training, real-time integration.
Stack
  • Python
  • YOLOv8
  • Ultralytics
  • OpenCV
  • Tkinter
  • Pillow

Reference points

  • 10

    detected classes

    traffic_signs table in the source code

  • 3

    datasets built

    dataset_stop, dataset_traffic_light, dataset_merged

  • 0,7 s

    inference interval

    yolo_interval constant, tuned to keep the stream smooth

The problem

Recognising a sign in a photo is a solved exercise. Doing it on a camera stream, on a machine without a dedicated GPU, while keeping the image smooth, is not. The difficulty is not the model: it is the compute budget per frame.

What was built

  • 01

    Ten distinct classes: stop, yield, speed limit, no entry, priority, pedestrian crossing, and the four states of a traffic light — red, amber, green, off.

  • 02

    Three separately maintained datasets: stop signs, traffic lights, then a merged set for final training.

  • 03

    A display loop decoupled from the inference loop.

  • 04

    A reproducible training chain: dataset preparation, training, testing, documented step by step.

Architecture

sampleoverlayCameracontinuous streamFrame loopfull rateYOLOv8every 0.7 sLast boxesretained stateDisplayframe + boxes
Two loops at different rates over the same stream.

Technical decisions

Decoupling inference from display

The model does not run on every frame but at a fixed interval, and the last detected boxes stay on screen between passes. The eye sees no difference on an approaching sign, whereas running the network on every frame makes the image stutter. It is a perception trade-off, not an accuracy one.

An unlit traffic light is a class of its own

An out-of-service light is not the absence of a light: it is a specific driving situation, with a different priority rule. Most public datasets do not distinguish that case. Treating it as an explicit class required building the corresponding images.

Three datasets rather than one

Signs and lights present different difficulties: fixed shape and variable colour on one side, variable shape and discriminating colour on the other. Keeping them separate makes it possible to measure where the model fails before merging, which a single set makes impossible.

What it demonstrates

Computer vision under real-time constraints, dataset construction and annotation, trade-off between accuracy and smoothness.