Gestenerkennung mit Kinect und Visual Gesture Builder

Wir benutzen Gesten tagtäglich zum Kommunizieren, sowohl implizit als auch explizit. So werden zum Beispiel Taxis mit ausgestreckter Hand herangewinkt. Die Taxifahrer erkennen diese Geste und halten ihr Auto an.
 
Auch in der digitalen Welt zählt Gestensteuerung als eine natürliche Eingabemethode, weil sie intuitiv und direkt ist. Die Kinect von Microsoft ermöglicht die Implementierung von Anwendungen mit Gestenerkennung. Um solche Gesten selbst zu erstellen, gibt es zwei Möglichkeiten. Man kann entweder heuristisch vorgehen und die Gestenerkennung im Code programmieren oder maschinelle Lernverfahren einsetzen, indem man das Tool Visual Gesture Builder (VGB) verwendet.
 
VGB ist ein selbständiges Programm, das zusammen mit dem Kinect SDK heruntergeladen werden kann. Das Programm nutzt Machine Learning Algorithmen um Gesten zu identifizieren. Dafür muss man im Grunde unterschiedliche Videos aufnehmen, in VGB hochladen und die gewünschten Gesten markieren. Der größte Vorteil gegenüber dem heuristischen Ansatz ist, dass Gesten sehr schnell erstellt und bewertet werden können, noch bevor überhaupt jeglicher Code geschrieben wird. Des Weiteren braucht man für die Bedienung des VGB keinen technischen Hintergrund und somit muss dieser Arbeitsschritt nicht von Programmierern durchgeführt werden.

Für das Aufnehmen der Gesten stellt Microsoft das Kinect Studio zur Verfügung. Mit diesem Programm kann man Daten von dem Kinect Sensor aufnehmen und abspielen. Die Videos werden als xrf (im RAW-Format) oder xef-Datei gespeichert und können dann im VGB in einer neuen Solution hochgeladen werden. Falls die Videos im RAW-Format gespeichert wurden, müssen sie noch mit dem KSConverter in eine xef-Datei umgewandelt werden.
 
Das Bild unten zeigt die Oberfläche des VGB Programms. Diese besteht aus unterschiedliche Fenstern und Menü-Optionen. Auf der linken Seite wird die Projektstruktur angezeigt. Eine Solution besteht aus unterschiedlichen Projekten, die jeweils einer bestimmten Geste zugeordnet sind. Jedes Projekt kann man außerdem in einem Training- und einem Analyse-Bereich unterteilen. Empfehlenswert ist ungefähr 90% der aufgenommenen Videos für das Training zu benutzen und 10% für die Analyse.
Um ein neues Projekt hinzuzufügen, kann man auf der Solution rechtsklicken und dann aus dem Kontextmenü "Create New Project" auswählen.
Ein Projekt kann entweder auf AdaBoostTrigger oder RFRProgress beruhen. Mit dem ersten Verfahren wird festgelegt, ob der Nutzer eine bestimmte Geste durchführt, während mit dem zweiten der Fortschritt der durchgeführten Geste festgelegt wird.


Das Ansichtsfenster in der Mitte zeigt eine 2D und eine 3D Sicht des Videos, das gerade bearbeitet wird. Unterhalb befindet sich das Steuerungsfenster und auf der rechten Seite die Eigenschaften des Projekts oder der Aufnahmen.
 
Das Markieren (taggen) der Videos bestimmt den Abschnitt, durch welche die Geste definiert wird und sollte aufmerksam durchgeführt werden. Tastenkürzel können dafür sehr hilfreich sein. Diese sind unterhalb des Steuerungsfensters versteckt. So kann man zum Beispiel Strg+HOME drücken, um den Cursor an den Anfang des Videos zu setzen und dann die rechte Pfeiltaste gedrückt halten um das Video zu markieren. Am Ende kann man im Falle eines AdaBoostTrigger-Projekts entweder Enter drücken um den ausgewählten Abschnitt auf "true" zu setzen oder die Leertaste drücken um den Abschnitt auf "false" zu setzen.
 
Zum Schluss kann man eine bestimmte Geste oder die ganze Datenbank (also die ganze Solution) builden und mittels Live Preview testen, ob die Gestenerkennung robust ist. Die erstellte gbd- oder gba-Datei kann dann abschließend in die Kinectanwendung eingebunden werden.
 
Insgesamt bietet Visual Gesture Builder eine schnelle und einfache Methode eigene Gesten zu erstellen und steigert somit die Produktivität. Am besten einfach gleich ausprobieren und eigene Gesten erstellen. ;)
 
Weitere Quellen: VGB Whitepaper (Englisch)
                            TechTalk - Visual Gesture Builder 
                            Custom Gestures, Kinect for Windows v2 and the Visual Gesture Builder (Englisch)
                            VGB Documentation (Englisch)