Werken met de Azure Kinect Developer Kit

Microsoft kondigde begin 2019 naast HoloLens 2 zijn Azure Kinect-cameramodules aan. Beide apparaten gebruiken dezelfde mixed-reality-cameramodule, waarbij een time-of-flight-dieptesensor wordt gebruikt om objecten rond de camera in kaart te brengen. Maar waar HoloLens een draagbaar mixed-reality-apparaat is, zijn de Azure Kinect-modules bedoeld om door Azure gehoste machine learning-applicaties te voorzien van verbonden sensoren die overal in een werkruimte kunnen worden gemonteerd.

Azure Kinect is een directe afstammeling van de Kinect-modules van de tweede generatie die bij de Xbox One werden geleverd, maar in plaats van echte input voor gaming te bieden, is het gericht op zakelijke gebruikers en applicaties. Bedoeld om te werken met Azure's Cognitive Services, werd de eerste Azure Kinect-ontwikkelaarskit eind 2019 in de Verenigde Staten geleverd, en begin 2020 werden er verschillende andere landen aan toegevoegd.

De doos openen

De Azure Kinect Developer Kit van $ 399 is een kleine witte eenheid met twee cameralenzen, één voor een RGB-groothoekcamera en één voor de Kinect-dieptesensor, en een reeks microfoons. Het heeft een oriëntatiesensor, waardoor u de camera kunt gebruiken om complexe 3D-beelden van omgevingen te bouwen, klaar voor gebruik in mixed reality. U kunt meerdere apparaten aan elkaar koppelen voor snelle 3D-scans of om dekking van een hele kamer te bieden, met behulp van de oriëntatiesensor om de positie van het apparaat te helpen begrijpen.

Samen met de camera-eenheid krijg je een voeding, een inbussleutel om de afdekking van de kettingpoorten te verwijderen en een USB-kabel om verbinding te maken met een ontwikkel-pc. Ik zou aanraden om een ​​desktopstatief of een ander type steun te kopen, omdat de meegeleverde plastic standaard vrij klein is en niet werkt met de meeste bureaus of monitoren. Er zit geen software in de doos, alleen een link naar online documentatie waar u de apparaat-SDK kunt downloaden.

Voordat u begint, moet u de apparaatfirmware bijwerken. Dit wordt geleverd met de SDK en bevat een installatietool voor de opdrachtregel. Wanneer u het updateprogramma uitvoert, controleert het eerst de huidige firmwarestatus voordat de camera- en apparaatfirmware wordt geïnstalleerd en vervolgens opnieuw wordt opgestart. Nadat de camera opnieuw is opgestart, gebruikt u dezelfde tool om te controleren of de update is geïnstalleerd. Als er een probleem is met een installatie, kunt u de hardware-reset van de camera gebruiken (verborgen onder de statiefbevestiging) om de originele fabrieksimage te herstellen.

De wereld voelen

Als de SDK is geïnstalleerd, krijgt u via uw code toegang tot de apparaatsensoren. Er zijn drie SDK's: een voor low-level toegang tot alle camerasensoren, een andere om de vertrouwde Kinect body-tracking-functies te gebruiken en een om de microfoonarray van de camera te koppelen aan de spraakservices van Azure. Een vooraf gebouwde Kinect Viewer-app toont de beschikbare cameraweergaven en streamt gegevens van de sensoren van het apparaat. Je krijgt toegang tot de groothoek RGB-camera, een dieptecameraweergave en het beeld van de infraroodcamera van de dieptesensor. SDK's zijn beschikbaar voor zowel Windows als Linux, met name Canonical's Ubuntu 18.04 LTS-release, en kunnen rechtstreeks worden gedownload van Microsoft of van GitHub.

Het is een goed idee om wat tijd te besteden aan het spelen met de Kinect Viewer. Het laat je zien hoe de verschillende dieptecameramodi werken, zodat je een smal of breed gezichtsveld kunt kiezen. U kunt gegevens zien van de positiesensoren, zowel de versnellingsmeter als de gyroscoop, en van de microfoonarray. Als de Azure Kinect Developer Kit is aangesloten op een ontwikkel-pc en werkt, kunt u er code voor gaan schrijven. Een opdrachtregelrecorder-app kan worden gebruikt om gegevens vast te leggen voor weergave in de viewer, waarbij diepte-informatie wordt opgeslagen in een MKV-bestand (Matroska Video).

Bouw uw eerste dieptewaarnemingsapplicatie

Microsoft biedt voorbeeldcode voor het bouwen van een eenvoudige C-toepassing voor gebruik met de Azure Kinect Development Kit. Er is maar één bibliotheek nodig, en deze biedt de objecten en methoden die nodig zijn om met de camera te werken. Elke toepassing moet eerst controleren hoeveel camera's er op de host-pc zijn aangesloten voordat u de datastromen van uw apparaat configureert. Apparaten worden geïdentificeerd aan de hand van hun serienummer, zodat u dit kunt gebruiken om een ​​specifieke camera te adresseren wanneer u werkt met meerdere apparaten die op dezelfde pc zijn aangesloten of aan elkaar zijn gekoppeld.

De Azure Kinect Developer Kit levert alleen streaminggegevens, dus toepassingen moeten de gegevenssnelheid in frames per seconde configureren, samen met de kleurindelingen en resoluties van afbeeldingen. Nadat u een configuratieobject heeft gemaakt, kunt u een verbinding openen met uw configuratieobject, klaar om gegevens te streamen. Stop en sluit het apparaat als u klaar bent met het lezen van een datastroom.

Afbeeldingen worden vastgelegd in een vastlegobject, met een dieptebeeld, een IR-afbeelding en een kleurenafbeelding voor elk afzonderlijk beeld, genomen uit de stream van het apparaat. Zodra u een opname heeft gemaakt, kunt u de afzonderlijke afbeeldingen extraheren, klaar voor gebruik in uw toepassing. Afbeeldingsobjecten kunnen worden geleverd aan de Azure machine vision-API's, klaar voor objectherkenning of anomaliedetectie. Een voorbeeld dat Microsoft in zijn demonstraties heeft gebruikt, is een toepassing die vastgelegde video gebruikt om te detecteren wanneer een werknemer op een fabrieksvloer te dicht bij het bedienen van machines komt; een ander merkt dat iemand rookt bij een benzinepomp.

Een soortgelijk proces geeft u gegevens van de positie- en bewegingssensoren. Aangezien bewegingsgegevens sneller worden vastgelegd dan afbeeldingsgegevens, moet u een of andere vorm van synchronisatie in uw code implementeren om verlies van gegevens te voorkomen. Audiogegevens worden vastgelegd met behulp van standaard Windows-API's, inclusief de API's die worden gebruikt door de spraakservices van Azure.

Hoewel de Azure Kinect-hardware veel gegevens vastlegt, helpen de SDK-functies deze om te zetten in een bruikbare vorm; bijvoorbeeld het toevoegen van dieptegegevens aan een RGB-afbeelding om RGB-D-afbeeldingen te produceren die worden getransformeerd naar het gezichtspunt van de RGB-camera (en vice versa). Omdat de twee sensoren niet op elkaar zijn ingesteld, moet een beeldmaas worden vervormd om de gezichtspunten van de twee camera's samen te voegen met behulp van de GPU van uw pc. Een andere transformatie genereert een puntenwolk, zodat u dieptegegevens voor elke pixel in uw opname kunt krijgen. Een handige optie in de SDK is de mogelijkheid om video- en datastromen vast te leggen in een Matroska-bestand. Met deze aanpak kunnen apparaten met beperkte bandbreedte batchgegevens verwerken en deze bijvoorbeeld aan Azure Stack Edge-apparaten met Cognitive Services-containers leveren voor batchverwerking.

Lichaam dat een digitaal skelet volgt

De originele Kinect-hardware introduceerde lichaamstracering, met een skeletmodel dat zou kunnen worden gebruikt om snel houding en gebaren te evalueren. Diezelfde aanpak wordt voortgezet in de Azure Kinect Body Tracking SDK, die Nvidia's CUDA GPU parallelle verwerkingstechnologie gebruikt om te werken met 3D-beeldgegevens van de dieptesensor van je apparaat. Een gebundelde voorbeeld-app toont enkele van de functies van de SDK, waaronder de mogelijkheid om meer dan één persoon tegelijk te volgen. 

De Body Tracking SDK bouwt voort op de Azure Kinect SDK en gebruikt deze om een ​​apparaat te configureren en er verbinding mee te maken. Opgenomen beeldgegevens worden verwerkt door de tracker, waarbij gegevens worden opgeslagen in een datastructuur van een lichaamsframe. Dit bevat een verzameling skeletstructuren voor geïdentificeerde lichamen, een 2D-indexkaart om uw gegevens te visualiseren, samen met de onderliggende 2D- en 3D-afbeeldingen die zijn gebruikt om de trackinggegevens samen te stellen. Elk frame kan worden gebruikt om animaties te maken of om informatie naar machine learning-tools te sturen die kunnen helpen bij het verwerken van bijgehouden posities in relatie tot een kamerkaart of tot ideale posities.

Azure's Cognitive Services zijn een krachtig hulpmiddel voor het verwerken van gegevens, en de toevoeging van Azure Kinect maakt het mogelijk om ze te gebruiken in een breed scala aan industriële en bedrijfsscenario's. Met een focus op 3D-beeldherkenning op de werkplek, probeert Microsoft te laten zien hoe beeldherkenning kan worden gebruikt om risico's te verminderen en de veiligheid te verbeteren. Er is zelfs de mogelijkheid om een ​​reeks apparaten te gebruiken als een snel volumetrisch opnamesysteem, dat kan helpen bij het bouwen van zowel mixed-reality-omgevingen als brongegevens voor CAD en andere ontwerptools. Het resultaat is een flexibel apparaat dat met een beetje code een zeer krachtig detectieapparaat wordt.