Notizie / Giochi

Animazione facciale in tempo reale per avatar

Animazione facciale in tempo reale per avatar

L'espressione facciale è un passo fondamentale nella marcia di Roblox verso l'integrazione del metaverso nella vita quotidiana delle persone attraverso interazioni avatar naturali e credibili. Tuttavia, l'animazione di volti di personaggi virtuali in 3D in tempo reale è un'enorme sfida tecnica. Nonostante molte scoperte nella ricerca, ci sono pochi esempi commerciali di applicazioni di animazione facciale in tempo reale. È particolarmente impegnativo per Roblox, dove supportiamo una gamma vertiginosa di dispositivi utente, condizioni del mondo reale e casi d'uso selvaggiamente creativi dei nostri sviluppatori.

In questo articolo, descriveremo un framework di deep learning per la regressione dei comandi di animazione facciale dal video che affronta queste sfide e ci apre a una serie di opportunità future. Il framework descritto in questo post sul blog è stato presentato anche come a parlare à SIGGRAPH 2021.

animazione facciale

Ci sono diverse opzioni per controllare e animare un rig facciale 3D. Quello che usiamo è chiamato Sistema di codifica dell'azione facciale o FAC, che definisce una serie di controlli (basati sul posizionamento dei muscoli facciali) per deformare la mesh 3D del viso. Sebbene abbia più di 40 anni, FACS è ancora lo standard de facto perché i comandi FACS sono intuitivi e facilmente trasferibili tra piattaforme. Di seguito è riportato un esempio di un impianto FACS in esercizio.

Metodo

L'idea è che il nostro metodo basato sul deep learning prende un video di input e genera un set di FACS per ogni fotogramma. Per fare ciò, utilizziamo un'architettura in due fasi: rilevamento dei volti e regressione FACS.

Riconoscimento facciale

Per ottenere le migliori prestazioni, implementiamo una variante veloce del relativamente noto algoritmo di rilevamento dei volti MTCNN. L'algoritmo MTCNN originale è abbastanza preciso e veloce ma non abbastanza veloce da supportare il rilevamento dei volti in tempo reale su molti dispositivi utilizzati dai nostri utenti. Quindi, per risolvere questo problema, abbiamo modificato l'algoritmo per il nostro caso d'uso specifico in cui una volta rilevato un volto, la nostra implementazione MTCNN esegue solo l'ultimo passaggio O-Net in frame successivi, il che si traduce in una velocità media di 10x. Utilizziamo anche i punti di riferimento facciali (posizione degli angoli degli occhi, del naso e della bocca) previsti da MTCNN per allineare il riquadro di delimitazione del viso prima della fase di regressione successiva. Questo allineamento consente il ritaglio stretto delle immagini di input, riducendo il calcolo della rete di regressione FACS.

Regressione FACS

La nostra architettura di regressione FACS utilizza una configurazione multitasking che co-addestra punti di riferimento e pesi FACS utilizzando una dorsale condivisa (denominata codificatore) come estrattore di funzionalità.

Questa configurazione ci consente di aumentare i pesi FACS appresi da sequenze di animazione sintetiche con immagini reali che catturano la complessità dell'espressione facciale. La sottorete di regressione FACS che viene addestrata insieme agli usi del regressore landmark circonvoluzioni causali; queste convoluzioni operano su caratteristiche nel tempo al contrario di convoluzioni che operano solo su caratteristiche spaziali come si possono trovare nel codificatore. Ciò consente al modello di apprendere gli aspetti temporali delle animazioni facciali e lo rende meno soggetto a incoerenze come il jitter.

formazione

Inizialmente formiamo il modello per la regressione del solo punto di riferimento utilizzando immagini sia reali che sintetiche. Dopo una serie di passaggi, iniziamo ad aggiungere sequenze sintetiche per apprendere i pesi del sottoarray di regressione temporale FACS. Le sequenze di animazione sintetica sono state create dal nostro team interdisciplinare di artisti e ingegneri. Un rig standardizzato utilizzato per tutte le diverse identità (maglie facciali) è stato messo insieme dal nostro artista che è stato addestrato e renderizzato automaticamente utilizzando file di animazione contenenti pesi FACS. Questi file di animazione sono stati generati utilizzando algoritmi di visione artificiale classici eseguiti su filmati video di ginnastica facciale e integrati con filmati animati a mano per espressioni facciali estreme che mancavano nei video di ginnastica ritmica.

perdite

Per addestrare la nostra rete di deep learning, combiniamo linearmente diversi termini di perdita diversi per far regredire i punti di riferimento e i pesi FACS:

  • Perdite di posizione. Per i benchmark, il RMSE delle posizioni regredite (LMi piace ), e per i pesi FACS, il MSE (LUniversità ).
  • Perdite temporali. Per i pesi FACS, riduciamo il jitter utilizzando le perdite di tempo su sequenze di animazione sintetiche. Una perdita di velocità (Lv ) ispirato da [Cudeiro et al. 2019] è l'MSE tra la velocità target e quella prevista. Incoraggia l'uniformità generale delle espressioni dinamiche. Inoltre, un termine di regolarizzazione sull'accelerazione (Lselon ) viene aggiunto per ridurre il jitter dei pesi FACS (il suo peso viene mantenuto basso per preservare la reattività).
  • Perdita di consistenza. Usiamo immagini reali senza annotazioni in una perdita di coerenza non supervisionata (Lc ), simile a [Onari et al. 2018]. Ciò incoraggia le previsioni dei punti di riferimento a essere equivarianti in diverse trasformazioni dell'immagine, migliorando la coerenza della posizione dei punti di riferimento tra i fotogrammi senza richiedere etichette di punti di riferimento per un sottoinsieme delle immagini nell'apprendimento.

Performance

Per migliorare le prestazioni dell'encoder senza ridurre la precisione o aumentare il jitter, abbiamo utilizzato in modo selettivo le convoluzioni non imbottite per ridurre le dimensioni della mappa delle caratteristiche. Questo ci ha dato un maggiore controllo sulle dimensioni della mappa delle caratteristiche rispetto alle convoluzioni stimolate. Per mantenere il residuo, ritagliamo la mappa delle caratteristiche prima di aggiungerla all'output di una convoluzione non riempita. Inoltre, abbiamo impostato la profondità della mappa delle caratteristiche su un multiplo di 8, per un utilizzo efficiente della memoria con set di istruzioni vettoriali come AVX e Neon FP16 e con conseguente aumento delle prestazioni di 1,5 volte.

Il nostro modello finale ha 1,1 milioni di parametri e richiede 28,1 milioni di moltiplicazioni per l'esecuzione. Per riferimento, vaniglia Rete mobile V2 (su cui si basa la nostra architettura) richiede 300 milioni di moltiplicazioni accumulate per essere eseguite. Noi usiamo il NCNN il framework per l'inferenza del modello sul dispositivo e il tempo di esecuzione a thread singolo (incluso il rilevamento dei volti) per un fotogramma di video sono elencati nella tabella seguente. Si noti che un runtime di 16 ms supporterebbe l'elaborazione di 60 frame al secondo (FPS).

E dopo

La nostra pipeline di dati sintetici ci ha permesso di migliorare in modo iterativo l'espressività e la robustezza del modello addestrato. Abbiamo aggiunto sequenze sintetiche per migliorare la reattività alle espressioni mancate, nonché un allenamento equilibrato su varie identità facciali. Otteniamo un'animazione di alta qualità con un calcolo minimo grazie alla formulazione e alle perdite temporali della nostra architettura, alla colonna vertebrale accuratamente ottimizzata e alla verità del terreno priva di errori dai dati sintetici. Il filtraggio temporale eseguito nel sottoarray di ponderazione FACS consente di ridurre il numero e le dimensioni degli strati nella spina dorsale senza aumentare il jitter. La perdita di coerenza non supervisionata ci consente di allenarci con un ampio set di dati reali, migliorando la generalizzazione e la robustezza del nostro modello. Continuiamo a lavorare per perfezionare e migliorare i nostri modelli, al fine di ottenere risultati ancora più espressivi, privi di jitter e robusti.

Se vuoi lavorare su sfide simili all'avanguardia del rilevamento dei volti in tempo reale e dell'apprendimento automatico, dai un'occhiata ad alcuni dei nostri posizioni aperte con la nostra squadra.

autore-avatar

Il team della Fun-Academy

Il team di editori Fun Academy. Fan e appassionati di videogiochi in tutto il mondo.