Inside the Tech - Rezolvarea expresiilor faciale avatarului - Blog Roblox

Inside the Tech – Rezolvarea expresiilor faciale avatarului – Blog Roblox

Nodul sursă: 3039939

Inside the Tech este o serie de bloguri care ne însoțește Podcast Tech Talks. În episodul 20 al podcastului, Avatars & Self-Expression, CEO-ul Roblox, David Baszucki, a vorbit cu directorul senior de inginerie Kiran Bhat, directorul senior de produs Mahesh Ramasubramanian și managerul principal de produs Effie Goenawan, despre viitorul comunicării imersive prin avatare și provocările tehnice pe care le rezolvăm pentru a-l activa. În această ediție a revistei Inside the Tech, am discutat cu managerul de inginerie, Ian Sachs, pentru a afla mai multe despre una dintre aceste provocări tehnice — permiterea expresiilor faciale pentru avatarurile noastre — și despre modul în care munca echipei Creare avatar (în cadrul grupului Engine) ajută utilizatorii să se exprime. pe Roblox.

Care sunt cele mai mari provocări tehnice pe care le asumă echipa ta?

Când ne gândim la modul în care un avatar reprezintă pe cineva pe Roblox, luăm în considerare de obicei două lucruri: cum se comportă și cum arată. Deci, un obiectiv major pentru echipa mea este să permită avatarurilor să oglindească expresiile unei persoane. De exemplu, când cineva zâmbește, avatarul său zâmbește sincronizat cu el. 

Unul dintre lucrurile dificile despre urmărirea expresiilor faciale este reglarea eficienței modelului nostru, astfel încât să putem captura aceste expresii direct pe dispozitivul persoanei în timp real. Ne angajăm să facem această funcție accesibilă cât mai multor persoane pe Roblox și trebuie să acceptăm o gamă largă de dispozitive. Cantitatea de putere de calcul pe care o poate gestiona dispozitivul cuiva este un factor vital în acest sens. Ne dorim ca toată lumea să se poată exprima, nu doar oamenii cu dispozitive puternice. Prin urmare, implementăm unul dintre primele noastre modele de învățare profundă pentru a face acest lucru posibil. 

A doua provocare tehnică cheie pe care o abordăm este simplificarea procesului pe care creatorii îl folosesc pentru a dezvolta avatare dinamice pe care oamenii le pot personaliza. Crearea de astfel de avataruri este destul de complicată pentru că trebuie să modelezi capul și, dacă vrei să se anime, trebuie să faci lucruri foarte specifice pentru a manipula modelul, cum ar fi plasarea îmbinărilor și greutăților pentru skinning liniar. Dorim să facem acest proces mai ușor pentru creatori, așa că dezvoltăm tehnologie pentru a-l simplifica. Ar trebui să se concentreze doar pe construirea modelului static. Când o fac, îl putem pune automat în cușcă. Apoi, urmărirea feței și îmbrăcămintea stratificată ar trebui să funcționeze imediat. 

Care sunt unele dintre abordările și soluțiile inovatoare pe care le folosim pentru a face față acestor provocări tehnice?

Am făcut câteva lucruri importante pentru a ne asigura că obținem informațiile potrivite pentru expresiile faciale. Asta începe cu utilizarea standardului FACS (Facial Animation Control System). Acestea sunt cheia tuturor, deoarece sunt ceea ce folosim pentru a determina expresiile faciale ale unui avatar - cât de largă este gura, ce ochi deschiși și cât de mult și așa mai departe. Putem folosi aproximativ 50 de comenzi FACS diferite pentru a descrie o expresie facială dorită. 

Când construiți un algoritm de învățare automată pentru a estima expresiile faciale din imagini sau videoclipuri, antrenați un model arătându-i imagini exemplu cu expresii de adevăr cunoscute (descrise cu FACS). Arătând modelului multe imagini diferite cu expresii diferite, modelul învață să estimeze expresia facială a fețelor nevăzute anterior.

În mod normal, atunci când lucrați la urmărirea feței, aceste expresii sunt etichetate de oameni, iar cea mai ușoară metodă este utilizarea reperelor - de exemplu, plasarea de puncte pe o imagine pentru a marca locațiile pixelilor trăsăturilor faciale, cum ar fi colțurile ochilor. 

Dar greutățile FACS sunt diferite, deoarece nu poți să te uiți la o imagine și să spui: „Gura este deschisă 0.9 față de 0.5”. Pentru a rezolva acest lucru, folosim date sintetice pentru a genera direct greutăți FACS care constau în modele 3D redate cu ipostaze FACS din diferite unghiuri și condiții de iluminare.

Din păcate, deoarece modelul trebuie să se generalizeze la fețele reale, nu ne putem antrena numai pe date sintetice. Așadar, pre-antrenăm modelul pe o sarcină de predicție reper folosind o combinație de date reale și sintetice, permițând modelului să învețe sarcina de predicție FACS folosind date pur sintetice.

Dorim ca urmărirea feței să funcționeze pentru toată lumea, dar unele dispozitive sunt mai puternice decât altele. Aceasta înseamnă că trebuia să construim un sistem capabil să se adapteze dinamic la puterea de procesare a oricărui dispozitiv. Am realizat acest lucru împărțind modelul nostru într-o fază de predicție FACS aproximativă rapidă numită BaseNet și o fază de rafinare FACS mai precisă numită HiFiNet. În timpul rulării, sistemul își măsoară performanța și, în condiții optime, rulăm ambele faze ale modelului. Dar dacă se detectează o încetinire (de exemplu, din cauza unui dispozitiv de gamă inferioară), sistemul rulează doar prima fază.

Care sunt câteva dintre lucrurile cheie pe care le-ați învățat din realizarea acestei lucrări tehnice?

Unul este că a face o funcție să funcționeze este o parte atât de mică din ceea ce este nevoie de fapt pentru a lansa ceva cu succes. O tonă de lucru este în procesul de inginerie și de testare unitară. Trebuie să ne asigurăm că avem modalități bune de a determina dacă avem o cantitate bună de date. Și trebuie să ne întrebăm: „Hei, acest nou model este într-adevăr mai bun decât cel vechi?”

Înainte chiar de a începe ingineria de bază, toate conductele pe care le-am pus în aplicare pentru urmărirea experimentelor, asigurându-ne că setul nostru de date reprezintă diversitatea utilizatorilor noștri, evaluând rezultatele și implementând și obținerea de feedback cu privire la aceste rezultate noi, sunt necesare pentru a face modelul suficient. Dar aceasta este o parte a procesului despre care nu se vorbește atât de mult, deși este atât de critic. 

Cu ce ​​valoare Roblox se aliniază cel mai mult echipa ta?

Înțelegerea fazei unui proiect este esențială, așa că, în timpul inovației, perspectiva de lungă contează foarte mult, mai ales în cercetare când încercați să rezolvați probleme importante. Dar respectarea comunității este, de asemenea, crucială atunci când identificați problemele pe care merită să inovăm, deoarece dorim să lucrăm la problemele cu cea mai mare valoare pentru comunitatea noastră mai largă. De exemplu, am ales în mod special să lucrăm la „urmărirea feței pentru toți” și nu doar la „urmărirea feței”. Pe măsură ce atingeți pragul de 90 la sută de a construi ceva, trecerea unui prototip într-o caracteristică funcțională depinde de execuție și de adaptare la stadiul proiectului.

Ce te entuziasmează cel mai mult în legătură cu locul în care se îndreaptă Roblox și echipa ta?

Întotdeauna m-am gândit să lucrez la instrumente care îi ajută pe oameni să fie creativi. A crea ceva este special pentru că ajungi cu ceva care este unic al tău. Am lucrat în efecte vizuale și la diferite instrumente de editare a fotografiilor, folosind matematică, știință, cercetare și inginerie pentru a oferi oamenilor puterea să facă lucruri cu adevărat interesante. Acum, la Roblox, ajung să duc asta la un nivel cu totul nou. Roblox este o platformă de creativitate, nu doar un instrument. Iar scara la care ajungem să construim instrumente care permit creativitatea este mult mai mare decât orice am lucrat înainte, ceea ce este incredibil de interesant.

Timestamp-ul:

Mai mult de la Roblox