Inside the Tech - Lösa för ansiktsuttryck i avatarer - Roblox-bloggen

Inside the Tech – Lösa för ansiktsuttryck i avatarer – Roblox-blogg

Källnod: 3039939

Inside the Tech är en bloggserie som följer med vår Tech Talks Podcast. I avsnitt 20 av podcasten, Avatars & Self-Expression, pratade Roblox VD David Baszucki med Senior Director of Engineering Kiran Bhat, Senior Director of Product Mahesh Ramasubramanian, och Principal Product Manager Effie Goenawan, om framtiden för uppslukande kommunikation genom avatarer och tekniska utmaningar vi löser för att möjliggöra det. I den här utgåvan av Inside the Tech pratade vi med teknikchefen Ian Sachs för att lära oss mer om en av dessa tekniska utmaningar – att möjliggöra ansiktsuttryck för våra avatarer – och hur teamet för Avatar Creation (under Engine-gruppen) hjälper användare att uttrycka sig själva på Roblox.

Vilka är de största tekniska utmaningarna som ditt team antar?

När vi tänker på hur en avatar representerar någon på Roblox, överväger vi vanligtvis två saker: hur den beter sig och hur den ser ut. Så ett stort fokus för mitt team är att göra det möjligt för avatarer att spegla en persons uttryck. Till exempel, när någon ler, ler deras avatar synk med dem. 

En av de svåra sakerna med att spåra ansiktsuttryck är att ställa in effektiviteten hos vår modell så att vi kan fånga dessa uttryck direkt på personens enhet i realtid. Vi är fast beslutna att göra den här funktionen tillgänglig för så många personer på Roblox som möjligt, och vi behöver stödja ett stort antal enheter. Mängden datorkraft som någons enhet kan hantera är en viktig faktor i det. Vi vill att alla ska kunna uttrycka sig, inte bara människor med kraftfulla enheter. Så vi implementerar en av våra första modeller för djupinlärning någonsin för att göra detta möjligt. 

Den andra viktiga tekniska utmaningen vi tar oss an är att förenkla processen som skapare använder för att utveckla dynamiska avatarer som människor kan anpassa. Att skapa sådana avatarer är ganska komplicerat eftersom du måste modellera huvudet och om du vill att det ska animera måste du göra mycket specifika saker för att rigga modellen, som att placera fogar och vikter för linjär blandning av skinn. Vi vill göra den här processen enklare för kreatörer, så vi utvecklar teknik för att förenkla den. De ska bara behöva fokusera på att bygga den statiska modellen. När de gör det kan vi automatiskt rigga och bura det. Sedan bör ansiktsspårning och lagerkläder fungera direkt. 

Vilka är några av de innovativa tillvägagångssätt och lösningar vi använder för att tackla dessa tekniska utmaningar?

Vi har gjort ett par viktiga saker för att säkerställa att vi får rätt information för ansiktsuttryck. Det börjar med att använda industristandarden FACS (Facial Animation Control System). Dessa är nyckeln till allt eftersom de är vad vi använder för att driva en avatars ansiktsuttryck – hur bred munnen är, vilka ögon öppna och hur mycket, och så vidare. Vi kan använda ett 50-tal olika FACS-kontroller för att beskriva ett önskat ansiktsuttryck. 

När du bygger en maskininlärningsalgoritm för att uppskatta ansiktsuttryck från bilder eller video, tränar du en modell genom att visa den exempelbilder med kända grundsanningsuttryck (beskrivs med FACS). Genom att visa modellen många olika bilder med olika uttryck, lär sig modellen att uppskatta ansiktsuttrycket hos tidigare osynliga ansikten.

Normalt när du arbetar med ansiktsspårning märks dessa uttryck av människor, och den enklaste metoden är att använda landmärken – till exempel att placera prickar på en bild för att markera pixelplatserna för ansiktsdrag som ögonvrån. 

Men FACS vikter är olika eftersom du inte kan titta på en bild och säga, "Munnen är öppen 0.9 mot 0.5." För att lösa detta använder vi syntetiska data för att generera FACS-vikter direkt som består av 3D-modeller renderade med FACS-poser från olika vinklar och ljusförhållanden.

Tyvärr, eftersom modellen måste generaliseras till verkliga ansikten, kan vi inte enbart träna på syntetisk data. Så vi förtränar modellen på en landmärke förutsägelseuppgift med en kombination av verkliga och syntetiska data, vilket gör att modellen kan lära sig FACS förutsägelseuppgift med hjälp av rent syntetisk data.

Vi vill att ansiktsspårning ska fungera för alla, men vissa enheter är kraftfullare än andra. Det betyder att vi behövde bygga ett system som dynamiskt kan anpassa sig till processorkraften hos vilken enhet som helst. Vi åstadkom detta genom att dela upp vår modell i en snabb ungefärlig FACS-förutsägelsefas som kallas BaseNet och en mer exakt FACS-förfiningsfas som kallas HiFiNet. Under körning mäter systemet dess prestanda och under optimala förhållanden kör vi båda modellfaserna. Men om en avmattning upptäcks (till exempel på grund av en lägre enhet) kör systemet endast den första fasen.

Vilka är några av de viktigaste sakerna som du har lärt dig av det här tekniska arbetet?

En är att att få en funktion att fungera är en så liten del av vad som faktiskt krävs för att släppa något framgångsrikt. Mycket av arbetet ligger i teknik- och enhetstestningsprocessen. Vi måste se till att vi har bra sätt att avgöra om vi har en bra pipeline av data. Och vi måste fråga oss själva, "Hej, är den här nya modellen faktiskt bättre än den gamla?"

Innan vi ens påbörjar kärntekniken går alla pipelines som vi sätter på plats för att spåra experiment, för att säkerställa att vår datauppsättning representerar mångfalden hos våra användare, utvärdera resultat och distribuera och få feedback om de nya resultaten till att göra modellen tillräcklig. Men det är en del av processen som det inte pratas så mycket om, även om det är så kritiskt. 

Vilket Roblox-värde följer ditt team mest?

Att förstå fasen av ett projekt är nyckeln, så under innovation spelar det långa perspektivet stor roll, särskilt inom forskning när du försöker lösa viktiga problem. Men att respektera samhället är också avgörande när du identifierar de problem som är värda att förnya sig på eftersom vi vill arbeta med problemen med störst värde för vår bredare gemenskap. Till exempel valde vi specifikt att arbeta med "ansiktsspårning för alla" snarare än bara "ansiktsspårning". När du når 90-procentstrecket för att bygga något, omvandlas en prototyp till en funktionell funktion beroende på utförande och anpassning till projektets skede.

Vad upphetsar dig mest med vart Roblox och ditt team är på väg?

Jag har alltid arbetat med verktyg som hjälper människor att vara kreativa. Att skapa något är speciellt eftersom du får något som är unikt för dig. Jag har arbetat med visuella effekter och med olika fotoredigeringsverktyg, med hjälp av matematik, naturvetenskap, forskning och tekniska insikter för att ge människor möjlighet att göra riktigt intressanta saker. Nu, på Roblox, får jag ta det till en helt ny nivå. Roblox är en kreativitetsplattform, inte bara ett verktyg. Och skalan på vilken vi får bygga verktyg som möjliggör kreativitet är mycket större än något jag har arbetat med tidigare, vilket är otroligt spännande.

Tidsstämpel:

Mer från Roblox