Kinect Nils Röder, Björn Frömmer
Agenda Einleitung Hardware Funktionsweise der Kamera Algorithmus (Pose Recognition, Tracking)
Einleitung Was ist Kinect? Eingabegerät (Human Computer Interface) Optisches Tracking Kinect Tiefen-Kamera Einfache Kameras liefern lediglich zweidimensionale Abbildungen unserer Umwelt. Diese ist jedoch dreidimensional. Neben dem Farbwert hat jedes Pixel zusätzlich einen Entfernungswert.
Einleitung Was leistet Kinect? Personen sollen erkannt und getrackt werden Interaktion mit Applikation Pose auf virtuellen Charakter übertragen... Beispiel OpenNI
Einleitung Warum Kinect? Interaktion ohne herkömmliche Konsolen-Hardware: Joystick, Controller, Wii, etc. Freie Hände Natural Interaction Intuitives Steuern von Spiele -Anwendungen
Agenda Einleitung Hardware Funktionsweise der Kamera Algorithmus (Pose Recognition, Tracking)
Hardware
3D Tiefen-Sensor Hardware Projeziert großflächiges Infrarot-Punkt-Muster in den Raum Tiefen-Bild 640 X 480 @ 30 FPS Genauigkeit bei 2m Abstand zum Sensor X,Y = 3mm Z = 1cm Arbeitsbereich ~ 0,8 3,5m Schwarzweiß CMOS empfängt reflektierte Infrarotstrahlen (Personen, Objekte, etc.)
RGB Kamera Hardware UXGA 1600 X 1200 Dient der Gesichtserkennung Aufzeichnen von Videos und Fotos (z.b. zum Erzeugen einer Textur)
Hardware Motorisiertes neigen der Kamera Nachjustieren Tilt
Hardware Multi-Array Mikrofon Sprache einem getrackten Spieler zuweisen Wichtig für Spracheingabe Beispiel OpenNI
Agenda Einleitung Hardware Funktionsweise der Kamera Algorithmus (Pose Recognition, Tracking)
Funktionsweise Betrachtete Szene Tiefen-Bild der Szene Ergebnis IR-Projektion IR-Reflektion
Funktionsweise
Allgemeine Informationen Kinect merkt sich die Form des Spielers (31 Punkte am Körper) Robust bei Verdeckung (Spieler läuft durch Kamerabild etc.) Einzelne Finger werden nicht erkannt Maximale Spieleranzahl (XBOX 360) = 2
Agenda Einleitung Hardware Funktionsweise der Kamera Algorithmus (Pose Recognition, Tracking)
Kinect Algorithmus Übersicht Algorithmus zur Steuerung der Kinect-Software (Games etc.) 3D Positionen von menschlichen Körpern mittels (einzelner!) Tiefenbilder bestimmen Keine zeitlichen Informationen keine Bewegungsinformation! Machine Learning
Vorgehensweise
Trainingsdaten, Probleme alter Systeme 2D Systeme Erstellung von Trainingsdaten schwierig Farb- und Texturunterschiede (Kleidung, Haare, Haut, ) Daher meist Reduzierung auf 2D-Silhouetten 3D Systeme (Tiefenkameras) reduzieren die Schwierigkeiten, ernstzunehmende Variationen bei Körper und Kleidungsformen bleiben bestehen
Trainingsdaten (1) Der menschliche Körper ist in der Lage eine enorme Vielzahl an Posen einzunehmen diese Posen sind schwer zu simulieren Lösung Erstellung einer grossen Motion-Capturing Datenbank ~500k frames in einigen hundert Sequenzen von fahrenden, tretenden, rennenden, Menu-navigierenden,..., Personen Nur Einzelbilder werden ausgewertet, da das System keine zeitlichen Daten ( Bewegung) zur Klassifizierung benötigt
Trainingsdaten (2) Bei Änderungen der Pose kommt es zu Überschneidungen in der Körperhaltung, so dass einzelne Frames nahezu identisch sind Diese Frames werden mittels furthest neighbor clustering eliminiert und gelöscht ~100k Posen bleiben übrig, bei denen 2 Posen niemals näher als 5cm zusammen liegen
Synthetische Daten generieren Nun werden mittels der ~100k Posen synthetische Daten generiert Ziel Realismus und Vielfalt 15 verschiedene Base-Meshes von (menschlichen) Körpern werden jeweils mit den Motion-Capturing Daten gefüttert Zufallsgenerierte Parameter: Motion-Capturing Frame Kamera-Position ( User Position!) Kamera-Rauschen Kleidung & Haare
Body Part Labeling (1) Einzelne Körperteile (31 verschiedene) werden klassifiziert und durch unterschiedliche Einfärbungen gekennzeichnet Einige Bereiche stellen direkt Gelenke dar Andere sind Lückenfüller oder können in Verbindung mit weiteren Bereichen benutzt werden um mögliche Gelenk-Positionen zu identifizieren intermediate representation transformiert dieses Problem in eines das durch bereits bestehende und effiziente Klassifizierungs-Algorithmen gelöst werden kann Die zeitliche Einbusse die dadurch entsteht ist vernachlässigbar
Body-Part Labeling (2) Die farbigen Körperbereiche werden als Texturemap gespeichert Mit dieser Texturemap werden die verschiedenen Testmodelle eingefärbt Die gesamten Daten (eingefärbte Körperteilmodelle und die zugehörigen Tiefenbilddaten) werden als komplett beschriftete Trainingsdaten dem Klassifizierer zur Verfügung gestellt
Tiefenbild Eigenschaften ( features ) Vergleichseigenschaften werden generiert durch (Paper: Randomized Trees for real-time keypoint recognition) Einzelne Pixel lassen nur ungenaue Rückschlüsse darauf zu um welchen Körperteil es sich handelt, aber in der Masse ( decision forest ) sind sie ausreichend um eine genaue Bestimmung der trainierten Körperteile zu ermöglichen
randomized decision forests (1) randomized decision trees & forests haben sich als schnelle und effektive multi-class classifier erwiesen, und können effizient auf einer GPU implementiert werden Ein Wald ist eine Ansammlung von Bäumen (Wer hätte DAS gedacht?!)
randomized decision forests (2) Jeder Knoten eines Baumes besteht aus einem feature fθ und einem Schwellwert τ Um ein Pixel x im Bild zu klassifizieren wird an der Wurzel begonnen und die Formel für fθ an den einzelnen Knoten berechnet. Je nach Schwellwert τ wird dann links oder rechts im Baum weitergegangen
randomized decision forests (3) An einem Blatt des Baumes t angekommen wird die gelernte distribution des entsprechenden body part labels gespeichert Alle distributions der betrachteten Bäume werden am Schluss gemittelt um die finale Klassifizierung zu erhalten
training Jeder Baum wird mit unterschiedlichen, zufällig erzeugten Bildern trainiert (~2000 pro Baum, um eine ungefähr gleichmässige Verteilung über alle Körperteile zu gewährleisten) Algorithmus: siehe Paper: Randomized Trees for real-time keypoint recognition, V. Lepetit, P. Lagger, and P. Fua Um Zeit zu sparen wurde eine verteilte Lösung implementiert: 3 Bäume bis zur Tiefe 20 mittels 1 Mio. Bildern zu trainieren dauert auf einem 1000-Kern- Cluster in etwa einen Tag
Auswertung Mittels der errechneten Pixelinformationen über einzelne Körperteile durch den classifier kann nun ein Rückschluss auf die 3D-Positionen der einzelnen Gelenke im Raum gegeben werden Diese Informationen sind die finalen Daten, die das System nach aussen weitergibt Diese Daten können dann von einer Anwendung genutzt werden (z.b. um Spiele zu steuern Kinect & XBOX 360)
Quellen Microsoft Kinect: http://research.microsoft.com/apps/pubs/?id=145347 Randomized Trees: http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1467521&tag=1