4.8 Real-time vision pipeline-frameworks
Waarom dit belangrijk is
Een nauwkeurig model alleen creëert nog geen real-time visiesysteem.
Een werkend systeem heeft ook nodig:
- input van camera's of bestanden
- decodering en frametransport
- inferentie en nabewerking
- weergave, opslag of downstream-communicatie
Die hele keten wordt een pipeline genoemd.
Deze sectie introduceert het denken in frameworks dat nodig is om real-time visiesystemen te begrijpen, voordat we ingaan op DeepStream en Jetson-specifieke diensten.
Leerdoelen
Aan het einde van deze sectie zou je in staat moeten zijn om:
- de belangrijkste fasen van een real-time vision-pipeline uit te leggen
- eenvoudige applicatiepipelines te vergelijken met framework-gebaseerde pipelines
- de rol van
OpenCVenGStreamerte begrijpen - kleine voorbeelden te schrijven voor het lezen en verwerken van live video
- te denken in end-to-end systeemflow in plaats van geïsoleerde modelaanroepen
Kernconcepten / Theorie
Een real-time pipeline heeft fasen
Een typische real-time visuele pipeline omvat:
- broninvoer
- decodering en frame-acquisitie
- preprocessing
- modelinferentie
- nabewerking
- rendering, opslag of transmissie
Waarom pipelines belangrijk zijn
Als één fase onstabiel of te traag is, lijdt het hele systeem.
Bijvoorbeeld:
- een slechte RTSP-stream kan verloren frames veroorzaken
- trage preprocessing kan de latentie verhogen
- onnodige weergave-overhead kan de doorvoer beperken
OpenCV vs GStreamer
OpenCV is handig voor leren en applicatielogica.
GStreamer is sterker wanneer je robuuste mediapipelines, streaming en real-time dataflow nodig hebt.
Beide zijn nuttig, maar dienen verschillende rollen.
Belangrijkste termen
Source: waar frames vandaan komenDecode: gecomprimeerde video omzetten naar framesPreprocessing: frames voorbereiden voor inferentiePost-processing: ruwe voorspellingen omzetten in bruikbare outputLatency: end-to-end vertraging door de pipelineThroughput: totaal volume van verwerkte frames of streams
Uitgewerkt voorbeeld / Codevoorbeeld
Vereisten: Installeer de benodigde afhankelijkheden:
bashpip install opencv-python
Eenvoudige OpenCV live-pipeline
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()GStreamer-voorbeeld
gst-launch-1.0 videotestsrc ! videoconvert ! autovideosinkRTSP-invoervoorbeeld
gst-launch-1.0 rtspsrc location=rtsp://<camera-ip>/<path> latency=200 ! \
rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! autovideosinkVeelvoorkomende misverstanden
- "Het model is de pipeline."
- Het model is slechts één fase binnen de pipeline.
- "Als ik 30 FPS haal in de modelbenchmark, draait het hele systeem op 30 FPS."
- End-to-end prestaties hangen af van de hele pipeline.
- "OpenCV en GStreamer doen hetzelfde."
- Ze overlappen op sommige gebieden, maar zijn niet dezelfde tool.
MediaPipe
MediaPipe is het open-source framework van Google voor het bouwen van real-time multimodale ML-perceptiepipelines.
Installatie
uv venv .mediapipe --python 3.10.12
source .mediapipe/bin/activate
uv pip install mediapipe opencv-python dlib

Opmerking: Het compileren van
dlibkan enkele minuten duren. Heb even geduld.
Handdetectie
Detecteer 21 handkeypoints in real-time:

Gezichtsdetectie

Houdingsschatting
Detecteer 32 lichaamskeypoints:

Holistische detectie
Detecteer tegelijkertijd keypoints van lichaam, handen en gezicht:

Overige MediaPipe-functies
- Gezichtsmesh — 3D-gezichtsmesh met 468 landmarks
- Virtueel penseel — Teken met vingergebaren
- Gebaarherkenning — Herkent meer dan 14 handgebaren
- Vingerbesturing — Bedien de interface met de afstand tussen vingers
- 3D-objectdetectie — Detecteert schoenen, stoelen, camera's en mokken
- Achtergrondverwijdering — Segmenteer en vervang achtergronden

QR-codeherkenning
QR-codes genereren
Vereisten: Installeer de benodigde afhankelijkheden:
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
QR-codes detecteren
cd 4-Computer-Vision/4.8-Real-Time-Vision-Pipeline-Frameworks/code
python qr_code_detect.py
Oefeningen / Reflectie
- Teken een real-time pipeline van vijf fasen voor een webcam-detector.
- Voer het OpenCV-voorbeeld uit en meet de geschatte FPS op je machine.
- Vergelijk een videobestandsinvoer met een live camera-invoer. Welke praktische verschillen merk je op?
- Leg uit waarom end-to-end latentie vaak belangrijker is dan alleen de inferentietijd van het model.
Samenvatting
Real-time computer vision hangt af van pipeline-ontwerp, niet alleen van modellen. Begrip van invoer, decodering, preprocessing, inferentie, nabewerking en uitvoer bereidt de leerling voor op meer geavanceerde edge-frameworks zoals DeepStream.
Voorgestelde volgende stap
Ga verder met 4.9 DeepStream en Jetson.