STous les projets
en
Tous les projets

Vision par ordinateur · Systèmes temps réel

Surveillance intelligente du trafic

Détection et suivi de véhicules, capture de plaques et estimation de vitesse par homographie.

Un service conteneurisé de surveillance du trafic qui analyse une vidéo et rapporte ce qui s'est réellement passé sur la route : quels véhicules, à quelle vitesse, et lesquels ont dépassé la limite de leur catégorie.

0FPS soutenus
98.6%précision de l'estimation de vitesse
0points de calibration homographique

Problème

Une vitesse mesurée en pixels n'est pas une vitesse, et la détection seule perd un véhicule dès qu'il passe derrière un plus gros. Sans identité entre les images ni correspondance entre la vue caméra et les distances réelles, aucun des chiffres attendus par un exploitant n'est fiable.

Objectifs

  • Maintenir une identité stable entre les images pour que chaque mesure appartienne à un véhicule précis.
  • Produire des vitesses en unités réelles plutôt qu'en pixels par image.
  • Capturer une seule bonne image de plaque par véhicule plutôt que des centaines d'inexploitables.
  • Signaler les infractions selon des limites différentes par type de véhicule.
  • Rendre le comportement du système et du modèle visible pendant le traitement.

Mise en œuvre

  • YOLOv8 détecte voitures, camions, bus, motos et vélos ; ByteTrack attribue un identifiant de trace et le conserve malgré les occlusions.
  • Un second modèle YOLOv8 détecte les plaques dans chaque vignette de véhicule, en parallèle du suivi plutôt qu'en seconde passe sur la vidéo.
  • Un évaluateur de qualité note chaque vignette (netteté, luminosité, taille) et seul le meilleur cliché par trace est conservé.
  • Une homographie à neuf points projette le plan de la route en coordonnées réelles, et le rejet des valeurs aberrantes écarte les mesures que la géométrie ne peut pas justifier.
  • Un backend FastAPI exécute le traitement en tâche de fond et pousse les mises à jour image par image vers un tableau de bord Streamlit en WebSocket.
  • Prometheus collecte la latence par image, le taux de détection, le temps d'inférence et le nombre d'infractions ; Grafana les restitue. L'ensemble tourne sous Docker Compose.

Architecture

Ingestion
  • video upload
  • FastAPI
  • Redis queue
  • Celery workers
Détection
  • YOLOv8 vehicles
  • ByteTrack
Plaques
  • YOLOv8 plate detector
  • quality assessor
  • best-shot storage
Mesure
  • 9-point homography
  • outlier rejection
  • per-class speed limits
Observation
  • Prometheus
  • Grafana
  • MLflow
Restitution
  • Streamlit
  • WebSocket updates

Technologies

  • YOLOv8
  • ByteTrack
  • Supervision
  • FastAPI
  • WebSocket
  • Redis
  • Celery
  • Streamlit
  • Prometheus
  • Grafana
  • MLflow
  • Docker
  • pytest

Difficultés & solutions

Difficulté

La détection seule compte deux fois les véhicules et les perd derrière les plus gros, ce qui fausse tous les chiffres en aval.

Solution

ByteTrack maintient l'identité entre les images : comptages, vitesses et images de plaques se rattachent à un véhicule et non à des images isolées.

Difficulté

La perspective fait qu'un même déplacement en pixels représente des distances réelles différentes selon la profondeur : une vitesse en pixels n'a pas de sens.

Solution

Une calibration homographique à neuf points projette le plan de la route en coordonnées réelles, avec rejet des lectures invraisemblables.

Difficulté

Enregistrer une vignette de plaque à chaque image produit des milliers d'images le plus souvent illisibles.

Solution

Un évaluateur note netteté, luminosité et taille, et seule la meilleure vignette par véhicule est écrite sur disque.

Difficulté

Un traitement vidéo long ne donne aucun retour à l'exploitant avant la fin.

Solution

Le traitement s'exécute en tâche de fond et diffuse progression, traces et infractions vers le tableau de bord en WebSocket.

Résultats

  • L'estimation de vitesse atteint 98,6 % de précision, calculée via une calibration homographique à neuf points avec rejet des valeurs aberrantes plutôt qu'à partir du déplacement en pixels.
  • Un évaluateur de qualité note chaque vignette de plaque (netteté, luminosité, taille) : une seule image lisible est conservée par véhicule au lieu de centaines de mauvaises.
  • Le pipeline tient 30 FPS tout en détectant, suivant, lisant les plaques et contrôlant les infractions.
  • Prometheus et Grafana exposent la latence par image, les taux de détection et le nombre d'infractions, pendant qu'un tableau de bord Streamlit diffuse les résultats en WebSocket au fil du traitement.

Enseignements

  • C'est le suivi, et non la détection, qui rend un pipeline de vision utile : l'identité conditionne toutes les métriques en aval.
  • La calibration fait la différence entre un chiffre et une mesure. L'homographie a plus compté pour la précision que le choix du modèle.
  • Décider ce qu'il ne faut pas stocker s'est révélé aussi important que décider quoi détecter.