Saltar al contenido

Aplicación de Inteligencia Artificial al procesamiento de video en tiempo real: Conceptos básicos y más

04/01/2024

Al igual que con las imágenes, en la manipulación de vídeos se utilizan métodos consolidados como la visión artificial, la identificación de elementos, el aprendizaje automático y el aprendizaje profundo para mejorar este procedimiento.

Ya estés usando la visión artificial y el Procesamiento del Lenguaje Natural (PNL) en la edición de videos y generación, la identificación de objetos para el etiquetado automático de contenido de vídeo, el aprendizaje automático para optimizar el Análisis de vídeo con IA, o el aprendizaje profundo para acelerar la eliminación de fondo en tiempo real, los usos de estas tecnologías se incrementan día tras día.

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

Continúa leyendo para descubrir qué enfoque puedes adoptar para el uso de la IA en la manipulación de vídeos.

Principios básicos de la manipulación de vídeo en tiempo real

Empecemos por lo más elemental. La manipulación de vídeos en tiempo real es una tecnología crucial en los sistemas de vigilancia que utilizan identificación facial y de objetos. También es el proceso clave que hace funcionar el software de inspección visual con IA en el sector industrial.

Entonces, ¿cómo funciona la manipulación de vídeo? Este proceso consta de varias etapas, que incluyen decodificación, cálculo y codificación. Esto es lo que necesitas conocer:

  • Decodificación: El proceso requerido para transformar un video de un archivo comprimido a su formato original sin comprimir.
  • Operación o cálculo: Una operación específica llevada a cabo en un fotograma de vídeo sin comprimir.
  • Codificación: El proceso de reconversión del fotograma ya procesado a su formato comprimido original.

Ahora bien, el objetivo de cualquier tarea de manipulación de vídeo es llevar a cabo estos pasos de la manera más rápida y precisa. Algunas de las formas más sencillas de lograr esto incluyen: trabajar en paralelo y optimizar la velocidad del algoritmo. ¿Quieres saberlo en términos sencillos? Necesitas sacar partido a la división de archivos y a la arquitectura de canalización.

¿Qué es la división de archivos de vídeo?

La división de archivos de vídeo permite que los algoritmos trabajen simultáneamente, lo que les permite usar modelos más precisos aunque sean más lentos. Esto se consigue desglosando los vídeos en piezas individuales que se procesan simultáneamente.

Puedes entender la división de vídeo como una forma de generación de archivos virtuales en vez de la generación de subarchivos.

A pesar de esto, la división de archivos de vídeo no es la mejor opción para la manipulación de vídeo en tiempo real. ¿Por qué? Este proceso te dificulta parar, reanudar y rebobinar un archivo mientras se está procesando.

¿Qué es la arquitectura de canalización?

Aplicación de la IA en la manipulación de vídeos en tiempo real: Introducción y más allá

Fuente: https://mobidev.biz/blog/ai-computer-vision-real-time-video-processing

La otra alternativa es la arquitectura de canalización. Este proceso se aplica para dividir y paralelizar las tareas que se realizan durante la manipulación, en vez de dividir el video directamente.

A continuación, se presenta un rápido ejemplo de cómo funciona la arquitectura de canalización en la práctica y cómo puede incorporarse en un sistema de videovigilancia para identificar y desenfocar rostros en tiempo real.

Aplicación de la IA en la manipulación de vídeos en tiempo real: Introducción y más allá

Fuente:

En este ejemplo, la arquitectura de canalización ha dividido las tareas en decodificación, detección de rostros, desenfoque de rostros y codificación. Y si deseas mejorar la velocidad de la canalización, puedes aplicar técnicas de aprendizaje profundo.

Explicación de la decodificación y codificación

¿Y qué pasa con la decodificación y codificación? Existen dos maneras de realizar estos procesos: mediante software y hardware.

Es posible que ya te suene el concepto de aceleración por hardware. Este proceso es posible gracias a los decodificadores y codificadores integrados en las tarjetas gráficas NVIDIA más recientes, así como a los núcleos CUDA.

Entonces, ¿qué opciones tienes a tu alcance cuando se trata de aceleración de hardware para los procesos de codificación y decodificación? Estas son algunas de las opciones más populares:

  • Compilación de OpenCV con soporte CUDA: La compilación de OpenCV con CUDA optimiza tanto la decodificación como cualquier cálculo de canalización que utilice OpenCV. Ten en cuenta que tendrás que escribirlos en C++ ya que el contenedor de Python no lo admite. Pero, en situaciones que requieren tanto decodificación como cálculos numéricos con una GPU sin tener que copiar desde la memoria de la CPU, sigue siendo una de las mejores opciones disponibles.
  • Compilación de FFmpeg o GStreamer con soporte para los códecs NVDEC/NVENC: Otra opción es usar el decodificador y codificador NVIDIA integrado que viene con las instalaciones personalizadas de FFmpeg y Gstreamer. Sin embargo, te sugerimos que uses FFmpeg si es posible, ya que requiere menos mantenimiento. Además, la mayoría de las bibliotecas funcionan con FFmpeg, lo que significa que automáticamente mejorará el rendimiento de la biblioteca al reemplazarla.
  • Uso del framework de manipulación de vídeos NVIDIA: La última opción es usar un contenedor de Python para decodificar el fotograma directamente en un tensor de PyTorch en la GPU. Esta opción elimina la copia adicional de la CPU a la GPU.

Detección de rostros y desenfoque

Los modelos de detección de objetos (SSD o RetinaFace) son una opción popular para el reconocimiento de rostros. Estas soluciones son eficaces para localizar el rostro humano en un fotograma. Y basándonos en nuestra experiencia, solemos preferir los modelos de seguimiento de caras de Caffe y detección de objetos de TensorFlow, ya que proporcionan los mejores resultados. Además, ambos están disponibles a través de la biblioteca OpenCV módulo dnn.

Entonces, ¿qué sucede después de que se detecta un rostro? A continuación, el sistema basado en Python y OpenCV revela los cuadros delimitadores y la confiabilidad de la detección. Finalmente, se aplica un algoritmo de desenfoque a las áreas recortadas.

¿Cómo desarrollar un software de manipulación de vídeo en directo impulsado por IA?

No es ningún secreto que la manipulación de vídeos, los códecs que la facilitan y tanto el hardware como el software necesarios son de naturaleza bastante técnica.

Sin embargo, eso no significa que no puedas usar estas herramientas para crear tu propio software de manipulación de vídeo en vivo.

Aquí te dejamos un breve resumen de lo que debes hacer:

  1. Comienza ajustando tu red neuronal previamente entrenada para realizar las tareas requeridas.
  2. Configura tu infraestructura en la nube para gestionar la manipulación de vídeos y escala según lo necesario.
  3. Crea un software abogado para condensar el proceso e integrar casos específicos de uso como aplicaciones móviles y paneles web o de administración.

Desarrollar un MVP para un software de manipulación de vídeos similar puede llevar hasta cuatro meses utilizando una red neuronal previamente entrenada 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 la prueba de concepto para explorar los detalles del proyecto y encontrar un flujo óptimo.

LEE MÁS ARTÍCULOS SOBRE: Multimedia con IA.

LEE LA ENTRADA ANTERIOR: Los ChatBots de IA son beneficiosos para pacientes con demencia.