Inside the Tech - Risoluzione delle espressioni facciali dell'avatar - Blog Roblox

Inside the Tech – Risoluzione delle espressioni facciali dell'avatar – Blog Roblox

Nodo di origine: 3039939

Inside the Tech è una serie di blog che accompagna il nostro Podcast di colloqui tecnici. Nell'episodio 20 del podcast, Avatars & Self-Expression, il CEO di Roblox David Baszucki ha parlato con il direttore senior dell'ingegneria Kiran Bhat, il direttore senior del prodotto Mahesh Ramasubramanian e il direttore principale del prodotto Effie Goenawan, del futuro della comunicazione immersiva attraverso gli avatar e il sfide tecniche che stiamo risolvendo per abilitarlo. In questa edizione di Inside the Tech, abbiamo parlato con il responsabile tecnico Ian Sachs per saperne di più su una di queste sfide tecniche, ovvero abilitare le espressioni facciali per i nostri avatar, e su come il lavoro del team di creazione avatar (nel gruppo Motore) aiuta gli utenti a esprimersi su Roblox.

Quali sono le sfide tecniche più grandi che il tuo team sta affrontando?

Quando pensiamo a come un avatar rappresenta qualcuno su Roblox, in genere consideriamo due cose: come si comporta e come appare. Quindi uno degli obiettivi principali del mio team è consentire agli avatar di rispecchiare le espressioni di una persona. Ad esempio, quando qualcuno sorride, il suo avatar sorride in sincronia con lui. 

Una delle difficoltà nel tracciare le espressioni facciali è ottimizzare l’efficienza del nostro modello in modo da poter catturare queste espressioni direttamente sul dispositivo della persona in tempo reale. Ci impegniamo a rendere questa funzionalità accessibile a quante più persone possibile su Roblox e dobbiamo supportare una vasta gamma di dispositivi. La quantità di potenza di calcolo che il dispositivo di qualcuno può gestire è un fattore vitale in questo. Vogliamo che tutti siano in grado di esprimersi, non solo le persone dotate di dispositivi potenti. Stiamo quindi implementando uno dei nostri primi modelli di deep learning per renderlo possibile. 

La seconda sfida tecnica chiave che stiamo affrontando è la semplificazione del processo utilizzato dai creatori per sviluppare avatar dinamici che le persone possono personalizzare. Creare avatar del genere è piuttosto complicato perché devi modellare la testa e se vuoi che si animi, devi fare cose molto specifiche per manipolare il modello, come posizionare giunti e pesi per la fusione lineare della pelle. Vogliamo rendere questo processo più semplice per i creatori, quindi stiamo sviluppando una tecnologia per semplificarlo. Dovrebbero concentrarsi solo sulla costruzione del modello statico. Quando lo fanno, possiamo montarlo e ingabbiarlo automaticamente. Quindi, il tracciamento del viso e gli indumenti a strati dovrebbero funzionare immediatamente. 

Quali sono alcuni degli approcci e delle soluzioni innovativi che stiamo utilizzando per affrontare queste sfide tecniche?

Abbiamo fatto un paio di cose importanti per assicurarci di ottenere le informazioni giuste per le espressioni facciali. Ciò inizia con l’utilizzo del FACS (Facial Animation Control System) standard del settore. Queste sono la chiave di tutto perché sono ciò che usiamo per guidare le espressioni facciali di un avatar: quanto è larga la bocca, quali occhi si aprono e quanto, e così via. Possiamo utilizzare circa 50 diversi controlli FACS per descrivere l'espressione facciale desiderata. 

Quando crei un algoritmo di machine learning per stimare le espressioni facciali da immagini o video, addestri un modello mostrandogli immagini di esempio con espressioni reali conosciute (descritte con FACS). Mostrando al modello molte immagini diverse con espressioni diverse, il modello impara a stimare l'espressione facciale di volti mai visti prima.

Normalmente, quando lavori sul tracciamento facciale, queste espressioni vengono etichettate dagli esseri umani e il metodo più semplice è utilizzare punti di riferimento, ad esempio posizionando punti su un'immagine per contrassegnare le posizioni dei pixel delle caratteristiche facciali come gli angoli degli occhi. 

Ma i pesi FACS sono diversi perché non puoi guardare un’immagine e dire: “La bocca è aperta 0.9 contro 0.5”. Per risolvere questo problema, stiamo utilizzando dati sintetici per generare direttamente pesi FACS costituiti da modelli 3D renderizzati con pose FACS da diverse angolazioni e condizioni di illuminazione.

Sfortunatamente, poiché il modello deve essere generalizzato ai volti reali, non possiamo allenarci esclusivamente su dati sintetici. Quindi pre-addestriamo il modello su un'attività di previsione di punti di riferimento utilizzando una combinazione di dati reali e sintetici, consentendo al modello di apprendere l'attività di previsione FACS utilizzando dati puramente sintetici.

Vogliamo che il rilevamento dei volti funzioni per tutti, ma alcuni dispositivi sono più potenti di altri. Ciò significava che dovevamo costruire un sistema in grado di adattarsi dinamicamente alla potenza di elaborazione di qualsiasi dispositivo. Abbiamo ottenuto questo risultato suddividendo il nostro modello in una fase di previsione FACS rapida e approssimativa chiamata BaseNet e una fase di perfezionamento FACS più accurata chiamata HiFiNet. Durante l'esecuzione, il sistema misura le sue prestazioni e, in condizioni ottimali, eseguiamo entrambe le fasi del modello. Ma se viene rilevato un rallentamento (ad esempio a causa di un dispositivo di fascia bassa), il sistema esegue solo la prima fase.

Quali sono alcune delle cose fondamentali che hai imparato svolgendo questo lavoro tecnico?

Uno è che far funzionare una funzionalità è una parte così piccola di ciò che effettivamente serve per rilasciare qualcosa con successo. Gran parte del lavoro è nel processo di ingegneria e test unitari. Dobbiamo assicurarci di disporre di buoni metodi per determinare se disponiamo di una buona pipeline di dati. E dobbiamo chiederci: “Ehi, questo nuovo modello è davvero migliore di quello vecchio?”

Prima ancora di iniziare l'ingegneria di base, tutte le pipeline che mettiamo in atto per monitorare gli esperimenti, garantire che il nostro set di dati rappresenti la diversità dei nostri utenti, valutare i risultati, implementare e ottenere feedback su questi nuovi risultati contribuiscono a rendere il modello sufficiente. Ma questa è una parte del processo di cui non si parla tanto, anche se è così critica. 

A quale valore Roblox si allinea maggiormente il tuo team?

Comprendere la fase di un progetto è fondamentale, quindi durante l'innovazione, avere una visione a lungo termine è molto importante, soprattutto nella ricerca quando si cerca di risolvere problemi importanti. Ma il rispetto della comunità è fondamentale anche quando si identificano i problemi su cui vale la pena innovare perché vogliamo lavorare sui problemi che hanno il maggior valore per la nostra comunità più ampia. Ad esempio, abbiamo scelto specificamente di lavorare sul “tracciamento dei volti per tutti” anziché solo sul “tracciamento dei volti”. Quando raggiungi il 90% di costruzione di qualcosa, la transizione di un prototipo in una caratteristica funzionale dipende dall'esecuzione e dall'adattamento alla fase del progetto.

Cosa ti entusiasma di più della direzione in cui sono diretti Roblox e il tuo team?

Ho sempre gravitato verso il lavoro su strumenti che aiutano le persone a essere creative. Creare qualcosa è speciale perché ti ritrovi con qualcosa che è unicamente tuo. Ho lavorato sugli effetti visivi e su vari strumenti di fotoritocco, utilizzando approfondimenti matematici, scientifici, di ricerca e ingegneristici per consentire alle persone di fare cose davvero interessanti. Ora, in Roblox, posso portarlo a un livello completamente nuovo. Roblox è una piattaforma di creatività, non solo uno strumento. E la scala su cui riusciamo a costruire strumenti che abilitano la creatività è molto più grande di qualsiasi cosa su cui abbia lavorato prima, il che è incredibilmente entusiasmante.

Timestamp:

Di più da Roblox