Líderes de opinión
Aplicar IA al Procesamiento de Video en Tiempo Real: Lo Básico y Más

Por Maksym Tatariants, Ingeniero de Ciencia de Datos en MobiDev.
No hay nada nuevo en el uso de inteligencia artificial (IA) en el procesamiento de video. Si se mira más allá del procesamiento de imágenes, es uno de los casos de uso más comunes para la IA. Y al igual que el procesamiento de imágenes, el procesamiento de video utiliza técnicas establecidas como visión por computadora, reconocimiento de objetos, aprendizaje automático y aprendizaje profundo para mejorar este proceso.
Ya sea que utilice visión por computadora y NLP en edición de video y generación, reconocimiento de objetos en tareas de etiquetado automático de contenido de video, aprendizaje automático para optimizar análisis de video de IA, o aprendizaje profundo para agilizar la eliminación de fondo en tiempo real, los casos de uso siguen creciendo día a día.
Continúe leyendo para aprender qué enfoque puede tomar al utilizar la IA en el procesamiento de video.
Lo Básico del Procesamiento de Video en Tiempo Real
Comencemos con lo básico. El procesamiento de video en tiempo real es una tecnología esencial en los sistemas de vigilancia que utilizan reconocimiento de objetos y facial. También es el proceso que impulsa el software de inspección visual de IA en el sector industrial.
Entonces, ¿cómo funciona el procesamiento de video? El procesamiento de video implica una serie de pasos, que incluyen decodificación, cálculo y codificación. Aquí hay lo que necesita saber:
- Decodificación: El proceso necesario para convertir un video de un archivo comprimido a su formato raw.
- Cálculo: Una operación específica realizada en un cuadro de video raw.
- Codificación: El proceso de reconversión del cuadro procesado a su estado comprimido original.
Ahora, el objetivo de cualquier tarea de procesamiento de video es completar estos pasos lo más rápido y con la mayor precisión posible. Las formas más fáciles de lograr esto incluyen: trabajar en paralelo y optimizar el algoritmo para velocidad. En términos simples, necesita aprovechar la división de archivos y la arquitectura de tuberías.
¿Qué es la División de Archivos de Video?
La división de archivos de video permite que los algoritmos trabajen simultáneamente, lo que les permite utilizar modelos más lentos y precisos. Esto se logra dividiendo los videos en partes separadas que se procesan al mismo tiempo.
Puede pensar en la división de video como una forma de generación de archivos virtuales en lugar de generación de subarchivos.
A pesar de esto, la división de archivos de video no es la mejor opción para el procesamiento de video en tiempo real. ¿Por qué exactamente? Este proceso hace que sea difícil pausar, reanudar y rebobinar un archivo mientras se está procesando.
¿Qué es la Arquitectura de Tuberías?
La otra opción es la arquitectura de tuberías. Este proceso funciona para dividir y paralelizar las tareas que se realizan durante el procesamiento, en lugar de dividir el video de forma directa.
Aquí hay un ejemplo rápido de cómo se ve la arquitectura de tuberías en la práctica y cómo se puede utilizar en un sistema de vigilancia para detectar y desenfocar caras en tiempo real.
En este ejemplo, la tubería ha dividido las tareas en decodificación, detección de caras, desenfoque de caras y codificación. Y si desea mejorar la velocidad de la tubería, puede utilizar técnicas de aprendizaje profundo de tuberías.
Decodificación y Codificación Explicadas
¿Qué hay de la decodificación y la codificación? Hay dos formas de completar estos procesos: software y hardware.
Ya puede estar familiarizado con el concepto de aceleración de hardware. Este proceso es posible gracias a los decodificadores y codificadores instalados en las últimas tarjetas gráficas NVIDIA, así como los núcleos CUDA.
Entonces, ¿qué opciones tiene disponibles para la aceleración de hardware para los procesos de codificación y decodificación? Aquí hay algunas de las opciones más populares:
- Compilar OpenCV con soporte CUDA: Compilar OpenCV con CUDA optimiza tanto la decodificación como cualquier cálculo de tubería que utilice OpenCV. Tenga en cuenta que necesitará escribirlos en C++ ya que el wrapper de Python no admite esto. Pero en situaciones que requieren tanto decodificación como cálculos numéricos con una GPU sin copiar desde la memoria de la CPU, todavía es una de las mejores opciones disponibles.
- Compilar FFmpeg o GStreamer con soporte de códecs NVDEC/NVENC: Otra opción es utilizar el decodificador y codificador NVIDIA integrados con instalaciones personalizadas de FFmpeg y Gstreamer. Sin embargo, sugerimos utilizar FFmpeg siempre que sea posible, ya que requiere menos mantenimiento. Además, la mayoría de las bibliotecas están impulsadas por FFmpeg, lo que significa que automáticamente mejorará el rendimiento de la biblioteca reemplazándola.
- Utilizar el Marco de Procesamiento de Video de NVIDIA: La última opción es utilizar un wrapper de Python para decodificar el cuadro directamente en un tensor PyTorch en la GPU. Esta opción elimina la copia adicional desde la CPU a la GPU.
Detección y Desenfoque de Caras
Los modelos de detección de objetos (SSDs o RetinaFace) son una opción popular para completar la detección de caras. Estas soluciones trabajan para localizar la cara humana en un cuadro. Y según nuestra experiencia, tendemos a preferir los modelos de seguimiento de caras Caffe y detección de objetos TensorFlow, ya que proporcionaron los mejores resultados. Además, ambos están disponibles utilizando la módulo dnn de la biblioteca OpenCV.
Entonces, ¿qué sucede después de que se ha detectado una cara? A continuación, el sistema basado en Python y OpenCV mostrará rectángulos delimitadores y confianza de detección. Finalmente, se aplica un algoritmo de desenfoque a las áreas recortadas.
¿Cómo Puede Construir un Software de Procesamiento de Video en Vivo con IA?
No es un secreto que el procesamiento de video, los códecs que lo impulsan y tanto el hardware como el software requeridos son bastante técnicos por naturaleza.
Aun así, eso no significa que no pueda utilizar estas herramientas para construir su propio software de procesamiento de video en vivo.
Aquí hay un resumen breve de lo que necesita hacer:
- Comience ajustando su red neuronal preentrenada para completar las tareas requeridas.
- Configure su infraestructura en la nube para manejar el procesamiento de video y escalar según sea necesario.
- Construya un abogado de software para condensar el proceso e integrar casos de uso específicos como aplicaciones móviles y paneles administrativos o web.
Desarrollar un MVP para un software de procesamiento de video similar puede tardar hasta cuatro meses utilizando una red neuronal preentrenada y capas de aplicación simples. Sin embargo, el alcance y el cronograma dependen de los detalles de cada proyecto. En la mayoría de los casos, tiene sentido comenzar con el desarrollo de una prueba de concepto para explorar los detalles del proyecto y encontrar un flujo óptimo.














