Utilisation du kit de développement Azure Kinect

Microsoft a annoncé ses modules de caméra Azure Kinect aux côtés de HoloLens 2 au début de 2019. Les deux appareils utilisent le même module de caméra de réalité mixte, utilisant un capteur de profondeur de temps de vol pour cartographier les objets autour de la caméra. Mais là où HoloLens est un appareil de réalité mixte portable, les modules Azure Kinect sont destinés à fournir des applications d'apprentissage automatique hébergées par Azure avec des capteurs connectés qui peuvent être montés n'importe où dans un espace de travail.

Azure Kinect est un descendant direct des modules Kinect de deuxième génération fournis avec la Xbox One, mais au lieu de fournir des entrées du monde réel pour les jeux, il est destiné aux utilisateurs et aux applications d'entreprise. Destiné à fonctionner avec les services cognitifs d'Azure, le premier kit de développement Azure Kinect a commencé à être expédié fin 2019 aux États-Unis, ajoutant plusieurs autres pays au début de 2020.

Ouvrir la boîte

Le kit de développement Azure Kinect à 399 $ est une petite unité blanche avec deux objectifs de caméra, un pour une caméra RVB grand angle et un pour le capteur de profondeur Kinect, et une gamme de microphones. Il dispose d'un capteur d'orientation, vous permettant d'utiliser la caméra pour créer des images 3D complexes d'environnements, prêtes à être utilisées en réalité mixte. Vous pouvez enchaîner plusieurs appareils pour des numérisations 3D rapides ou pour couvrir une pièce entière, en utilisant le capteur d'orientation pour aider à comprendre la position de l'appareil.

Avec la caméra, vous obtenez une alimentation, une clé Allen pour retirer le couvercle des ports de chaînage et un câble USB pour se connecter à un PC de développement. Je recommanderais un trépied de bureau ou un autre type de support, car le support en plastique fourni est plutôt petit et ne fonctionne pas avec la plupart des bureaux ou moniteurs. Il n'y a pas de logiciel dans la boîte, seulement un lien vers la documentation en ligne où vous pouvez télécharger le SDK de l'appareil.

Avant de commencer, vous devez mettre à jour le micrologiciel de l'appareil. Il est livré avec le SDK et inclut un outil d'installation en ligne de commande. Lorsque vous exécutez le programme de mise à jour, il vérifie d'abord l'état actuel du micrologiciel avant d'installer le micrologiciel de la caméra et de l'appareil, puis le redémarrage. Une fois la caméra redémarrée, utilisez le même outil pour vérifier que la mise à jour a bien été installée. S'il y a un problème avec une installation, vous pouvez utiliser la réinitialisation matérielle de la caméra (cachée sous le support du trépied) pour restaurer l'image d'usine d'origine.

Sentir le monde

Avec le SDK installé, vous avez accès aux capteurs de l'appareil à partir de votre code. Il existe trois SDK: un pour un accès de bas niveau à tous les capteurs de la caméra, un autre pour utiliser les fonctionnalités familières de suivi corporel de Kinect et un pour relier le réseau de microphones de la caméra aux services vocaux d'Azure. Une application Kinect Viewer prédéfinie affiche les vues de caméra disponibles et diffuse les données des capteurs de l'appareil. Vous avez accès à la caméra RVB grand angle, à une vue de la caméra de profondeur et à l'image de la caméra infrarouge du capteur de profondeur. Les SDK sont disponibles pour Windows et pour Linux, en particulier la version Ubuntu 18.04 LTS de Canonical, et peuvent être téléchargés directement à partir de Microsoft ou de GitHub.

C'est une bonne idée de passer du temps à jouer avec la visionneuse Kinect. Il vous permet de voir comment les différents modes de caméra de profondeur fonctionnent, vous aidant à choisir un champ de vision étroit ou large. Vous pouvez voir les données des capteurs de position, à la fois de l'accéléromètre et du gyroscope, et du réseau de microphones. Avec le kit de développement Azure Kinect connecté à un PC de développement et opérationnel, vous pouvez commencer à écrire du code pour celui-ci. Une application d'enregistrement en ligne de commande peut être utilisée pour capturer des données à lire dans le visualiseur, en stockant des informations de profondeur dans un fichier au format MKV (Matroska Video).

Création de votre première application de détection de profondeur

Microsoft fournit un exemple de code pour créer une application C simple pour fonctionner avec le kit de développement Azure Kinect. Il n'y a qu'une seule bibliothèque nécessaire, et cela fournit les objets et les méthodes nécessaires pour travailler avec la caméra. Toute application doit d'abord vérifier le nombre de caméras connectées au PC hôte avant de configurer les flux de données de votre appareil. Les appareils sont identifiés par leur numéro de série, vous pouvez donc l'utiliser pour adresser une caméra spécifique lorsque vous travaillez avec plusieurs connectés au même PC ou enchaînés ensemble.

Le kit de développement Azure Kinect ne fournit que des données en streaming, les applications doivent donc configurer le débit de données en images par seconde, ainsi que les formats de couleur et les résolutions d'image. Une fois que vous avez créé un objet de configuration, vous pouvez ouvrir une connexion à l'aide de votre objet de configuration, prêt à diffuser des données. Lorsque vous avez terminé de lire un flux de données, arrêtez et fermez l'appareil.

Les images sont capturées dans un objet de capture, avec une image de profondeur, une image infrarouge et une image couleur pour chaque image individuelle, extraite du flux de l'appareil. Une fois que vous avez une capture, vous pouvez extraire les images individuelles prêtes à être utilisées dans votre application. Les objets image peuvent être livrés aux API de vision artificielle Azure, prêts pour la reconnaissance d'objets ou la détection d'anomalies. Un exemple que Microsoft a utilisé dans ses démonstrations est une application qui utilise la vidéo capturée pour détecter quand un travailleur dans une usine s'approche trop près des machines en fonctionnement; un autre détecte quelqu'un qui fume près d'une pompe à essence.

Un processus similaire vous donne les données des capteurs de position et de mouvement. Comme les données de mouvement sont capturées à un taux plus élevé que les données d'image, vous devez implémenter une certaine forme de synchronisation dans votre code pour éviter de perdre des données. Les données audio sont capturées à l'aide des API Windows standard, y compris celles utilisées par les services vocaux d'Azure.

Bien que le matériel Azure Kinect capture beaucoup de données, les fonctions du SDK aident à les transformer en une forme utilisable; par exemple, ajouter des données de profondeur à une image RVB pour produire des images RVB-D qui sont transformées au point de vue de la caméra RVB (et vice versa). Comme les deux capteurs sont décalés, cela nécessite de déformer un maillage d'image pour fusionner les points de vue des deux caméras, en utilisant le GPU de votre PC. Une autre transformation génère un nuage de points, vous permettant d'obtenir des données de profondeur pour chaque pixel de votre capture. Une option utile du SDK est la possibilité de capturer des flux vidéo et de données dans un fichier au format Matroska. Cette approche permet aux appareils à bande passante limitée de traiter des données par lots et de les fournir, par exemple, aux appareils Azure Stack Edge avec des conteneurs Cognitive Services pour le traitement par lots.

Suivi du corps d'un squelette numérique

Le matériel Kinect original a introduit le suivi du corps, avec un modèle squelettique qui pourrait être utilisé pour évaluer rapidement la posture et les gestes. Cette même approche se poursuit dans le SDK Azure Kinect Body Tracking, qui utilise la technologie de traitement parallèle du GPU CUDA de Nvidia pour travailler avec les données d'image 3D du capteur de profondeur de votre appareil. Un exemple d'application groupé présente certaines des fonctionnalités du SDK, notamment la possibilité de suivre plusieurs personnes à la fois. 

Le SDK Body Tracking s'appuie sur le SDK Azure Kinect et l'utilise pour configurer et se connecter à un appareil. Les données d'image capturées sont traitées par le tracker, stockant les données dans une structure de données de corps. Celui-ci contient une collection de structures squelettiques pour les corps identifiés, une carte d'index 2D pour aider à visualiser vos données, ainsi que les images 2D et 3D sous-jacentes qui ont été utilisées pour construire les données de suivi. Chaque image peut être utilisée pour créer des animations ou pour fournir des informations à des outils d'apprentissage automatique qui peuvent aider à traiter les positions suivies par rapport à un plan de salle ou à des positions idéales.

Les services cognitifs d'Azure sont un outil puissant de traitement des données, et l'ajout d'Azure Kinect permet de les utiliser dans un large éventail de scénarios industriels et d'entreprise. En mettant l'accent sur la reconnaissance d'images 3D sur le lieu de travail, Microsoft tente de montrer comment la reconnaissance d'images peut être utilisée pour réduire les risques et améliorer la sécurité. Il existe même la possibilité d'utiliser une gamme de périphériques comme système de capture volumétrique rapide, ce qui peut aider à créer des environnements de réalité mixte et à fournir des données sources pour la CAO et d'autres outils de conception. Le résultat est un appareil flexible qui, avec un peu de code, devient un appareil de détection très puissant.