4.8 Frameworks de pipeline de vision en temps réel
Pourquoi c'est important
Un modèle précis à lui seul ne crée pas un système de vision en temps réel.
Un système fonctionnel a également besoin de :
- entrée depuis des caméras ou des fichiers
- décodage et transport des images
- inférence et post-traitement
- affichage, stockage ou communication en aval
Toute cette chaîne s'appelle un pipeline.
Cette section présente la réflexion en termes de framework nécessaire pour comprendre les systèmes de vision en temps réel avant de passer à DeepStream et aux services spécifiques à Jetson.
Objectifs d'apprentissage
À la fin de cette section, vous devriez être capable de :
- expliquer les principales étapes d'un pipeline de vision en temps réel
- comparer des pipelines applicatifs simples avec des pipelines basés sur un framework
- comprendre le rôle d'
OpenCVet deGStreamer - écrire de petits exemples pour lire et traiter de la vidéo en direct
- penser en termes de flux système de bout en bout plutôt qu'en appels de modèle isolés
Concepts clés / Théorie
Un pipeline en temps réel comporte des étapes
Un pipeline visuel en temps réel typique comprend :
- l'entrée source
- le décodage et l'acquisition d'images
- le prétraitement
- l'inférence du modèle
- le post-traitement
- le rendu, le stockage ou la transmission
Pourquoi les pipelines sont importants
Si une étape est instable ou trop lente, l'ensemble du système en pâtit.
Par exemple :
- un flux RTSP de mauvaise qualité peut entraîner des pertes d'images
- un prétraitement lent peut augmenter la latence
- une surcharge d'affichage inutile peut limiter le débit
OpenCV vs GStreamer
OpenCV est pratique pour l'apprentissage et la logique applicative.
GStreamer est plus puissant lorsque vous avez besoin de pipelines média robustes, de streaming et de flux de données en temps réel.
Les deux sont utiles, mais remplissent des rôles différents.
Termes clés
Source: d'où viennent les imagesDecode: conversion d'une vidéo compressée en imagesPreprocessing: préparation des images pour l'inférencePost-processing: transformation des prédictions brutes en sortie utileLatency: délai de bout en bout à travers le pipelineThroughput: volume total d'images ou de flux traités
Exemple travaillé / Exemple de code
Prérequis : Installez les dépendances requises :
bashpip install opencv-python
Pipeline OpenCV en direct simple
import cv2
import time
cap = cv2.VideoCapture(0)
prev_time = time.time()
while True:
ok, frame = cap.read()
if not ok:
break
current_time = time.time()
fps = 1.0 / (current_time - prev_time)
prev_time = current_time
cv2.putText(frame, f"FPS: {fps:.2f}", (20, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
cv2.imshow("OpenCV Live Pipeline", frame)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
cap.release()
cv2.destroyAllWindows()Exemple GStreamer
gst-launch-1.0 videotestsrc ! videoconvert ! autovideosinkExemple d'entrée RTSP
gst-launch-1.0 rtspsrc location=rtsp://<camera-ip>/<path> latency=200 ! \
rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! autovideosinkIdées reçues fréquentes
- « Le modèle est le pipeline. »
- Le modèle n'est qu'une étape à l'intérieur du pipeline.
- « Si j'obtiens 30 FPS sur le benchmark du modèle, tout le système tourne à 30 FPS. »
- Les performances de bout en bout dépendent de l'ensemble du pipeline.
- « OpenCV et GStreamer font la même chose. »
- Ils se chevauchent dans certains domaines, mais ne sont pas le même outil.
MediaPipe
MediaPipe est le framework open source de Google pour construire des pipelines de perception ML multimodaux en temps réel.
Installation
uv venv .mediapipe --python 3.10.12
source .mediapipe/bin/activate
uv pip install mediapipe opencv-python dlib

Note : La compilation de
dlibpeut prendre plusieurs minutes. Soyez patient.
Détection des mains
Détectez 21 points clés de la main en temps réel :

Détection faciale

Estimation de pose
Détectez 32 points clés du corps :

Détection holistique
Détectez simultanément les points clés du corps, des mains et du visage :

Autres fonctionnalités de MediaPipe
- Maillage facial — Maillage facial 3D avec 468 points de repère
- Pinceau virtuel — Dessinez avec des gestes des doigts
- Reconnaissance de gestes — Reconnaît plus de 14 gestes de la main
- Contrôle par les doigts — Contrôlez l'interface avec la distance entre les doigts
- Détection d'objets 3D — Détecte chaussures, chaises, caméras et tasses
- Suppression de l'arrière-plan — Segmente et remplace l'arrière-plan

Reconnaissance de codes QR
Générer des codes QR
Prérequis : Installez les dépendances requises :
bashpip install qrcode pillow opencv-python numpy pyzbar
cd 4-Computer-Vision/4.8-Real-Time-Vision-Pipeline-Frameworks/code
python qr_code_generate.py
Détecter des codes QR
cd 4-Computer-Vision/4.8-Real-Time-Vision-Pipeline-Frameworks/code
python qr_code_detect.py
Exercices / Réflexion
- Dessinez un pipeline en temps réel à cinq étapes pour un détecteur webcam.
- Exécutez l'exemple OpenCV et mesurez les FPS approximatifs sur votre machine.
- Comparez une entrée fichier vidéo et une entrée caméra en direct. Quelles différences pratiques observez-vous ?
- Expliquez pourquoi la latence de bout en bout est souvent plus importante que le seul temps d'inférence du modèle.
Résumé
La vision par ordinateur en temps réel dépend de la conception du pipeline, pas seulement des modèles. Comprendre l'entrée, le décodage, le prétraitement, l'inférence, le post-traitement et la sortie prépare l'apprenant à des frameworks edge plus avancés tels que DeepStream.
Étape suivante suggérée
Poursuivez avec 4.9 DeepStream et Jetson.