Arbeiten mit dem Azure Kinect Developer Kit

Microsoft kündigte Anfang 2019 seine Azure Kinect-Kameramodule zusammen mit HoloLens 2 an. Beide Geräte verwenden dasselbe Mixed-Reality-Kameramodul und verwenden einen Flugzeit-Tiefensensor, um Objekte um die Kamera herum abzubilden. Wenn HoloLens jedoch ein tragbares Mixed-Reality-Gerät ist, sollen die Azure Kinect-Module von Azure gehostete Anwendungen für maschinelles Lernen mit verbundenen Sensoren versorgen, die überall in einem Arbeitsbereich montiert werden können.

Azure Kinect ist ein direkter Nachfolger der Kinect-Module der zweiten Generation, die mit der Xbox One geliefert wurden. Anstatt jedoch reale Eingaben für Spiele bereitzustellen, richtet es sich an Unternehmensbenutzer und -anwendungen. Das erste Azure Kinect-Entwicklerkit wurde für die Zusammenarbeit mit den kognitiven Diensten von Azure entwickelt und wurde Ende 2019 in den USA ausgeliefert. Anfang 2020 kamen mehrere weitere Länder hinzu.

Öffnen Sie die Box

Das Azure Kinect Developer Kit für 399 US-Dollar ist eine kleine weiße Einheit mit zwei Kameraobjektiven, eines für eine Weitwinkel-RGB-Kamera und eines für den Kinect-Tiefensensor sowie einer Reihe von Mikrofonen. Es verfügt über einen Orientierungssensor, mit dem Sie mit der Kamera komplexe 3D-Bilder von Umgebungen erstellen können, die für die Verwendung in gemischter Realität bereit sind. Sie können mehrere Geräte für schnelle 3D-Scans oder zur Abdeckung eines gesamten Raums miteinander verketten, indem Sie den Orientierungssensor verwenden, um die Geräteposition besser zu verstehen.

Zusammen mit der Kameraeinheit erhalten Sie ein Netzteil, einen Inbusschlüssel zum Entfernen der Abdeckung der Verkettungsöffnungen und ein USB-Kabel zum Anschließen an einen Entwicklungs-PC. Ich würde empfehlen, ein Desktop-Stativ oder eine andere Art von Halterung zu erwerben, da der mitgelieferte Kunststoffständer eher klein ist und mit den meisten Schreibtischen oder Monitoren nicht funktioniert. Im Lieferumfang ist keine Software enthalten, sondern nur ein Link zur Online-Dokumentation, über die Sie das Geräte-SDK herunterladen können.

Bevor Sie beginnen, sollten Sie die Gerätefirmware aktualisieren. Dies wird mit dem SDK geliefert und enthält ein Befehlszeilen-Installationstool. Wenn Sie den Updater ausführen, wird zuerst der aktuelle Firmware-Status überprüft, bevor die Kamera- und Geräte-Firmware installiert und anschließend neu gestartet wird. Verwenden Sie nach dem Neustart der Kamera dasselbe Tool, um zu überprüfen, ob das Update erfolgreich installiert wurde. Wenn bei einer Installation ein Problem auftritt, können Sie den Hardware-Reset der Kamera (versteckt unter der Stativhalterung) verwenden, um das ursprüngliche Werksabbild wiederherzustellen.

Die Welt spüren

Wenn das SDK installiert ist, erhalten Sie über Ihren Code Zugriff auf die Gerätesensoren. Es gibt drei SDKs: eines für den einfachen Zugriff auf alle Sensoren der Kamera, eines für die Verwendung der bekannten Kinect-Funktionen zur Körperverfolgung und eines für die Verknüpfung des Mikrofonarrays der Kamera mit den Sprachdiensten von Azure. Eine vorgefertigte Kinect Viewer-App zeigt die verfügbaren Kameraansichten an und überträgt Daten von den Sensoren des Geräts. Sie erhalten Zugriff auf die Weitwinkel-RGB-Kamera, eine Tiefenkameraansicht und das Bild von der Infrarotkamera des Tiefensensors. SDKs sind sowohl für Windows als auch für Linux verfügbar, insbesondere für die Ubuntu 18.04 LTS-Version von Canonical, und können direkt von Microsoft oder von GitHub heruntergeladen werden.

Es ist eine gute Idee, etwas Zeit mit dem Kinect Viewer zu verbringen. Hier können Sie sehen, wie die verschiedenen Tiefenkameramodi funktionieren, und entweder ein schmales oder ein weites Sichtfeld auswählen. Sie können Daten von den Positionssensoren, sowohl vom Beschleunigungsmesser als auch vom Gyroskop, und vom Mikrofonarray sehen. Wenn das Azure Kinect Developer Kit an einen Entwicklungs-PC angeschlossen ist und funktioniert, können Sie damit beginnen, Code dafür zu schreiben. Eine Befehlszeilenrekorder-App kann verwendet werden, um Daten für die Wiedergabe im Viewer zu erfassen und Tiefeninformationen in einer Datei im MKV-Format (Matroska Video) zu speichern.

Erstellen Sie Ihre erste Tiefenerkennungsanwendung

Microsoft bietet Beispielcode zum Erstellen einer einfachen C-Anwendung für die Verwendung mit dem Azure Kinect Development Kit. Es wird nur eine Bibliothek benötigt, und diese enthält die Objekte und Methoden, die für die Arbeit mit der Kamera erforderlich sind. Jede Anwendung muss zuerst überprüfen, wie viele Kameras an den Host-PC angeschlossen sind, bevor Sie Ihre Gerätedatenströme konfigurieren. Geräte werden anhand ihrer Seriennummer identifiziert. Sie können diese verwenden, um eine bestimmte Kamera anzusprechen, wenn Sie mit mehreren arbeiten, die an denselben PC angeschlossen oder miteinander verkettet sind.

Das Azure Kinect Developer Kit liefert nur Streaming-Daten. Daher müssen Anwendungen die Datenrate in Bildern pro Sekunde sowie die Bildfarbformate und -auflösungen konfigurieren. Sobald Sie ein Konfigurationsobjekt erstellt haben, können Sie mit Ihrem Konfigurationsobjekt eine Verbindung herstellen und Daten streamen. Wenn Sie mit dem Lesen eines Datenstroms fertig sind, stoppen und schließen Sie das Gerät.

Bilder werden in einem Aufnahmeobjekt mit einem Tiefenbild, einem IR-Bild und einem Farbbild für jedes einzelne Bild aus dem Stream des Geräts aufgenommen. Sobald Sie eine Aufnahme haben, können Sie die einzelnen Bilder extrahieren, die für Ihre Anwendung bereit sind. Bildobjekte können an die Azure-Bildverarbeitungs-APIs übermittelt werden, die zur Objekterkennung oder Anomalieerkennung bereit sind. Ein Beispiel, das Microsoft in seinen Demonstrationen verwendet hat, ist eine Anwendung, die mithilfe von aufgenommenen Videos erkennt, wenn ein Mitarbeiter in einer Fabrik dem Bedienen von Maschinen zu nahe kommt. Ein anderer entdeckt jemanden, der in der Nähe einer Zapfsäule raucht.

Ein ähnlicher Vorgang liefert Ihnen Daten von den Positions- und Bewegungssensoren. Da Bewegungsdaten mit einer höheren Rate als Bilddaten erfasst werden, müssen Sie in Ihrem Code eine Form der Synchronisierung implementieren, um Datenverluste zu vermeiden. Audiodaten werden mit Standard-Windows-APIs erfasst, einschließlich der von Azure-Sprachdiensten verwendeten.

Obwohl die Azure Kinect-Hardware viele Daten erfasst, helfen die SDK-Funktionen dabei, diese in eine verwendbare Form umzuwandeln. Beispiel: Hinzufügen von Tiefendaten zu einem RGB-Bild, um RGB-D-Bilder zu erzeugen, die in den Blickwinkel der RGB-Kamera transformiert werden (und umgekehrt). Da die beiden Sensoren versetzt sind, muss ein Bildnetz verzogen werden, um die Blickwinkel der beiden Kameras mithilfe der GPU Ihres PCs zusammenzuführen. Eine weitere Transformation generiert eine Punktwolke, mit der Sie Tiefendaten für jedes Pixel in Ihrer Erfassung abrufen können. Eine nützliche Option im SDK ist die Möglichkeit, Video- und Datenströme in einer Datei im Matroska-Format zu erfassen. Dieser Ansatz ermöglicht es Geräten mit begrenzter Bandbreite, Daten zu stapeln und sie beispielsweise an Azure Stack Edge-Geräte mit Cognitive Services-Containern für die Stapelverarbeitung zu liefern.

Körperverfolgung eines digitalen Skeletts

Mit der ursprünglichen Kinect-Hardware wurde die Körperverfolgung mit einem Skelettmodell eingeführt, mit dem Haltung und Gesten schnell bewertet werden können. Der gleiche Ansatz wird im Azure Kinect Body Tracking SDK fortgesetzt, das die Parallelverarbeitungstechnologie CUDA GPU von Nvidia verwendet, um mit 3D-Bilddaten vom Tiefensensor Ihres Geräts zu arbeiten. Eine gebündelte Beispiel-App zeigt einige der Funktionen des SDK, einschließlich der Möglichkeit, mehr als eine Person gleichzeitig zu verfolgen. 

Das Body Tracking SDK baut auf dem Azure Kinect SDK auf und verwendet es zum Konfigurieren und Herstellen einer Verbindung mit einem Gerät. Erfasste Bilddaten werden vom Tracker verarbeitet und speichern Daten in einer Body-Frame-Datenstruktur. Diese enthält eine Sammlung von Skelettstrukturen für identifizierte Körper, eine 2D-Indexkarte zur Visualisierung Ihrer Daten sowie die zugrunde liegenden 2D- und 3D-Bilder, die zur Erstellung der Tracking-Daten verwendet wurden. Jeder Frame kann verwendet werden, um Animationen zu erstellen oder Informationen an maschinelle Lernwerkzeuge weiterzuleiten, mit deren Hilfe verfolgte Positionen in Bezug auf eine Raumkarte oder ideale Positionen verarbeitet werden können.

Die kognitiven Dienste von Azure sind ein leistungsstarkes Tool für die Datenverarbeitung. Durch das Hinzufügen von Azure Kinect können sie in einer Vielzahl von Industrie- und Unternehmensszenarien verwendet werden. Mit dem Schwerpunkt auf der 3D-Bilderkennung am Arbeitsplatz versucht Microsoft zu zeigen, wie die Bilderkennung verwendet werden kann, um das Risiko zu verringern und die Sicherheit zu verbessern. Es besteht sogar die Möglichkeit, eine Reihe von Geräten als schnelles volumetrisches Erfassungssystem zu verwenden, mit dessen Hilfe sowohl Umgebungen mit gemischter Realität erstellt als auch Quelldaten für CAD und andere Konstruktionswerkzeuge bereitgestellt werden können. Das Ergebnis ist ein flexibles Gerät, das mit ein wenig Code zu einem sehr leistungsstarken Messgerät wird.