Spel

Dentro la tecnologia: risoluzione delle espressioni facciali degli avatar

Inside the Tech è una serie di blog che accompagna il nostro Podcast di colloqui tecnici. Nell’episodio 20 del podcast, Avatars and Self-Expression, il CEO di Roblox David Baszucki ha parlato con il Senior Director of Engineering Kiran Bhat, il Senior Product Manager Mahesh Ramasubramanian e il Senior Product Manager Effie Goenawan del futuro della comunicazione immersiva attraverso gli avatar e la tecnica sfide che stiamo risolvendo per consentirlo. In questa edizione di Inside the Tech, abbiamo parlato con il responsabile dell’ingegneria Ian Sachs per saperne di più su una di queste sfide tecniche (abilitare le espressioni facciali per i nostri avatar) e su come il lavoro del team di creazione avatar (sotto il gruppo Motore) sta aiutando gli utenti esprimere loro stessi. su Roblox.

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

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

Una delle cose difficili nel tracciare le espressioni facciali è regolare 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 un’ampia 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. Ecco perché stiamo 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 articolazioni e pesi per una combinazione lineare di 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 manipolarlo e ingabbiarlo automaticamente. Quindi il tracciamento del volto e la stratificazione dovrebbero funzionare dall’inizio.

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 determinare le espressioni facciali di un avatar: quanto è larga la bocca, quali occhi si aprono e quanto, ecc. 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 note (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.

In genere, quando si lavora 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 del viso, 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, utilizziamo 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. Pertanto, 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. Raggiungiamo questo obiettivo suddividendo il nostro modello in una fase di previsione FACS rapida e approssimativa chiamata BaseNet e una fase di perfezionamento FACS più precisa 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 (dovuto ad esempio ad 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?

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

Ancor prima di iniziare l’ingegneria di base, tutte le pipeline che mettiamo in atto per tenere traccia degli 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 vengono utilizzate per rendere il modello sufficiente. . Ma questa è una parte del processo di cui non si parla molto, 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 più valore per la nostra comunità nel suo insieme. Ad esempio, abbiamo scelto specificamente di lavorare sul “tracciamento dei volti per tutti” anziché solo sul “tracciamento dei volti”. Quando si raggiunge il 90% della costruzione di qualcosa, il passaggio da un prototipo a 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?

Mi è sempre piaciuto lavorare su strumenti che aiutino le persone a essere creative. Creare qualcosa è speciale perché ti ritroverai con qualcosa che è unicamente tuo. Ho lavorato su effetti visivi e vari strumenti di fotoritocco, utilizzando conoscenze matematiche, scientifiche, di ricerca e ingegneristiche 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 possiamo creare strumenti che abilitano la creatività è molto più ampia di qualsiasi cosa su cui abbia lavorato prima, il che è incredibilmente entusiasmante.