Segmentación de vídeo en tiempo real

En una entrada del blog Informática++ os hablé sobre la segmentación semántica y el salto que se estaba dando desde el procesado original de imágenes al procesado de vídeos, con la extensión de benchmarks en nuevos conjuntos de datos como Cityscapes y, especialmente, DAVIS.

Recientemente, Google Research ha anunciado en su blog de investigación el lanzamiento de un algoritmo de segmentación de vídeo que funciona en tiempo real para dispositivos móviles. Aunque en la entrada anterior introdujimos el concepto de segmentación semántica, que tiene como finalidad dividir la imagen en regiones y asignarles una categoría semántica de un conjunto (por ejemplo, coche, persona, perro, tren, avión, etc.), el algoritmo de segmentación que nos trae Google en este caso es el que se conoce como foreground-background segmentation.

El problema de segmentación foreground-background consiste en diferenciar los píxeles de la imagen que pertenecen al objeto de primer plano (foreground) de los píxeles de la imagen que forman el fondo (background). Concretamente, la aplicación desarrollada está diseñada para que el usuario grabe un vídeo de él mismo (selfie story) y pueda hacer una edición automática del vídeo de forma que se le permite cambiar el fondo según varias temáticas predefinidas (día, noche, luz de estudio, etc.).

Ejemplo de segmentación de vídeo. Fuente: Google Research Blog

¿Cómo ha desarrollado Google este algoritmo de segmentación de vídeo? Pues como en la mayoría de casos de éxito de técnicas de deep learning, hay dos elementos que son clave en el entrenamiento de los modelos: una buena base de datos y una arquitectura adecuada para entrenar el modelo. La base de datos que se ha utilizado no es pública o, al menos, no se menciona. Únicamente se menciona que se trata de una base de datos que incluye decenas de millares de imágenes que abarcan un amplio espectro de posibles posturas de las personas (foreground) y en distintos escenarios o fondos (background). Los píxeles de cada una de estas imágenes han sido etiquetados o bien como una de las subcategorías semánticas en que se ha dividido la categoría foreground (cabello, cejas, piel, gafas, orificios nasales, labios, ojos u otras) o bien como background, tal y como se ilustra en la siguiente imagen.

Anotaciones de las imágenes de la base de datos. Fuente: Google Research Blog

Para conseguir una continuidad o consistencia temporal en los frames (cada imagen de una secuencia de vídeo recibe el nombre de frame), las técnicas del estado del arte suelen estar basadas en arquitecturas LSTM (Long short-term memory) o GRU (Gated Recurrent Units). Estas son algunas de las configuraciones que suelen usarse en las redes neuronales recurrentes (RNN, Recurrent Neural Networks), en las que el modelo tiene memoria interna y tiene en consideración los elementos procesados anteriormente en una serie temporal, como por ejemplo una secuencia de imágenes en un vídeo (caso que nos ocupa) o una secuencia de palabras en un texto.

El inconveniente de estas arquitecturas es que suelen tener una coste computacional elevado, cosa que no las hace factibles para ser usadas en tiempo real en un dispositivo móvil. Por este motivo, para el desarrollo de esta aplicación se ha optado por una arquitectura distinta, concretamente basada en la arquitectura de Stacked Hourglasses, un tipo de Red Neuronal Convolucional (CNN, Convolutional Neural Network) típicamente usada en arquitecturas de tipo codificador-decodificador (encoder-decoder) con skip connections, que permite reducir la resolución y posteriormente incrementarla perdiendo el mínimo de detalle posible. Esta arquitectura ha sido entrenada con imágenes de 4 canales donde el cuarto canal es una máscara binaria que representa la segmentación de foreground-background del frame anterior. Durante el entrenamiento del modelo, como se dispone del ground truth, se puede utilizar la anotación que se tiene del frame anterior. En cambio, cuando se usa el modelo en predicción, es la predicción que ha hecho el modelo del frame anterior la que se usa como cuarto canal de entrada para la predicción de la segmentación del siguiente frame. Los otros 3 canales de entrada son los canales RGB de la imagen a segmentar.

Así pues, ya vemos cómo empiezan a llegar a nuestro día a día posibles aplicaciones de segmentación de vídeo. Pero, sin duda, llegarán todavía muchas más, con entornos no tan controlados como un video selfie, ya que históricamente también fueron los detectores de caras y, posteriormente, de personas, los que dieron mejores resultados aplicados a imágenes. La inversión que están realizando grandes compañías en el desarrollo de vehículos de conducción autónoma se plasmará en una mejora significativa de las técnicas de segmentación semántica en vídeo.

Esta entrada se publicó originalmente en el blog Informática++.

Carles Ventura es profesor de los Estudios de Informática, Multimedia y Telecomunicación de la Universitat Oberta de Catalunya (UOC). Doctor por la Universitat Politècnica de Catalunya (UPC), imparte cursos de inteligencia artificial y sus principales intereses en investigación se focalizan en el reconocimiento y detección de objetos y la segmentación semántica de imágenes. Es miembro del grupo de investigación SUnAI (Scene Understanding and Artificial Intelligence).

This entry was posted in Deep Learning and tagged , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *