4.8 Frameworks de pipeline de visión en tiempo real

Por qué esto importa

Un modelo preciso por sí solo no crea un sistema de visión en tiempo real.

Un sistema funcional también necesita:

  • entrada desde cámaras o archivos
  • decodificación y transporte de fotogramas
  • inferencia y postprocesado
  • visualización, almacenamiento o comunicación posterior

Toda esa cadena se llama pipeline.

Esta sección presenta el pensamiento basado en frameworks necesario para entender los sistemas de visión en tiempo real antes de pasar a DeepStream y a los servicios específicos de Jetson.

Objetivos de aprendizaje

Al final de esta sección, deberías ser capaz de:

  • explicar las principales etapas de un pipeline de visión en tiempo real
  • comparar pipelines de aplicación simples con pipelines basados en frameworks
  • entender el papel de OpenCV y GStreamer
  • escribir pequeños ejemplos para leer y procesar vídeo en vivo
  • pensar en términos de flujo de sistema de extremo a extremo en lugar de llamadas aisladas al modelo

Conceptos clave / Teoría

Un pipeline en tiempo real tiene etapas

Un pipeline visual en tiempo real típico incluye:

  1. entrada de fuente
  2. decodificación y adquisición de fotogramas
  3. preprocesado
  4. inferencia del modelo
  5. postprocesado
  6. renderizado, almacenamiento o transmisión

Por qué importan los pipelines

Si una etapa es inestable o demasiado lenta, todo el sistema sufre.

Por ejemplo:

  • un mal stream RTSP puede causar fotogramas perdidos
  • un preprocesado lento puede aumentar la latencia
  • la sobrecarga innecesaria de visualización puede limitar el throughput

OpenCV vs GStreamer

OpenCV es conveniente para aprendizaje y lógica de aplicación.

GStreamer es más potente cuando necesitas pipelines de medios robustos, streaming y flujo de datos en tiempo real.

Ambos son útiles, pero cumplen roles diferentes.

Términos clave

  • Source: de dónde provienen los fotogramas
  • Decode: convertir vídeo comprimido en fotogramas
  • Preprocessing: preparar fotogramas para la inferencia
  • Post-processing: convertir las predicciones brutas en salida útil
  • Latency: retardo extremo a extremo a través del pipeline
  • Throughput: volumen total de fotogramas o streams procesados

Ejemplo trabajado / Ejemplo de código

Requisitos previos: Instala las dependencias necesarias:

bash
pip install opencv-python

Pipeline en vivo simple con OpenCV

python
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()

Ejemplo de GStreamer

bash
gst-launch-1.0 videotestsrc ! videoconvert ! autovideosink

Ejemplo de entrada RTSP

bash
gst-launch-1.0 rtspsrc location=rtsp://<camera-ip>/<path> latency=200 ! \
  rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! autovideosink

Errores comunes

  • "El modelo es el pipeline."
    • El modelo es solo una etapa dentro del pipeline.
  • "Si obtengo 30 FPS en el benchmark del modelo, todo el sistema corre a 30 FPS."
    • El rendimiento extremo a extremo depende de todo el pipeline.
  • "OpenCV y GStreamer hacen lo mismo."
    • Se solapan en algunas áreas, pero no son la misma herramienta.

MediaPipe

MediaPipe es el framework de código abierto de Google para construir pipelines de percepción de ML multimodal en tiempo real.

Configuración

bash
uv venv .mediapipe --python 3.10.12
source .mediapipe/bin/activate
uv pip install mediapipe opencv-python dlib

Instalación de MediaPipe Verificación de MediaPipe

Nota: La compilación de dlib puede tardar varios minutos. Ten paciencia.

Detección de manos

Detecta 21 puntos clave de la mano en tiempo real:

Diagrama de puntos clave de la mano Detección de manos con USB

Detección facial

Detección facial

Estimación de pose

Detecta 32 puntos clave del cuerpo:

Puntos clave de pose Estimación de pose

Detección holística

Detecta simultáneamente puntos clave del cuerpo, las manos y la cara:

Detección holística con varias personas Detección holística

Otras funciones de MediaPipe

  • Malla facial — Malla facial 3D con 468 puntos de referencia
  • Pincel virtual — Dibuja con gestos de los dedos
  • Reconocimiento de gestos — Reconoce más de 14 gestos de la mano
  • Control con los dedos — Controla la interfaz con la distancia entre los dedos
  • Detección de objetos 3D — Detecta zapatos, sillas, cámaras y tazas
  • Eliminación del fondo — Segmenta y reemplaza el fondo

Malla facial Pincel virtual Reconocimiento de gestos Control con los dedos Objectron Eliminación del fondo

Reconocimiento de códigos QR

Generar códigos QR

Requisitos previos: Instala las dependencias necesarias:

bash
pip install qrcode pillow opencv-python numpy pyzbar
bash
cd 4-Computer-Vision/4.8-Real-Time-Vision-Pipeline-Frameworks/code
python qr_code_generate.py

Código QR generado

Detectar códigos QR

bash
cd 4-Computer-Vision/4.8-Real-Time-Vision-Pipeline-Frameworks/code
python qr_code_detect.py

Detección de códigos QR

Ejercicios / Reflexión

  1. Dibuja un pipeline en tiempo real de cinco etapas para un detector con webcam.
  2. Ejecuta el ejemplo de OpenCV y mide los FPS aproximados en tu máquina.
  3. Compara una entrada de archivo de vídeo y una entrada de cámara en vivo. ¿Qué diferencias prácticas observas?
  4. Explica por qué la latencia extremo a extremo suele ser más importante que el tiempo de inferencia del modelo por sí solo.

Resumen

La visión por computadora en tiempo real depende del diseño del pipeline, no solo de los modelos. Comprender la entrada, la decodificación, el preprocesado, la inferencia, el postprocesado y la salida prepara al alumno para frameworks de edge más avanzados como DeepStream.

Siguiente paso sugerido

Continúa con 4.9 DeepStream y Jetson.

Referencias