Funciones en segundo plano en Google Meet, con tecnología Web ML

La videoconferencia es cada vez más crítica en el trabajo y la vida personal de las personas. Mejorar esa experiencia con mejoras de privacidad o toques visuales divertidos puede ayudar a centrar nuestro enfoque en la reunión en sí. Como parte de este objetivo, recientemente anunciamos formas de difuminar y reemplazar su fondo en Google Meet , que usa el aprendizaje automático (ML) para resaltar mejor a los participantes independientemente de su entorno. Mientras que otras soluciones requieren la instalación de software adicional, las funciones de Meet están impulsadas por tecnologías de ML web de vanguardia creadas con MediaPipe que funcionan directamente en su navegador, sin necesidad de pasos adicionales. Un objetivo clave en el desarrollo de estas funciones fue proporcionar rendimiento en el navegador en tiempo real en casi todos los dispositivos modernos, lo que logramos al combinar modelos eficientes de ML en el dispositivo, renderizado basado en WebGL e inferencia de ML basada en la web a través de XNNPACKTFLite .

Desenfoque de fondo y reemplazo de fondo, con tecnología de MediaPipe en la web.

Descripción general de nuestra solución Web ML
Las nuevas funciones de Meet se desarrollan con MediaPipe , el marco de código abierto de Google para soluciones de aprendizaje automático personalizables multiplataforma para medios en vivo y de transmisión, que también impulsa las soluciones de aprendizaje automático como el seguimiento de la postura del cuerpo , el iris y la mano en tiempo real en el dispositivo.

Una necesidad fundamental de cualquier solución en el dispositivo es lograr un alto rendimiento. Para lograr esto, la canalización web de MediaPipe aprovecha WebAssembly , un formato de código binario de bajo nivel diseñado específicamente para navegadores web que mejora la velocidad para tareas de procesamiento pesado. En tiempo de ejecución, el navegador convierte las instrucciones de WebAssembly en código de máquina nativo que se ejecuta mucho más rápido que el código JavaScript tradicional. Además, Chrome 84 introdujo recientemente soporte para WebAssembly SIMD , que procesa múltiples puntos de datos con cada instrucción, lo que resulta en un aumento de rendimiento de más de 2 veces.

Nuestra solución primero procesa cada fotograma de video segmentando a un usuario de sus antecedentes (más sobre nuestro modelo de segmentación más adelante en la publicación) utilizando la inferencia ML para calcular una máscara de baja resolución. Opcionalmente, refinamos aún más la máscara para alinearla con los límites de la imagen. Luego, la máscara se usa para renderizar la salida de video a través de WebGL2 , con el fondo borroso o reemplazado.

Canalización de WebML: todas las operaciones de procesamiento pesado se implementan en C ++ / OpenGL y se ejecutan en el navegador a través de WebAssembly.

En la versión actual, la inferencia del modelo se ejecuta en la CPU del cliente para lograr un bajo consumo de energía y una cobertura de dispositivo más amplia. Para lograr un rendimiento en tiempo real, diseñamos modelos ML eficientes con inferencia acelerada por la biblioteca XNNPACK , el primer motor de inferencia diseñado específicamente para la nueva especificación SIMD de WebAssembly. Acelerado por XNNPACK y SIMD , el modelo de segmentación puede ejecutarse en tiempo real en la web.

Habilitada por la configuración flexible de MediaPipe, la solución de desenfoque / reemplazo de fondo adapta su procesamiento según la capacidad del dispositivo. En los dispositivos de gama alta, ejecuta todo el proceso para ofrecer la más alta calidad visual, mientras que en los dispositivos de gama baja sigue funcionando a gran velocidad al cambiar a modelos de aprendizaje automático livianos y omitir el refinamiento de la máscara.

Modelo de segmentación
Los modelos de ML en el dispositivo deben ser ultraligeros para una inferencia rápida, un bajo consumo de energía y un tamaño de descarga pequeño. Para los modelos que se ejecutan en el navegador, la resolución de entrada afecta en gran medida la cantidad de operaciones de punto flotante (FLOP) necesarias para procesar cada fotograma y, por lo tanto, también debe ser pequeña. Reducimos la resolución de la imagen a un tamaño más pequeño antes de alimentarla al modelo. Recuperar una máscara de segmentación lo más fina posible a partir de una imagen de baja resolución se suma a los desafíos del diseño de modelos.

La red de segmentación general tiene una estructura simétrica con respecto a la codificación y decodificación, mientras que los bloques del decodificador (verde claro) también comparten una estructura de capa simétrica con los bloques del codificador (azul claro). Específicamente, la atención por canal con agrupación de promedios globales se aplica tanto en los bloques del codificador como en el decodificador, lo que es amigable para la inferencia de CPU eficiente.

Arquitectura del modelo con codificador MobileNetV3 (azul claro) y un decodificador simétrico (verde claro).

Modificamos MobileNetV3-small como el codificador, que ha sido ajustado por la búsqueda de arquitectura de red para obtener el mejor rendimiento con bajos requisitos de recursos. Para reducir el tamaño del modelo en un 50%, exportamos nuestro modelo a TFLite usando la cuantificación float16, lo que resultó en una ligera pérdida de precisión de peso, pero sin un efecto notable en la calidad. El modelo resultante tiene 193K parámetros y solo tiene un tamaño de 400KB.

Efectos de renderizado
Una vez que se completa la segmentación, usamos sombreadores OpenGL para procesamiento de video y renderizado de efectos, donde el desafío es renderizar de manera eficiente sin introducir artefactos. En la etapa de refinamiento, aplicamos un filtro bilateral conjunto para suavizar la máscara de baja resolución.

Se han reducido los efectos de renderizado con artefactos. Izquierda: el filtro bilateral articular suaviza la máscara de segmentación. Medio: los filtros separables eliminan los artefactos de halo en el fondo borroso. Derecha: Reemplazo de envoltura ligera en fondo.

El sombreador de desenfoque simula un efecto bokeh ajustando la intensidad del desenfoque en cada píxel de forma proporcional a los valores de la máscara de segmentación, similar al círculo de confusión (CoC) en la óptica. Los píxeles se ponderan por sus radios de CoC, de modo que los píxeles de primer plano no se destiñen en el fondo. Implementamos filtros separables para el desenfoque ponderado, en lugar de la popular pirámide gaussiana , ya que elimina los artefactos de halo que rodean a la persona. El desenfoque se realiza a baja resolución para mayor eficiencia y se combina con el fotograma de entrada en la resolución original.

Ejemplos de desenfoque de fondo.

Para el reemplazo de fondo, adoptamos una técnica de composición, conocida como envoltura ligera , para mezclar personas segmentadas e imágenes de fondo personalizadas. La envoltura ligera ayuda a suavizar los bordes de segmentación al permitir que la luz de fondo se derrame sobre los elementos del primer plano, haciendo que la composición sea más envolvente. También ayuda a minimizar los artefactos de halo cuando hay un gran contraste entre el primer plano y el fondo reemplazado.

Ejemplos de reemplazo de fondo.

Actuación
Para optimizar la experiencia para diferentes dispositivos, proporcionamos variantes de modelo en varios tamaños de entrada (es decir, 256x144 y 160x96 en la versión actual), seleccionando automáticamente el mejor según los recursos de hardware disponibles.

Evaluamos la velocidad de la inferencia del modelo y la canalización de un extremo a otro en dos dispositivos comunes: MacBook Pro 2018 con Intel Core i7 de 6 núcleos a 2,2 GHz y Acer Chromebook 11 con Intel Celeron N3060. Para una entrada de 720p, la MacBook Pro puede ejecutar el modelo de mayor calidad a 120 FPS y la canalización de extremo a extremo a 70 FPS, mientras que la Chromebook ejecuta la inferencia a 62 FPS con el modelo de menor calidad y 33 FPS de extremo a extremo. fin.

Modelo FLOPs Dispositivo Inferencia de modelo Tubería
256 x 144 Los 64M MacBook Pro 18 8,3 ms (120 FPS) 14,3 ms (70 FPS)
160 x 96 27M Acer Chromebook 11 16,1 ms (62 FPS) 30 ms (33 FPS)
Modele la velocidad de inferencia y la canalización de un extremo a otro en portátiles de gama alta (MacBook Pro) y de gama baja (Chromebook).

Para la evaluación cuantitativa de la precisión del modelo, adoptamos las métricas populares de intersección sobre unión (IOU) y medida F de límite . Ambos modelos logran una alta calidad, especialmente por tener una red tan liviana:

Modelo Pagaré Perímetro
Medida F
256 x 144 93,58% 0.9024
160 x 96 90,79% 0.8542
Evaluación de la precisión del modelo, medida por IOU y puntaje F de límite.

También publicamos la tarjeta modelo adjunta para nuestros modelos de segmentación, que detalla nuestras evaluaciones de equidad. Nuestros datos de evaluación contienen imágenes de 17 subregiones geográficas del mundo, con anotaciones para el tono de piel y el género. Nuestro análisis muestra que el modelo es consistente en su desempeño en las diversas regiones, tonos de piel y géneros, con solo pequeñas desviaciones en las métricas del IOU.

Conclusión
Presentamos una nueva solución de aprendizaje automático en el navegador para difuminar y reemplazar su fondo en Google Meet. Con esto, los modelos ML y los sombreadores OpenGL pueden ejecutarse de manera eficiente en la web. Las funciones desarrolladas logran un rendimiento en tiempo real con bajo consumo de energía, incluso en dispositivos de bajo consumo.

Expresiones de gratitud
Un agradecimiento especial a los miembros del equipo de Meet y a otros que trabajaron en este proyecto, en particular a Sebastian Jansson, Rikard Lundmark, Stephan Reiter, Fabian Bergmark, Ben Wagner, Stefan Holmer, Dan Gunnarson, Stéphane Hulaud y a todos los miembros de nuestro equipo que trabajaron en la tecnología con nosotros: Siargey Pisarchyk, Karthik Raveendran, Chris McClanahan, Marat Dukhan, Frank Barchard, Ming Guang Yong, Chuo-Ling Chang, Michael Hays, Camillo Lugaresi, Gregory Karpiak, Siarhei Kazakou, Matsvei Zhdanovich y Matthias Grundmann.