Overview: Video Motion Capture Solutions

Door Glenn van Waesberghe

Alhoewel Motion Capture ondertussen internationaal de standaard is voor animaties van humanoid characters, is het vaak te duur voor kleinere bedrijven.

We horen kleinere bedrijven in de game development industrie dan ook regelmatig de vraag stellen: zouden we MOCAP niet gewoon met een camera of webcam kunnen doen, met behulp van AI? 

De beelden die we al eens zagen van AI die mensen herkent op video beelden zien er veelbelovend uit. Daar bovenop wordt een skeleton herkent die overeenkomt met de locatie en pose van de mensen op het beeld. 

Binnen dit overview bekijken we de state of the art van MOCAP systemen die enkel gebruik maken van een webcam of videocamera. We gaan in op hoeveel potentieel voor verbetering er is en of het voor jullie de moeite waard is.

Bestaande Software/Services

We bekijken eerst enkele startklare oplossingen die u misschien reeds zag passeren op social media. Deze services beloven veel en hun showcase video's zien er vaak indrukwekkend uit. In deze blogpost testen we de pakketten uit en bekijken we waar toe ze in staat zijn.

Deepmotion

Een eerste oplossing is DeepMotion. Zij adverteren fervent op social media, en hun promotional videos zien er vrij veelbelovend uit:

Deepmotion kost +-147€ per maand, waarvoor u 2 uur footage kan omzetten tot animaties. Indien u minder dan 2 uur footage wil converteren hebben zij ook goedkopere subscripties.

Deepmotion stelt enkele vereisten vast voor de beste resultaten:

  • De camera moet stationair blijven en paralel zijn ten opzichte van de acteurs
  • Het volledige lichaam moet zichtbaar zijn
  • Zo groot mogelijk contrast tussen personen en achtergrond
  • Geen losse kledij over knieën / ellebogen
  • Geen occlusions

Deze vereisten limiteren de mogelijkheden van hun service al enigszins, we testten de service al uit voor julie, maar gebruikten expres clips die enkele van bovenstaande vereisten overtreden. Dit met als doel de limieten van de technologie op te zoeken. Voor een meer standaard voorbeeld dat voldoet aan hun vereisten kan u de clip hierboven bekijken.

De resultaten van Deepmotion in de ideale omstandigheden zijn over het algemeen niet zo zeer stabiel en vrij "jittery". Wat vooral opvalt, is dat het service problemen heeft met het 3D-aspect van een scene, hetwelke logisch is aangezien de input video's een 2D representatie zijn van de animaties. Dit zorgt er voor dat de resulterende animatie wel klopt vanuit het perspectief van de video, maar niet noodzakelijk 100% accuraat is in de derde dimensie. Een van de gevolgen hiervan is dat de voeten niet consistent op de grond blijven staan, maar wat rond zweven. In de dans video geraakt Deepmotion in de war door het geruite hemd van de danser, en in de parkour video heeft Deepmotion problemen met het feit de danser tijdelijk deels door de schommel bedekt wordt.

Uiteindelijk kunnen we zeggen dat de resultaten niet slecht zijn, maar dat de bruikbaarheid van de service nogal beperkt is door de vele vereisten voor goede resultaten. Met nog wat post-processing kunnen de resultaten wel gebruikt worden voor specifieke use cases.

Radical

Een andere service waar u misschien al van gehoord heeft is Radical. Hieronder ziet u de video die zij gebruiken om hun service te promoten.

Radical is iets goedkoper dan Deepmotion, 64€ per maand, en voor een ongelimiteerd  aantal minuten.

Ook Radical stelt enkele "best practices" vast, deze zijn vrijwel dezelfde als bij Deepmotion:

  • De camera moet stationair blijven en parallel zijn ten opzichte van de acteurs
  • Het volledige lichaam moet zichtbaar zijn
  • Zo groot mogelijk contrast tussen personen en achtergrond
  • Geen losse kledij over knieën / ellebogen

Hieronder zie je de resultaten van een van hun preset video's.

Ook hier testten we de service al uit voor jullie, en we gebruikten dezelfde clips die we ook bij Deepmotion gebruikten. De resultaten zijn hieronder te vinden:

Het verschil tussen deze resultaten en de resultaten van Deepmotion, is opvallend. De jitter die bij Deepmotion continu aanwezig was, is vrijwel volledig weg. De resultaten zijn zeer stabiel en consistent. We merken wel op dat hiervoor een trade-off is: de animaties missen een pak details die in de originele video's aanwezig waren. Radical past een soort "smoothing filter" toe op de resultaten, waardoor de resultaten nogal houterig en inaccuraat zijn. Radical heeft ook moeite met de 3D-component van de scene en de voeten van de karakters zweven heen en weer op de grond. De parkour video werkte bij Deepmotion redelijk en kon in ieder geval als een startpunt dienen. De resultaten van Radical daarentegen zijn absoluut niet bruikbaar. Dit is uiteraard een extreem geval, maar het geeft een idee van hoe robuust hun systeem is.

Andere Implementaties

We bekijken nu kort enkele andere bestaande video MOCAP solutions, zowel alleenstaande papers, als solutions die in andere applicaties geïntegreerd zijn. Dit met als doel een vollediger beeld van de State of the Art (SOTA) van deze technologie te vormen.

Wrnch

NVIDIA heeft recent Omniverse Machinima gereleased in Open Beta. Voor ons interessant, is de MOCAP extensie die daarin gebruikt wordt; wrnch AI Pose Estimator. U kan hieronder de resultaten van wrnch zien, we zien ook hier dezelfde problemen; onstabiele voeten en serieuze problemen met het 3D-aspect van de scene.

XNext

Bij papers van de voorbije jaren zien we ook steeds dezelfde beperkingen. Een voorbeeld hiervan vindt u hieronder.

Openpose

Openpose is een open source library voor real-time lichaam, voet, hand en gezicht-keypoint detectie. Het is open source en dus gratis. Het wordt voor allerlei applicaties gebruikt. We bekijken kort de accuraatheid van dit systeem, specifiek voor onze Motion Capture use case, hetwelk een veel hogere accuraatheid nodig heeft dan andere applicaties. 

Dit interessante artikel deed enkele tests met OpenPose en met enkele verschillende camera's. Ze gebruikten twee verschillende cameraresoluties en samplefrequenties: 1920x1080pixels bij 120Hz (equivalent aan 1K), en 3840x2160pixels bij 30Hz (equivalent aan 4K).

Het OpenPose algoritme wordt toegepast op elke individuele frame van de video, dat wil zeggen dat er geen temporele continuïteit is.

De gemiddelde absolute afwijking van de overeenkomstige gewrichtsposities, berekent uit de twee verschillende motion captures voor beide proeven, is als volgt: ongeveer 47% <20 mm, 80% is <30 mm, en 10% is >40 mm.

Het artikel concludeert dat het noodzakelijk is om een systeem te gebruiken dat fouten herstelt die worden veroorzaakt doordat ledematen van tijd tot tijd verkeerd worden gedetecteerd.

Met dit systeem (automatische correctie grove fouten) in werking, krijgen zij dan over het algemeen een accuraatheid van 3cm. Niet zo indrukwekkend, want als elke joint er de helft van de tijd meer dan 2, bijna 3cm naast zit, heb je, in mijn opinie, een Motion Capture systeem dat eigenlijk helemaal niet accuraat is. Goed genoeg voor andere use cases? Sure. Maar met als doel animaties te genereren die in games gebruikt kunnen worden? Daar is deze library simpelweg niet voldoende accuraat voor.

Samenvatting bestaande systemen

We zien dat de bestaande services, libraries en technieken uit papers nuttig kunnen zijn in specifieke gevallen waar de acteur niet veel moet rond bewegen in een kamer, dus zaken zoals upper-body animations zullen hier redelijke resultaten kunnen verkrijgen. Complexere zaken, zoals locomotion, parkour of iets waar de context van de kamer belangrijk is, zijn momenteel nog redelijk out of the question. Al bij al kunnen we concluderen dat er voor dit soort services nog een hele weg te gaan is voordat zij als volwaardig alternatief voor mocap suits kunnen dienen.

Conclusie

Uit bovenstaande voorbeelden (en vele anderen) kunnen we een simpele conclusie trekken: "Garbage in, garbage out". Als de data die we ons MOCAP systeem aanbieden, in dit geval een videocamera opname, niet genoeg informatie bevat om volwaardige 3D-Mocap te genereren, zal het resultaat nooit zijn wat we ervan zouden verwachten.

We kunnen uit deze voorbeelden dus wel concluderen dat 1 camera simpelweg niet genoeg data geeft om volwaardige 3D Motion Capture te doen. Dat opent de vraag: wat dan wel?

We zouden onze data kunnen augmenteren door ook de Depth op te nemen. Dit zal mogelijks helpen met bijvoorbeeld de onstabiele voeten, maar zal nog steeds problemen hebben bij bijvoorbeeld obstructies en complexere bewegingen.

De ideale oplossing is om simpelweg meer camera's toe te voegen. Hoe meer camera's, hoe meer informatie ons systeem kan gebruiken en hoe beter de resultaten zullen zijn. Als voorbeeld van wat zo'n systeem met meerdere camera's kan bereiken ziet u hieronder een video van een bestaande (en dure) oplossing die de gebruiker toestaat om meerdere camerabeelden als input te nemen. 

Jammer genoeg bestaan er nog niet zo veel oplossingen die verschillende camera-beelden als input gebruiken. Ook het academisch onderzoek focust nog te veel op een enkele camera-opname, hetwelk in de praktijk voor ons minder nuttig is.

Zelf kwamen we in het korte onderzoek voor deze blogpost Captury Live tegen, maar deze software kost wel een ongelofelijke 25.000 Euro.

Indien jullie zelf nog op zoek gaan naar video MOCAP oplossingen, hou in ieder geval in gedachten dat meerdere camera's sowieso betere resultaten zullen behalen.

Indien jullie zelf veelbelovende papers of software tegen komen, stuur die gerust even onze kant uit op glenn.van.waesberghe@howest.be , dan bekijken wij deze mogelijks nog later in het jaar, en delen we onze bevindingen met de groep in de vorm van een follow-up blogpost!