Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Visión por computador en tiempo real, Unidad 1 — Qué significa “tiempo real” en visión, 1.1 — Concepto de tiempo real ·

Latencia vs throughput

Latencia vs throughput

Introducción

En la visión por computador en tiempo real, la latencia y el throughput son dos conceptos fundamentales que pueden determinar el éxito o el fracaso de un sistema. La latencia se refiere al tiempo entre cuando una entrada se recibe y cuando sale su correspondiente salida procesada. Por otro lado, el throughput es la cantidad de datos procesados por unidad de tiempo. En términos prácticos, reducir la latencia significa hacer que un sistema responda más rápidamente a las entradas, mientras que aumentar el throughput implica mejorar la capacidad del sistema para manejar más datos en menos tiempo.

Explicación principal con ejemplos

Latencia y throughput: Definiciones básicas

La latencia se mide comúnmente en milisegundos (ms) o microsegundos (μs). Un sistema con baja latencia responde rápidamente a los eventos, lo que es crucial para aplicaciones como la videovigilancia donde las reacciones instantáneas son necesarias. Por ejemplo, un sistema de detección facial en tiempo real debe identificar rostros tan pronto como aparezcan, sin demorarse.

El throughput se mide en términos de datos procesados por segundo (DPS) o frames por segundo (FPS). Un alto throughput significa que el sistema puede manejar más datos con mayor eficiencia. Por ejemplo, un sistema de detección de objetos debe ser capaz de procesar múltiples imágenes al mismo tiempo para obtener la máxima eficiencia.

Ejemplo práctico

Imagina una aplicación de videovigilancia en la que se detectan rostros en tiempo real. Si el sistema tiene una latencia alta, podría demorarse hasta 100 ms entre recibir un frame y mostrar la detección del rostro correspondiente. Esto sería inaceptable para aplicaciones como la seguridad pública.

En contraste, si el throughput es bajo, el sistema puede no ser capaz de manejar múltiples frames simultáneos, lo que podría resultar en perdida de datos o rendimiento inconsistente. Un buen balance entre latencia y throughput asegura una respuesta rápida y eficiente a las entradas.

Bloque de código: Medición de FPS

A continuación se muestra un ejemplo simple usando OpenCV para medir el throughput (FPS) de una aplicación de detección en tiempo real:

import cv2
import time

# Inicializar la cámara
cap = cv2.VideoCapture(0)

start_time = time.time()
frame_count = 0

while True:
    ret, frame = cap.read()
    
    if not ret:
        break
    
    # Realizar procesamiento de imagen (puede ser una detección)
    # ...
    
    frame_count += 1
    elapsed_time = time.time() - start_time
    
    # Calcular FPS
    fps = frame_count / elapsed_time
    
    print(f"FPS: {fps:.2f}")
    
cap.release()

Errores típicos / trampas

Error 1: Ignorar la importancia del preprocesamiento

A menudo, el tiempo de procesamiento se gasta en el preprocesamiento, como la conversión a escala de grises o la normalización. Ignorar este paso puede llevar a un throughput bajo y latencia alta.

Error 2: Usar modelos complejos sin optimizar

Modelos más precisos suelen ser más lentos. Sin embargo, en aplicaciones de tiempo real, el trade-off entre precisión y velocidad es crucial. Se debe elegir un modelo que ofrezca una buena balance entre ambos.

Error 3: No considerar la memoria caché y el uso compartido

La optimización del uso de la memoria caché puede mejorar significativamente los tiempos de procesamiento, especialmente en sistemas de GPU. No considerar esto puede resultar en un rendimiento subpar y latencia alta.

Checklist accionable

Pasos para optimizar latencia y throughput:

  1. Medir y monitorear: Utiliza herramientas como OpenCV para medir la latencia y el throughput.
  2. Optimizar el preprocesamiento: Minimiza las operaciones en el preprocesamiento, como la conversión a escala de grises.
  3. Elegir modelos adecuados: Seleciona modelos de detección que equilibren precisión y velocidad.
  4. Optimización de memoria: Utiliza técnicas para optimizar el uso de la memoria caché, especialmente en sistemas GPU.
  5. Implementar multicore: Utiliza múltiples núcleos o hilos para procesar datos paralelamente.
  6. Monitoreo constante: Mantén un registro detallado del rendimiento y realiza ajustes según sea necesario.

Cierre con "Siguientes pasos"

Siguientes pasos

  1. Implementa el monitoreo constante de latencia y throughput en tu aplicación actual.
  2. Optimiza el preprocesamiento para reducir la carga inicial del sistema.
  3. Elije modelos adecuados que equilibren precisión y velocidad según tus requisitos.
  4. Implementa técnicas de optimización de memoria para mejorar el rendimiento.
  5. Mira hacia soluciones edge devices para aplicaciones donde el retraso es crítico.

Seguir estos pasos te ayudará a crear sistemas de visión por computador en tiempo real más eficientes y precisos.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).