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

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.

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