Az arckifejezés kritikus lépés a Roblox azon menetében, hogy a metaverzum az emberek mindennapi életének részévé váljon természetes és hihető avatar interakciókon keresztül. A virtuális 3D-s karakterarcok valós idejű animálása azonban óriási technikai kihívás. A számos kutatási áttörés ellenére korlátozott számú kereskedelmi példa létezik a valós idejű arcanimációs alkalmazásokra. Ez különösen nagy kihívást jelent a Robloxnál, ahol a felhasználói eszközök szédületes skáláját, a valós körülményeket és a fejlesztőink vadul kreatív használati eseteit támogatjuk.
Ebben a bejegyzésben egy mély tanulási keretet írunk le az arcanimáció vezérlőinek visszafejtéséhez a videóból, amely egyszerre kezeli ezeket a kihívásokat, és számos jövőbeli lehetőség előtt nyit meg bennünket. Az ebben a blogbejegyzésben leírt keretet a beszél at SIGGRAPH 2021.
Arc animáció
Különféle lehetőségek állnak rendelkezésre a 3D-s arc-berendezés vezérlésére és animálására. Az általunk használt Facial Action Coding System néven ill FACS, amely egy sor vezérlőt határoz meg (az arcizmok elhelyezése alapján) a 3D archáló deformálásához. Annak ellenére, hogy több mint 40 éves, a FACS még mindig a de facto szabvány, mivel a FACS vezérlők intuitívak és könnyen átvihetők a fúrótornyok között. Az alábbiakban látható egy példa egy FACS berendezésre.
Módszer
Az ötlet az, hogy a mély tanuláson alapuló módszerünk egy videót vesz be bemenetként és egy FACS-készletet ad ki minden egyes képkockához. Ennek eléréséhez kétlépcsős architektúrát használunk: arcfelismerést és FACS regressziót.
Arcfelismerés
A legjobb teljesítmény elérése érdekében a viszonylag jól ismert MTCNN arcfelismerő algoritmus egy gyors változatát valósítjuk meg. Az eredeti MTCNN algoritmus meglehetősen pontos és gyors, de nem elég gyors ahhoz, hogy támogassa a valós idejű arcfelismerést a felhasználóink által használt számos eszközön. Így ennek megoldására módosítottuk az algoritmust a sajátos használati esetünkhöz, ahol az arc észlelése után az MTCNN implementációnk csak az utolsó O-Net szakaszt futtatja az egymást követő keretekben, ami átlagosan 10-szeres gyorsulást eredményez. Az MTCNN által megjósolt arctereptárgyakat (a szemek, az orr és a szájzugok elhelyezkedése) is használjuk az arc határoló dobozának a következő regressziós szakasz előtti igazításához. Ez az igazítás lehetővé teszi a bemeneti képek szűk kivágását, csökkentve a FACS regressziós hálózat számítását.
FACS regresszió
A FACS regressziós architektúránk egy többfeladatos beállítást használ, amely a tereptárgyakat és a FACS-súlyokat egy megosztott gerinchálózat (más néven kódoló) segítségével funkciókivonóként tanítja.
Ez a beállítás lehetővé teszi, hogy a szintetikus animációs sorozatokból tanult FACS-súlyokat valódi képekkel bővítsük, amelyek megragadják az arckifejezés finomságait. A FACS regressziós alhálózat, amely a tereptárgyak regresszor használatával párhuzamosan képzésre kerül oksági konvolúciók; ezek a konvolúciók időbeli jellemzőkre működnek, szemben azokkal a konvolúciókkal, amelyek csak a térbeli jellemzőkre vonatkoznak, ahogyan az a kódolóban található. Ez lehetővé teszi a modell számára, hogy megtanulja az arcanimációk időbeli aspektusait, és kevésbé érzékeny az olyan következetlenségekre, mint például a jitter.
Képzések
Kezdetben a modellt csak mérföldkőnek számító regresszióra tanítjuk valós és szintetikus képek felhasználásával. Bizonyos számú lépés után elkezdjük szintetikus sorozatok hozzáadását, hogy megtanuljuk az időbeli FACS regressziós alhálózat súlyozását. A szintetikus animációs képsorokat interdiszciplináris művészekből és mérnökökből álló csapatunk készítette. Az összes különböző identitáshoz (archálóhoz) használt normalizált rig-et állított fel művészünk, amelyet FACS súlyokat tartalmazó animációs fájlok segítségével gyakorolt és készített automatikusan. Ezeket az animációs fájlokat klasszikus számítógépes látási algoritmusok segítségével hozták létre, amelyek az arc-torna videó szekvenciákon futnak, és kézzel animált szekvenciákkal egészítették ki az extrém arckifejezéseket, amelyek hiányoztak a kalisténikus videókból.
Veszteség
Mélytanulási hálózatunk képzése érdekében több különböző veszteségi feltételt lineárisan kombinálunk, hogy visszafejlesszük a tereptárgyakat és a FACS súlyokat:
- Pozíciós veszteségek. A tereptárgyak esetében a visszafejlődött pozíciók RMSE-je (Llmks ), a FACS súlyok esetében pedig az MSE (Larcok ).
- Időbeli veszteségek. A FACS súlyok esetében csökkentjük a jittert a szintetikus animációs szekvenciákhoz képesti időbeli veszteségek használatával. Sebességveszteség (Lv ) ihlette [Cudeiro et al. 2019] a cél és az előre jelzett sebesség közötti MSE. Bátorítja a dinamikus kifejezések általános simaságát. Ezenkívül a gyorsulás szabályzási kifejezése (Lacc ) adják hozzá, hogy csökkentsék a FACS súlyok ingadozását (a súlyát alacsonyan tartják a reakcióképesség megőrzése érdekében).
- Konzisztencia elvesztése. Valódi képeket használunk feljegyzések nélkül a konzisztencia felügyelet nélküli elvesztése érdekében (Lc ), hasonló [Honari et al. 2018]. Ez arra ösztönzi a tereptárgy-előrejelzéseket, hogy egyenértékűek legyenek a különböző képátalakítások során, javítva a tereptárgyak elhelyezkedésének konzisztenciáját a képkockák között anélkül, hogy a tereptárgyak címkéire lenne szükség a képzési képek egy részéhez.
teljesítmény
A kódoló teljesítményének javítása érdekében anélkül, hogy csökkentené a pontosságot vagy növelnénk a remegést, szelektíven párnázott konvolúciókkal csökkentettük a tereptérkép méretét. Ez nagyobb irányítást adott a tereptérképek mérete felett, mint a lépcsőzetes konvolúciók. A maradék megtartása érdekében feldaraboljuk a jellemzőtérképet, mielőtt hozzáadnánk egy párnázott konvolúció kimenetéhez. Ezenkívül a funkcióleképezések mélységét 8-szorosára állítottuk be a hatékony memóriahasználat érdekében az olyan vektoros utasításkészletekkel, mint az AVX és a Neon FP16, és 1.5-szeres teljesítménynövekedést eredményezve.
A végső modellünk 1.1 millió paraméterrel rendelkezik, és 28.1 millió szorzás-felhalmozást igényel a végrehajtáshoz. Referenciaként vanília Mobilnet V2 (amelyre az architektúránk épül) 300 millió szorzás-felhalmozás szükséges a végrehajtáshoz. Használjuk a NCNN Az eszközön belüli modellkövetkeztetés keretrendszere és az egyszálas végrehajtási idő (beleértve az arcfelismerést is) egy képkockához az alábbi táblázatban találhatók. Kérjük, vegye figyelembe, hogy a 16 ms-os végrehajtási idő 60 képkocka/másodperc (FPS) feldolgozást támogatna.
Mi a következő lépés
Szintetikus adatfolyamunk lehetővé tette számunkra, hogy iteratív módon javítsuk a betanított modell kifejezőképességét és robusztusságát. Szintetikus szekvenciákat adtunk hozzá, hogy javítsuk az elmulasztott arckifejezésekre való reagálást, és kiegyensúlyozzuk a képzést a különböző arcidentitásokon. Minimális számítási ráfordítással kiváló minőségű animációt érünk el az architektúra időbeli megfogalmazása és a veszteségek, a gondosan optimalizált gerinchálózat és a szintetikus adatokból származó hibamentes alapigazság miatt. A FACS súlyozási alhálózatában végrehajtott időbeli szűrés lehetővé teszi, hogy csökkentsük a gerinchálózatban lévő rétegek számát és méretét anélkül, hogy növelnénk a jittert. A felügyelet nélküli konzisztencia-vesztés lehetővé teszi, hogy valós adatok nagy halmazával edzzünk, javítva a modellünk általánosítását és robusztusságát. Továbbra is dolgozunk modelljeink további finomításán és fejlesztésén, hogy még kifejezőbb, rezgésmentes és robusztus eredményeket érjünk el.
Ha érdekli, hogy hasonló kihívásokon dolgozzon a valós idejű arckövetés és gépi tanulás élvonalában, kérjük, tekintse meg néhány nyitott pozíciók csapatunkkal.
A poszt Valós idejű arcanimáció avataroknak jelent meg először Roblox blog.
- "
- 28
- 3d
- a
- pontos
- Elérése
- át
- Akció
- hozzáadott
- mellett
- címek
- algoritmus
- algoritmusok
- Minden termék
- lehetővé teszi, hogy
- mellett
- alkalmazások
- építészet
- művész
- Előadók
- automatikusan
- avatar
- karakterekkel
- átlagos
- mert
- előtt
- hogy
- lent
- BEST
- között
- Blog
- Doboz
- elfog
- esetek
- bizonyos
- kihívás
- kihívások
- kihívást
- klasszikus
- Kódolás
- kereskedelmi
- számítás
- számítógép
- Körülmények
- folytatódik
- ellenőrzés
- ellenőrzések
- készítette
- Kreatív
- kritikai
- termés
- napi
- dátum
- mély
- leírni
- leírt
- Ellenére
- észlelt
- Érzékelés
- fejlesztők
- Eszközök
- különböző
- dinamikus
- könnyen
- hatékony
- ösztönzi
- Mérnökök
- hatalmas
- példa
- példák
- végrehajtás
- kifejezések
- kifejező
- szélső
- Arc
- arcok
- GYORS
- Funkció
- Jellemzők
- szűrő
- vezetéknév
- Forefront
- talált
- KERET
- Keretrendszer
- Ingyenes
- ból ből
- további
- jövő
- jó minőségű
- azonban
- HTTPS
- ötlet
- kép
- képek
- végre
- végrehajtás
- javul
- javuló
- Beleértve
- növekvő
- bemenet
- inspirálta
- érdekelt
- intuitív
- IT
- ismert
- Címkék
- nagy
- TANUL
- tanult
- tanulás
- Korlátozott
- Listázott
- elhelyezkedés
- gép
- gépi tanulás
- fenntartása
- KÉSZÍT
- Gyártás
- térkép
- Térképek
- március
- Memory design
- metaverse
- millió
- modell
- modellek
- több
- többszörös
- Természetes
- Neon
- hálózat
- szám
- számos
- nyitva
- nyit
- működik
- Lehetőségek
- optimalizált
- Opciók
- átfogó
- rész
- különösen
- teljesítmény
- Tippek
- feldolgozás
- real-time
- csökkenteni
- csökkentő
- megköveteli,
- kutatás
- kapott
- Eredmények
- ruha
- roblox
- robusztusság
- futás
- készlet
- felépítés
- számos
- megosztott
- hasonló
- egyetlen
- Méret
- SOLVE
- néhány
- különleges
- Színpad
- standard
- kezdet
- Még mindig
- támogatás
- rendszer
- cél
- csapat
- Műszaki
- feltételek
- A
- Keresztül
- idő
- felé
- Csomagkövetés
- Képzések
- transzformációk
- alatt
- us
- használ
- Felhasználók
- hasznosít
- különféle
- Sebesség
- videó
- Videók
- Tényleges
- látomás
- Wikipedia
- nélkül
- Munka
- dolgozó
- lenne
- év