Inside the Tech - Avatar-gezichtsuitdrukkingen oplossen - Roblox Blog

Inside the Tech – Oplossen van avatar-gezichtsuitdrukkingen – Roblox Blog

Bronknooppunt: 3039939

Inside the Tech is een blogreeks die bij onze blogserie hoort Tech Talks-podcast. In aflevering 20 van de podcast, Avatars & Self-Expression, sprak Roblox CEO David Baszucki met Senior Director of Engineering Kiran Bhat, Senior Director of Product Mahesh Ramasubramanian en Principal Product Manager Effie Goenawan, over de toekomst van meeslepende communicatie via avatars en de technische uitdagingen die we oplossen om dit mogelijk te maken. In deze editie van Inside the Tech spraken we met Engineering Manager Ian Sachs om meer te leren over een van die technische uitdagingen – het mogelijk maken van gezichtsuitdrukkingen voor onze avatars – en hoe het werk van het Avatar Creation-team (onder de Engine-groep) gebruikers helpt zichzelf te uiten op Roblox.

Wat zijn de grootste technische uitdagingen waarmee uw team wordt geconfronteerd?

Als we nadenken over hoe een avatar iemand op Roblox vertegenwoordigt, overwegen we doorgaans twee dingen: hoe deze zich gedraagt ​​en hoe hij eruit ziet. Een belangrijk aandachtspunt voor mijn team is dus het mogelijk maken van avatars om de uitdrukkingen van een persoon te weerspiegelen. Wanneer iemand bijvoorbeeld lacht, lacht zijn of haar avatar synchroon met hem/haar. 

Een van de moeilijke dingen bij het volgen van gezichtsuitdrukkingen is het afstemmen van de efficiëntie van ons model, zodat we deze uitdrukkingen in realtime rechtstreeks op het apparaat van de persoon kunnen vastleggen. We willen deze functie voor zoveel mogelijk mensen op Roblox toegankelijk maken, en we moeten een groot aantal apparaten ondersteunen. De hoeveelheid rekenkracht die iemands apparaat aankan, is daarbij een cruciale factor. We willen dat iedereen zich kan uiten, niet alleen mensen met krachtige apparaten. Daarom zetten we een van onze allereerste deep learning-modellen in om dit mogelijk te maken. 

De tweede belangrijke technische uitdaging die we aanpakken is het vereenvoudigen van het proces dat makers gebruiken om dynamische avatars te ontwikkelen die mensen kunnen personaliseren. Het maken van zulke avatars is behoorlijk ingewikkeld omdat je het hoofd moet modelleren en als je wilt dat het animeert, moet je heel specifieke dingen doen om het model te manipuleren, zoals het plaatsen van gewrichten en gewichten voor lineaire blend-villen. We willen dit proces gemakkelijker maken voor makers, dus ontwikkelen we technologie om het te vereenvoudigen. Ze zouden zich alleen moeten concentreren op het bouwen van het statische model. Als ze dat doen, kunnen we het automatisch optuigen en opsluiten. Dan zouden gezichtsherkenning en gelaagde kleding meteen moeten werken. 

Wat zijn enkele van de innovatieve benaderingen en oplossingen die we gebruiken om deze technische uitdagingen aan te pakken?

We hebben een aantal belangrijke dingen gedaan om ervoor te zorgen dat we de juiste informatie over gezichtsuitdrukkingen krijgen. Dat begint met het gebruik van industriestandaard FACS (Facial Animation Control System). Deze zijn de sleutel tot alles, omdat we ze gebruiken om de gezichtsuitdrukkingen van een avatar te bepalen: hoe breed de mond is, welke ogen open zijn en hoeveel, enzovoort. We kunnen ongeveer 50 verschillende FACS-bedieningselementen gebruiken om een ​​gewenste gezichtsuitdrukking te beschrijven. 

Wanneer u een machine learning-algoritme bouwt om gezichtsuitdrukkingen op basis van afbeeldingen of video te schatten, traint u een model door het voorbeeldafbeeldingen te laten zien met bekende grondwaarheidsuitdrukkingen (beschreven met FACS). Door het model veel verschillende afbeeldingen met verschillende uitdrukkingen te laten zien, leert het model de gezichtsuitdrukking van voorheen onzichtbare gezichten in te schatten.

Normaal gesproken worden deze uitdrukkingen, wanneer u aan gezichtsherkenning werkt, door mensen gelabeld, en de eenvoudigste methode is het gebruik van oriëntatiepunten, bijvoorbeeld door punten op een afbeelding te plaatsen om de pixellocaties van gezichtskenmerken zoals de hoeken van de ogen te markeren. 

Maar FACS-gewichten zijn anders omdat je niet naar een foto kunt kijken en kunt zeggen: "De mond is open 0.9 versus 0.5." Om dit op te lossen, gebruiken we synthetische gegevens om rechtstreeks FACS-gewichten te genereren die bestaan ​​uit 3D-modellen weergegeven met FACS-poses vanuit verschillende hoeken en lichtomstandigheden.

Omdat het model moet generaliseren naar echte gezichten, kunnen we helaas niet uitsluitend trainen op synthetische gegevens. Daarom trainen we het model vooraf op een historische voorspellingstaak met behulp van een combinatie van echte en synthetische gegevens, waardoor het model de FACS-voorspellingstaak kan leren met behulp van puur synthetische gegevens.

We willen dat face-tracking voor iedereen werkt, maar sommige apparaten zijn krachtiger dan andere. Dit betekent dat we een systeem moesten bouwen dat zichzelf dynamisch kon aanpassen aan de verwerkingskracht van elk apparaat. We hebben dit bereikt door ons model op te splitsen in een snelle geschatte FACS-voorspellingsfase genaamd BaseNet en een nauwkeurigere FACS-verfijningsfase genaamd HiFiNet. Tijdens runtime meet het systeem zijn prestaties en onder optimale omstandigheden voeren we beide modelfasen uit. Maar als er een vertraging wordt gedetecteerd (bijvoorbeeld vanwege een apparaat uit het lagere segment), voert het systeem alleen de eerste fase uit.

Wat zijn enkele van de belangrijkste dingen die je hebt geleerd tijdens dit technische werk?

Eén daarvan is dat het werkend krijgen van een functie maar een klein onderdeel is van wat er feitelijk nodig is om iets met succes uit te brengen. Een hoop werk zit in het engineering- en unit-testproces. We moeten ervoor zorgen dat we goede manieren hebben om te bepalen of we over een goede datapijplijn beschikken. En we moeten ons afvragen: "Hé, is dit nieuwe model eigenlijk beter dan het oude?"

Voordat we zelfs maar met de kernengineering beginnen, zorgen alle pijplijnen die we hebben opgezet voor het volgen van experimenten, ervoor zorgen dat onze dataset de diversiteit van onze gebruikers vertegenwoordigt, het evalueren van resultaten, en het inzetten en krijgen van feedback op die nieuwe resultaten, ervoor dat het model voldoende is. Maar dat is een onderdeel van het proces waar niet zoveel over gesproken wordt, ook al is het zo cruciaal. 

Met welke Roblox-waarde sluit uw team het meest aan?

Het begrijpen van de fase van een project is van cruciaal belang, dus tijdens innovatie is het van groot belang om naar de lange termijn te kijken, vooral bij onderzoek wanneer je belangrijke problemen probeert op te lossen. Maar het respecteren van de gemeenschap is ook van cruciaal belang bij het identificeren van de problemen die de moeite waard zijn om te innoveren, omdat we willen werken aan de problemen die de meeste waarde hebben voor onze bredere gemeenschap. We hebben er bijvoorbeeld specifiek voor gekozen om te werken aan ‘face-tracking voor iedereen’ in plaats van alleen aan ‘face-tracking’. Als je de grens van 90 procent hebt bereikt waarin je iets hebt gebouwd, hangt de overgang van een prototype naar een functioneel kenmerk af van de uitvoering en aanpassing aan de fase van het project.

Wat boeit je het meest aan waar Roblox en je team naartoe gaan?

Ik heb altijd de neiging gehad om te werken aan hulpmiddelen die mensen helpen creatief te zijn. Iets creëren is bijzonder omdat je uiteindelijk iets krijgt dat uniek is voor jou. Ik heb gewerkt aan visuele effecten en aan verschillende fotobewerkingstools, waarbij ik wiskundige, wetenschappelijke, onderzoeks- en technische inzichten heb gebruikt om mensen in staat te stellen echt interessante dingen te doen. Nu, bij Roblox, mag ik dat naar een heel nieuw niveau tillen. Roblox is een creativiteitsplatform, niet alleen een hulpmiddel. En de schaal waarop we tools kunnen bouwen die creativiteit mogelijk maken, is veel groter dan alles waar ik eerder aan heb gewerkt, wat ongelooflijk spannend is.

Tijdstempel:

Meer van roblox