Animación facial en tiempo real para avatares PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Animación facial en tiempo real para avatares

La expresión facial es un paso crítico en la marcha de Roblox para hacer que el metaverso sea parte de la vida diaria de las personas a través de interacciones de avatar naturales y creíbles. Sin embargo, animar rostros de personajes virtuales en 3D en tiempo real es un desafío técnico enorme. A pesar de los numerosos avances en la investigación, existen ejemplos comerciales limitados de aplicaciones de animación facial en tiempo real. Esto es particularmente desafiante en Roblox, donde admitimos una variedad vertiginosa de dispositivos de usuario, condiciones del mundo real y casos de uso tremendamente creativos de nuestros desarrolladores.

Animación facial en tiempo real para avatares PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Animación facial en tiempo real para avatares PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

En esta publicación, describiremos un marco de aprendizaje profundo para la regresión de los controles de animación facial del video que aborda estos desafíos y nos abre a una serie de oportunidades futuras. El marco descrito en esta publicación de blog también se presentó como un hablar at SIGGRAPH 2021.

Animacion facial

Hay varias opciones para controlar y animar un face-rig 3D. El que usamos se llama Sistema de Codificación de Acción Facial o FACS, que define un conjunto de controles (basados ​​en la ubicación de los músculos faciales) para deformar la malla facial 3D. A pesar de tener más de 40 años, los FACS siguen siendo el estándar de facto debido a que los controles FACS son intuitivos y fácilmente transferibles entre plataformas. A continuación se puede ver un ejemplo de una plataforma FACS en ejercicio.

Animación facial en tiempo real para avatares PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Método

La idea es que nuestro método basado en el aprendizaje profundo tome un video como entrada y emita un conjunto de FACS para cada cuadro. Para lograr esto, utilizamos una arquitectura de dos etapas: detección de rostros y regresión FACS.

Animación facial en tiempo real para avatares PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Detección de la Cara

Para lograr el mejor rendimiento, implementamos una variante rápida del relativamente conocido algoritmo de detección de rostros MTCNN. El algoritmo MTCNN original es bastante preciso y rápido, pero no lo suficientemente rápido como para admitir la detección de rostros en tiempo real en muchos de los dispositivos que utilizan nuestros usuarios. Por lo tanto, para resolver esto, modificamos el algoritmo para nuestro caso de uso específico donde, una vez que se detecta una cara, nuestra implementación de MTCNN solo ejecuta la etapa final de O-Net en los cuadros sucesivos, lo que resulta en una aceleración promedio de 10x. También usamos los puntos de referencia faciales (ubicación de los ojos, la nariz y las esquinas de la boca) predichos por MTCNN para alinear el cuadro delimitador de la cara antes de la etapa de regresión posterior. Esta alineación permite un recorte ajustado de las imágenes de entrada, lo que reduce el cálculo de la red de regresión FACS.

Animación facial en tiempo real para avatares PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Regresión FACS 

Nuestra arquitectura de regresión FACS utiliza una configuración multitarea que entrena conjuntamente los puntos de referencia y los pesos FACS utilizando una red troncal compartida (conocida como codificador) como extractor de características.

Esta configuración nos permite aumentar los pesos FACS aprendidos de secuencias de animación sintética con imágenes reales que capturan las sutilezas de la expresión facial. La subred de regresión FACS que se entrena junto con los usos del regresor de puntos de referencia circunvoluciones causales; estas circunvoluciones operan en características a lo largo del tiempo, a diferencia de las convoluciones que solo operan en características espaciales como las que se pueden encontrar en el codificador. Esto permite que el modelo aprenda aspectos temporales de las animaciones faciales y lo hace menos sensible a las inconsistencias, como el jitter.

Animación facial en tiempo real para avatares PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Formación

Inicialmente, entrenamos el modelo solo para la regresión de puntos de referencia utilizando imágenes reales y sintéticas. Después de una cierta cantidad de pasos, comenzamos a agregar secuencias sintéticas para conocer los pesos de la subred de regresión temporal FACS. Las secuencias de animación sintética fueron creadas por nuestro equipo interdisciplinario de artistas e ingenieros. Nuestro artista configuró una plataforma normalizada utilizada para todas las diferentes identidades (mallas faciales) que se ejercitó y renderizó automáticamente utilizando archivos de animación que contenían pesos FACS. Estos archivos de animación se generaron utilizando algoritmos clásicos de visión por computadora que se ejecutan en secuencias de video de calistenia facial y se complementaron con secuencias animadas a mano para expresiones faciales extremas que faltaban en los videos de calistenia. 

Pérdidas

Para entrenar nuestra red de aprendizaje profundo, combinamos linealmente varios términos de pérdida diferentes para retroceder puntos de referencia y pesos FACS: 

  • Pérdidas posicionales. Para puntos de referencia, el RMSE de las posiciones retrocedidas (Lpelículas ), y para pesos FACS, el MSE (Lcolegios ). 
  • Pérdidas temporales. Para los pesos FACS, reducimos el jitter usando pérdidas temporales sobre secuencias de animación sintéticas. Una pérdida de velocidad (Lv ) inspirado por [Cudeiro et al. 2019] es el MSE entre las velocidades objetivo y predicha. Fomenta la suavidad general de las expresiones dinámicas. Además, un término de regularización sobre la aceleración (Lsegún ) se agrega para reducir la fluctuación de los pesos de FACS (su peso se mantiene bajo para preservar la capacidad de respuesta). 
  • Pérdida de consistencia. Utilizamos imágenes reales sin anotaciones en una pérdida de consistencia no supervisada (Lc ), Similar a [Honari et al. 2018]. Esto fomenta que las predicciones de puntos de referencia sean equivariantes bajo diferentes transformaciones de imágenes, lo que mejora la consistencia de la ubicación de puntos de referencia entre fotogramas sin requerir etiquetas de puntos de referencia para un subconjunto de las imágenes de entrenamiento.

Rendimiento

Para mejorar el rendimiento del codificador sin reducir la precisión ni aumentar la fluctuación, usamos de forma selectiva circunvoluciones sin relleno para reducir el tamaño del mapa de características. Esto nos dio más control sobre los tamaños de los mapas de características que las circunvoluciones con zancadas. Para mantener el residual, cortamos el mapa de características antes de agregarlo a la salida de una convolución sin relleno. Además, configuramos la profundidad de los mapas de características en un múltiplo de 8, para un uso eficiente de la memoria con conjuntos de instrucciones vectoriales como AVX y Neon FP16, lo que da como resultado un aumento del rendimiento de 1.5 veces.

Nuestro modelo final tiene 1.1 millones de parámetros y requiere 28.1 millones de acumulaciones múltiples para ejecutarse. Para referencia, vainilla red móvil V2 (en el que se basa nuestra arquitectura) requiere 300 millones de acumulaciones múltiples para ejecutarse. usamos el NCNN El marco para la inferencia del modelo en el dispositivo y el tiempo de ejecución de un solo subproceso (incluida la detección de rostros) para un cuadro de video se enumeran en la siguiente tabla. Tenga en cuenta que un tiempo de ejecución de 16 ms admitiría el procesamiento de 60 fotogramas por segundo (FPS). 

Animación facial en tiempo real para avatares PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Pasos a seguir

Nuestra canalización de datos sintéticos nos permitió mejorar iterativamente la expresividad y la solidez del modelo entrenado. Agregamos secuencias sintéticas para mejorar la capacidad de respuesta a las expresiones perdidas y también equilibramos el entrenamiento en diversas identidades faciales. Logramos una animación de alta calidad con un cálculo mínimo debido a la formulación temporal de nuestra arquitectura y pérdidas, una columna vertebral cuidadosamente optimizada y una verdad de campo libre de errores a partir de los datos sintéticos. El filtrado temporal realizado en la subred de pesos FACS nos permite reducir el número y tamaño de capas en el backbone sin aumentar el jitter. La pérdida de consistencia no supervisada nos permite entrenar con un gran conjunto de datos reales, mejorando la generalización y robustez de nuestro modelo. Continuamos trabajando para perfeccionar y mejorar nuestros modelos, para obtener resultados aún más expresivos, sin fluctuaciones y sólidos. 

Si está interesado en trabajar en desafíos similares a la vanguardia del seguimiento facial en tiempo real y el aprendizaje automático, consulte algunos de nuestros ofertas abiertas con nuestro equipo.

El puesto Animación facial en tiempo real para avatares apareció por primera vez en Blog de Roblox.

Sello de tiempo:

Mas de Roblox