Animație facială în timp real pentru avatare PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Animație facială în timp real pentru avatare

Expresia facială este un pas esențial în marșul Roblox către transformarea metaversului într-o parte a vieții de zi cu zi a oamenilor prin interacțiuni naturale și credibile cu avatarul. Cu toate acestea, animarea fețelor personajelor virtuale 3D în timp real este o provocare tehnică enormă. În ciuda numeroaselor descoperiri în cercetare, există exemple comerciale limitate de aplicații de animație facială în timp real. Acest lucru este deosebit de provocator la Roblox, unde acceptăm o gamă amețitoare de dispozitive de utilizator, condiții din lumea reală și cazuri de utilizare extrem de creative de la dezvoltatorii noștri.

Animație facială în timp real pentru avatare PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Animație facială în timp real pentru avatare PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

În această postare, vom descrie un cadru de învățare profundă pentru regresarea controalelor animației faciale din video, care abordează aceste provocări și ne deschide către o serie de oportunități viitoare. Cadrul descris în această postare de blog a fost, de asemenea, prezentat ca a vorbi at SIGGRAPH 2021.

Animație Facială

Există diverse opțiuni pentru a controla și a anima un dispozitiv facial 3D. Cel pe care îl folosim se numește Facial Action Coding System sau FACS, care definește un set de comenzi (bazat pe plasarea mușchilor faciali) pentru deformarea rețelei faciale 3D. În ciuda faptului că au peste 40 de ani, FACS sunt încă standardul de facto, deoarece controalele FACS sunt intuitive și ușor de transferat între platforme. Un exemplu de instalație FACS care este exercitată poate fi văzut mai jos.

Animație facială în timp real pentru avatare PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Metodă

Ideea este ca metoda noastră bazată pe învățarea profundă să preia un videoclip ca intrare și să scoată un set de FACS pentru fiecare cadru. Pentru a realiza acest lucru, folosim o arhitectură în două etape: detectarea feței și regresia FACS.

Animație facială în timp real pentru avatare PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Detectare facială

Pentru a obține cele mai bune performanțe, implementăm o variantă rapidă a algoritmului relativ bine cunoscut de detectare a feței MTCNN. Algoritmul original MTCNN este destul de precis și rapid, dar nu suficient de rapid pentru a suporta detectarea feței în timp real pe multe dintre dispozitivele utilizate de utilizatorii noștri. Astfel, pentru a rezolva acest lucru, am ajustat algoritmul pentru cazul nostru de utilizare specific, în care odată ce o față este detectată, implementarea noastră MTCNN rulează doar etapa finală O-Net în cadrele succesive, rezultând o accelerare medie de 10 ori. De asemenea, folosim reperele faciale (locația ochilor, a nasului și a colțurilor gurii) prezise de MTCNN pentru alinierea casetei de delimitare a feței înainte de etapa de regresie ulterioară. Această aliniere permite o tăiere strânsă a imaginilor de intrare, reducând calculul rețelei de regresie FACS.

Animație facială în timp real pentru avatare PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Regresia FACS 

Arhitectura noastră de regresie FACS utilizează o configurație multitask care antrenează în comun repere și greutăți FACS folosind o coloană vertebrală partajată (cunoscută sub numele de codificator) ca extractor de caracteristici.

Această configurație ne permite să creștem greutățile FACS învățate din secvențele de animație sintetice cu imagini reale care surprind subtilitățile expresiei faciale. Subrețeaua de regresie FACS care este antrenată împreună cu reperele utilizate de regresor circumvoluții cauzale; aceste circumvoluții operează pe caracteristici de-a lungul timpului, spre deosebire de circumvoluțiile care operează numai pe caracteristici spațiale, așa cum se găsește în codificator. Acest lucru permite modelului să învețe aspectele temporale ale animațiilor faciale și îl face mai puțin sensibil la inconsecvențe, cum ar fi trepidația.

Animație facială în timp real pentru avatare PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Pregătire

Inițial, antrenăm modelul doar pentru regresia reper, folosind atât imagini reale, cât și imagini sintetice. După un anumit număr de pași începem să adăugăm secvențe sintetice pentru a învăța ponderile pentru subrețeaua de regresie FACS temporală. Secvențele de animație sintetică au fost create de echipa noastră interdisciplinară de artiști și ingineri. Artistul nostru a creat o platformă normalizată utilizată pentru toate identitățile diferite (rețele faciale), care a fost exercitată și redată automat folosind fișiere de animație care conțineau greutăți FACS. Aceste fișiere de animație au fost generate utilizând algoritmi clasici de vedere pe computer care rulează pe secvențe video de calistenic facial și suplimentate cu secvențe animate manual pentru expresii faciale extreme care lipseau din videoclipurile calistenice. 

Pierderi

Pentru a ne antrena rețeaua de învățare profundă, combinăm liniar mai mulți termeni de pierdere diferiți pentru a regresa reperele și ponderile FACS: 

  • Pierderi de poziție. Pentru repere, RMSE-ul pozițiilor regresate (Llmks ), iar pentru ponderile FACS, MSE (Lfacs ). 
  • Pierderi temporare. Pentru ponderile FACS, reducem jitterul folosind pierderi temporale față de secvențele de animație sintetice. O pierdere de viteză (Lv ) inspirat de [Cudeiro et al. 2019] este MSE între vitezele țintă și cele prezise. Încurajează netezimea generală a expresiilor dinamice. În plus, un termen de regularizare a accelerației (LACC ) este adăugat pentru a reduce fluctuația greutăților FACS (greutatea sa menținută la un nivel scăzut pentru a păstra capacitatea de răspuns). 
  • Pierderea consistenței. Utilizăm imagini reale fără adnotări într-o pierdere de consistență nesupravegheată (Lc ), similar cu [Honari și colab. 2018]. Acest lucru încurajează predicțiile de reper să fie echivariante în diferite transformări ale imaginii, îmbunătățind consistența locației reperului între cadre, fără a necesita etichete de reper pentru un subset de imagini de antrenament.

Performanţă

Pentru a îmbunătăți performanța codificatorului fără a reduce acuratețea sau a crește fluctuația, am folosit selectiv convoluții necăptușite pentru a reduce dimensiunea hărții caracteristicilor. Acest lucru ne-a oferit mai mult control asupra dimensiunilor hărții caracteristicilor decât ar avea convoluțiile cu pas. Pentru a menține reziduul, tăiem harta caracteristicilor înainte de a o adăuga la rezultatul unei convoluții necăptușite. În plus, am setat adâncimea hărților de caracteristici la un multiplu de 8, pentru o utilizare eficientă a memoriei cu seturi de instrucțiuni vectoriale, cum ar fi AVX și Neon FP16, și rezultând o creștere a performanței de 1.5 ori.

Modelul nostru final are 1.1 milioane de parametri și necesită 28.1 milioane de multipli-acumulări pentru a fi executat. Pentru referință, vanilie Mobilenet V2 (pe care se bazează arhitectura noastră) necesită 300 de milioane de multipli-acumulări pentru a fi executate. Noi folosim NCNN cadrul pentru inferența modelului pe dispozitiv și timpul de execuție cu un singur fir (inclusiv detectarea feței) pentru un cadru de videoclip sunt enumerate în tabelul de mai jos. Vă rugăm să rețineți că un timp de execuție de 16 ms ar suporta procesarea a 60 de cadre pe secundă (FPS). 

Animație facială în timp real pentru avatare PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Ce urmeaza

Conducta noastră de date sintetice ne-a permis să îmbunătățim iterativ expresivitatea și robustețea modelului antrenat. Am adăugat secvențe sintetice pentru a îmbunătăți receptivitatea la expresiile ratate și, de asemenea, am echilibrat antrenamentul pentru diferite identități faciale. Obținem animație de înaltă calitate cu calcul minim datorită formulării temporale a arhitecturii noastre și a pierderilor, a unui coloan vertebral optimizat cu atenție și a adevărului de bază fără erori din datele sintetice. Filtrarea temporală efectuată în subrețeaua de ponderi FACS ne permite să reducem numărul și dimensiunea straturilor din coloana vertebrală fără a crește jitter-ul. Pierderea de consistență nesupravegheată ne permite să ne antrenăm cu un set mare de date reale, îmbunătățind generalizarea și robustețea modelului nostru. Continuăm să lucrăm la perfecționarea și îmbunătățirea modelelor noastre, pentru a obține rezultate și mai expresive, fără trepidații și robuste. 

Dacă sunteți interesat să lucrați la provocări similare în fruntea urmăririi faciale în timp real și a învățării automate, vă rugăm să consultați câteva dintre poziții deschise cu echipa noastra.

Mesaj Animație facială în timp real pentru avatare a apărut în primul rând pe Blog Roblox.

Timestamp-ul:

Mai mult de la Roblox