La necesidad

Al prepararnos para la primera versión en línea de Microsoft Build, nos propusimos crear una serie de videos cortos, llamados Innovation Bites. Al igual que muchos especialistas de marketing en la situación actual, enfrentábamos las limitaciones de lo que podían crear los oradores en casa y nuestra visión de lo que queríamos crear.

La idea

Nos inspiramos en las técnicas de extracción de mates de fondo de Adobe Research y la Universidad de Washington (UW). Queríamos tomar estas ideas como punto de partida para crear una manera sencilla de usar técnicas de pantalla verde con nuestro sensor Azure Kinect al grabar desde el hogar.

La solución

Desarrollamos un front-end sencillo para que los oradores se graben hasta con dos sensores Azure Kinect a la vez, además de diapositivas, y un back-end que toma las técnicas de UW y Adobe Research y agrega las funcionalidades de profundidad de Azure Kinect para mejorar la precisión de la extracción del fondo. Además, automatiza la carga de los archivos para optimizar la producción del contenido.

Detalles técnicos de Virtual Stage

Este proyecto consta de dos elementos distintos:

1. Aplicación front-end

El presentador usa la aplicación para grabarse. Puede grabar tres archivos de video a partir de una sola grabación: hasta dos videos de los sensores Azure Kinect y un archivo independiente para las diapositivas del presentador con audio, para simplificar la posproducción.

La aplicación permite que el orador revise distintas grabaciones y se quede con las mejores antes de enviarlas al proceso de back-end para generar la pantalla verde virtual.

En la aplicación front-end también incluimos un asistente fácil que permite que el usuario grabe el fondo solo, para resolver el valor alfa y de primer plano en la extracción de mates. Esto simplifica el proceso para el equipo de posproducción a fin de garantizar los mejores resultados posibles en las situaciones de colaboración remota.

2. Proceso de consola back-end

Una vez que el usuario entrega los archivos de video, hay que crear la pantalla verde virtual para poder editarlos con el software que queramos. El resultado de este proceso es el video con el presentador solamente (el resto es una pantalla verde virtual).

Este proceso utiliza la técnica del equipo de la Universidad de Washington. Agregamos mejoras para poder usar la grabación de profundidad del sensor Azure Kinect a fin de eliminar el fondo en forma más precisa.

Uno de los principales desafíos que tratamos de resolver en nuestra implementación es que el conjunto de datos que usamos para el entrenamiento (conjunto de datos Composition-1k de Adobe) solo contenía imágenes con la parte superior del cuerpo, y queríamos grabar a los oradores en planos largos. Esta limitación no significa solo que el modelo no procesa correctamente las piernas debido a la falta de datos de entrenamiento, sino también que la salida de la red neuronal es un cuadro delimitador cuadrado, perfecto para las imágenes de la parte superior del cuerpo solamente, pero no para el cuerpo completo.

Para resolver el problema del cuadro delimitador, dividimos la imagen en dos. Pero eso no soluciona la falta de precisión para reconocer las piernas. Aquí es donde sirvieron las funcionalidades de Azure Kinect.

La técnica de UW propone dos pasos: primero, extraer el fondo basándose en el entrenamiento supervisado y, en segundo lugar, refinar el resultado de manera no supervisada mediante una GAN. El primer paso lo realiza una red profunda que estima el primer plano y el valor de alfa a partir de la entrada compuesta de la imagen original, la foto de fondo y una segmentación tenue de la persona que se encuentra en el cuadro.

Al combinar este método con la API de Azure Kinect, podemos reemplazar la segmentación tenue que se calcula automáticamente de la persona en el fotograma con la silueta más precisa que captura nuestro sensor. Lo que le entregamos al primer modelo es la información del sensor (IR y silueta, más el video sin procesar) y el fondo sin el orador (capturado de la aplicación de front-end por el usuario), lo cual nos entrega una estimación más precisa del primer plano y del valor alfa como resultado. También refinamos el resultado mediante una GAN no supervisada para mejorarlo aún más.

¿Cómo puedes usar este proyecto para tus propios eventos y videos?

  • Desde el punto de vista del orador o del creador del contenido, necesitas uno o dos sensores Azure Kinect (más los requisitos de hardware/software descritos).
  • Visita GitHub, donde encontrarás el código fuente para la aplicación front-end y el lado del servidor, así como el manual del usuario para la aplicación.
  • Seguiremos actualizando este proyecto para entregar plantillas para ARM a fin de implementar el back-end fácilmente en Azure, así como para mejorar los comentarios y la documentación.

Recursos:

Proyectos relacionados con Virtual Stage

Explora más proyectos