Categorías: Tecnología

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 virtuales de personajes 3D en tiempo real es un gran desafío técnico. 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 extremadamente creativos de nuestros desarrolladores.

En esta publicación, describiremos un marco de aprendizaje profundo para la regresión de los controles de animación facial de video que aborda estos desafíos y nos abre a varias oportunidades futuras. La estructura descrita en esta publicación de blog también se presentó como una conversación en el SIGGRAFÍA 2021.

animacion facial

Hay varias opciones para controlar y animar una plataforma de cara 3D. Lo 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, FACS sigue siendo el estándar de facto porque los controles de FACS son intuitivos y fáciles de transferir entre plataformas. A continuación se puede ver un ejemplo de una sonda FACS que se está ejercitando.

Método

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

Detección de rostro

Para obtener 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 permitir la detección de rostros en tiempo real en muchos de los dispositivos que utilizan nuestros usuarios. Entonces, para resolver esto, ajustamos el algoritmo para nuestro caso de uso específico, donde una vez que se detecta un rostro, nuestra implementación de MTCNN solo ejecuta la etapa final de O-Net en cuadros sucesivos, lo que resulta en una velocidad promedio de 10x. También usamos los puntos de referencia faciales (ubicación de los ojos, la nariz y las comisuras de la boca) predichos por el MTCNN para alinear el cuadro delimitador de la cara antes de la siguiente etapa de regresión. 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.

Regresión FACS

Nuestra arquitectura de regresión de FACS utiliza una configuración de subprocesos múltiples que entrena puntos de referencia y ponderaciones de FACS utilizando una red troncal compartida (conocida como codificador) como extractor de recursos.

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 punto de referencia circunvoluciones causales; estas convoluciones operan en características a lo largo del tiempo, a diferencia de las convoluciones que operan solo en características espaciales, como se puede 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.

Capacitació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 serie de pasos, comenzamos a agregar secuencias sintéticas para conocer los pesos de la subred de regresión temporal de FACS. Las secuencias de animación sintéticas fueron creadas por nuestro equipo interdisciplinario de artistas e ingenieros. Nuestro artista creó una plataforma normalizada utilizada para todas las diferentes identidades (malla facial) que se ejercitó y se procesó 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 ejecutados 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 los hitos y pesos de FACS:

Pérdidas posicionales. Para puntos de referencia, el RMSE de posiciones retrocedidas (Llmks), y para pesos FACS, el MSE (Lfacs). Pérdidas Temporales. Para los pesos FACS, reducimos el jitter mediante el uso de tiempos de espera sobre secuencias de animación sintética. Una pérdida inspirada de velocidad (Lv ) [Cudeiro et al. 2019] es el MSE entre las velocidades objetivo y predicha. Fomenta la suavidad general de las expresiones dinámicas. Además, se agrega un término de regularización de aceleración (Lacc) para reducir la fluctuación de los pesos FACS (su peso se mantiene bajo para preservar la capacidad de respuesta). Pérdida de consistencia. Usamos imágenes reales sin anotaciones en una pérdida de consistencia (Lc) no supervisada, similar a [Honari et al. 2018]. Esto fomenta que las predicciones de puntos de referencia sean equivalentes en 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.

interino

Para mejorar el rendimiento del codificador sin reducir la precisión ni aumentar la inestabilidad, utilizamos circunvoluciones selectivas sin rellenar 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 calma. Para mantener el residuo, cortamos el mapa de características antes de agregarlo a la salida de una convolución sin rellenar. Además, configuramos la profundidad de los mapas de recursos 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 resulta en 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 compilaciones múltiples para ejecutarse. usamos el NCNN El marco para la inferencia del modelo en el dispositivo y el tiempo de ejecución de subproceso único (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 a 60 fotogramas por segundo (FPS).

cual es el siguiente

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 múltiples 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 la verdad sin errores de los datos sintéticos. El filtrado temporal realizado en la subred de pesos FACS nos permite reducir el número y el tamaño de las capas en la red troncal 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 refinar y mejorar aún más nuestros modelos para obtener resultados aún más expresivos, sin fluctuaciones y robustos.

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 Posiciones abiertas con nuestro equipo.

WP Dev JaGonzalez

Hijo, esposo y padre de un hermoso niño. Amante de los animales, la tecnología, informática y programación. Si tienes alguna duda, inquietud, comentario o deseas comunicarte directamente conmigo, puedes enviarme un correo electrónico a admin@jagonzalez.org

Compartir
Publicado por
WP Dev JaGonzalez

Entradas recientes

iPhone Hackeado: Qué Hacer para Proteger tu Dispositivo y Asegurar tu Seguridad

¿Has notado aplicaciones desconocidas o un drenaje inesperado de la batería? Estos podrían ser indicios…

2 meses hace

Cómo Restablecer un iPhone a su Estado de Fábrica

Saber cómo Restablecer un iPhone a su Estado de Fábrica es clave para solucionar problemas…

2 meses hace

Motorola planea lanzar al menos dos nuevos teléfonos Moto G en septiembre

Motorola ha confirmado el lanzamiento de Moto G84 5G y Moto G54 5G en India,…

1 año hace

El equipo de WizardLM afirma que un modelo de IA de terceros les robó el trabajo

Recuerde WizardCoder, ¿el codificador de IA que cubrimos recientemente aquí en Windows Report? Nos jactamos…

1 año hace

Las fallas del complemento Jupiter X Core amenazaron a 172.000 sitios web con apropiaciones de cuentas

Los investigadores han descubierto numerosos fallos de seguridad en el complemento WordPress Jupiter X Core…

1 año hace

Consola portátil Xbox: aquí tienes todo lo que necesitas saber al respecto

Para solucionar problemas del sistema de PC con Windows, necesitará una herramienta dedicada Fortect es…

1 año hace