Déployer une application web d’analyse spatiale

Utilisez cet article pour apprendre à déployer une application web destinée à collecter des données/insights d’analyse spatiale à partir d’IoT Hub et à les visualiser. Cela peut avoir des applications utiles dans un large éventail de scénarios et de secteurs d’activité. Par exemple, si une entreprise veut optimiser l’utilisation de ses locaux, elle peut créer rapidement une solution avec différents scénarios.

Ce didacticiel vous montre comment effectuer les opérations suivantes :

  • Déployer un conteneur d’analyse spatiale
  • Configurer l’opération et la caméra
  • Configurer la connexion IoT Hub dans l’application web
  • Déployer et tester l’application web

L’application présente les scénarios suivants :

  • Nombre de personnes entrantes et sortantes dans un espace/magasin
  • Nombre de personnes entrantes et sortantes dans une zone de caisses et temps passé dans la files d’attente à la caisse (temps d’arrêt)
  • Nombre de personnes portant un masque
  • Nombre de personnes enfreignant les consignes de distanciation sociale

Prérequis

Déployer un conteneur d’analyse spatiale

Respectez les étapes de la configuration de l’ordinateur hôte afin de configurer l’ordinateur hôte et connecter un appareil IoT Edge à Azure IoT Hub.

Déployer un service Azure IoT Hub dans votre abonnement

Tout d’abord, créez une instance d’un service Azure IoT Hub avec le niveau tarifaire Standard (S1) ou Gratuit (S0). Suivez ces instructions afin de créer cette instance à l’aide de l’interface de ligne de commande Azure.

Renseignez les paramètres requis.

  • Abonnement : Nom ou ID de votre abonnement Azure.
  • Groupe de ressources : Ajoutez un nom à votre groupe de ressources.
  • Nom de l’IoT Hub : Ajoutez un nom à votre IoT Hub.
  • Nom de l’IoT Hub : Nom de l’instance IoT Hub que vous avez créée.
  • Nom du périphérique : Ajoutez un nom à votre périphérique.
az login
az account set --subscription <name or ID of Azure Subscription>
az group create --name "<Resource Group Name>" --location "WestUS"

az iot hub create --name "<IoT Hub Name>" --sku S1 --resource-group "test-resource-group"

az iot hub device-identity create --hub-name "<IoT Hub Name>" --device-id "<Edge Device Name>" --edge-enabled

Déployer le conteneur sur Azure IoT Edge sur l’ordinateur hôte

L’étape suivante consiste à déployer le conteneur d’analyse spatiale sous la forme d’un module IoT sur l’ordinateur hôte à l’aide de l’interface Azure CLI. Le processus de déploiement nécessite un fichier manifeste de déploiement qui décrit les conteneurs, les variables et les configurations nécessaires pour votre déploiement. Vous trouverez un exemple de manifeste de déploiement dans DeploymentManifest.json qui comprend des configurations prédéfinies pour tous les scénarios.

Définir des variables d’environnement

La plupart des variables d’environnement du module IoT Edge sont déjà définies dans les fichiers DeploymentManifest.json d’exemple dont les liens se trouvent ci-dessus. Dans le fichier, recherchez les variables d’environnement ENDPOINT et APIKEY, comme indiqué ci-dessous. Remplacez les valeurs par l’URI de point de terminaison et la clé API que vous avez créées précédemment. Assurez-vous que la valeur CLUF est définie sur « accepter ».

"EULA": { 
    "value": "accept"
},
"BILLING":{ 
    "value": "<Use the endpoint from your Vision resource>"
},
"APIKEY":{
    "value": "<Use a key from your Vision resource>"
}

Configurer les paramètres d’opération

Si vous utilisez l’exemple DeploymentManifest.json qui présente déjà toutes les configurations nécessaires (opérations, URL des fichiers vidéo enregistrés et zones, etc.), vous pouvez passer à la section Exécuter le déploiement.

Maintenant que la configuration initiale du conteneur d’analyse spatiale est terminée, l’étape suivante consiste à configurer les paramètres des opérations et à les ajouter au déploiement.

La première étape consiste à mettre à jour l’exemple DeploymentManifest.json et à configurer l’opération souhaitée. À titre d’exemple, la configuration de cognitiveservices.vision.spatialanalysis-personcount est indiquée ci-dessous :

"personcount": {
    "operationId": "cognitiveservices.vision.spatialanalysis-personcount",
    "version": 1,
    "enabled": true,
    "parameters": {
        "VIDEO_URL": "<Replace RTSP URL here>",
        "VIDEO_SOURCE_ID": "<Replace with friendly name>",
        "VIDEO_IS_LIVE":true,
        "DETECTOR_NODE_CONFIG": "{ \"gpu_index\": 0 }",
        "SPACEANALYTICS_CONFIG": "{\"zones\":[{\"name\":\"queue\",\"polygon\":[<Replace with your values>], \"events\": [{\"type\":\"count\"}], \"threshold\":<use 0 for no threshold.}]}"
    }
},

Une fois le manifeste de déploiement mis à jour, suivez les instructions du fabricant de la caméra pour installer la caméra, configurer l’URL de la caméra et configurer le nom d’utilisateur et le mot de passe.

Ensuite, définissez VIDEO_URL sur l’URL RTSP de la caméra et les informations d’identification vous permettant de vous connecter à la caméra.

Si le périphérique dispose de plusieurs GPU, sélectionnez le GPU sur lequel exécuter cette opération. Veillez à équilibrer la charge des opérations de manière à ce qu’il n’y ait pas plus de 8 opérations en cours sur un seul GPU.

Ensuite, configurez la zone dans laquelle vous souhaitez compter les personnes. Pour configurer le polygone de zone, suivez d’abord les instructions du fabricant pour récupérer une image grâce à la caméra. Pour déterminer chaque sommet du polygone, sélectionnez un point sur l’image, prenez les coordonnées en pixels x,y du point par rapport à l’angle supérieur gauche et divisez-les par les dimensions de l’image correspondantes. Définissez les résultats sous forme de coordonnées x,y du sommet. Vous pouvez définir la configuration de polygone de zone dans le champ SPACEANALYTICS_CONFIG.

Voici un exemple d’image vidéo qui montre comment les coordonnées des sommets sont calculées pour une image de taille 1 920 x 1 080. Sample video frame

Vous pouvez également sélectionner un seuil de confiance pour le comptage des personnes détectées et la génération d’événements. Définissez le seuil sur 0 si vous souhaitez que tous les événements apparaissent dans la sortie.

Exécuter le déploiement

Maintenant que le manifeste de déploiement est terminé, utilisez cette commande dans l’interface de ligne de commande Azure pour déployer le conteneur sur l’ordinateur hôte en tant que module IoT Edge.

az login
az extension add --name azure-iot
az iot edge set-modules --hub-name "<IoT Hub name>" --device-id "<IoT Edge device name>" --content DeploymentManifest.json -–subscription "<subscriptionId>"

Renseignez les paramètres requis.

  • Nom de l’IoT Hub : Nom de votre Azure IoT Hub.
  • DeploymentManifest.json : Nom de votre fichier de déploiement.
  • Nom de l’appareil IoT Edge : Nom de l’appareil IoT Edge de votre ordinateur hôte
  • Abonnement : ID ou nom de votre abonnement.

Cette commande démarre le déploiement, et vous permet d’afficher l’état du déploiement dans votre instance Azure IoT Hub depuis le portail Azure. L’état peut se présenter sous la forme 417 : la configuration de déploiement de l’appareil n’est pas définie jusqu’à ce que l’appareil termine de télécharger les images du conteneur et démarre l’exécution.

Vérifiez que déploiement a réussi.

Localisez la section État du runtime dans les paramètres du module IoT Edge pour le module d’analyse spatiale de votre instance IoT Hub sur le portail Azure. Les champs Valeur souhaitée et Valeur signalée de la section État du runtime doivent indiquer Running. Pour plus d’informations sur le portail Azure, voir ci-dessous.

Example deployment verification

À ce stade, le conteneur d’analyse spatiale exécute l’opération. Il émet des insights IA pour les opérations et route ces insights en tant que télémétrie vers votre instance Azure IoT Hub. Pour configurer d’autres caméras, vous pouvez mettre à jour le fichier de manifeste de déploiement et exécuter à nouveau le déploiement.

Générer l’application web

L’application web d’analyse spatiale permet aux développeurs de configurer rapidement un exemple d’application web, de l’héberger dans leur environnement Azure et d’utiliser l’application pour valider des événements E2E.

Générer une image Docker

Suivez le guide pour générer et pousser (push) l’image à une instance Azure Container Registry de votre abonnement.

Configurer le conteneur Docker

Pour installer le conteneur, créez un nouveau Azure App Service et renseignez les paramètres requis. Accédez ensuite à l’onglet Docker et sélectionnez Conteneur unique, puis Azure Container Registry. Utilisez l’instance Azure Container Registry à laquelle vous avez envoyé l’image ci-dessus.

Enter image details

Après avoir entré les paramètres ci-dessus, sélectionnez Vérifier + créer, puis créez l’application.

Configurer l’application

Attendez que l’installation se termine, puis accédez à votre ressource depuis le portail Azure. Accédez à la section Configuration et ajoutez les deux paramètres d’application suivants.

  • EventHubConsumerGroup : nom de chaîne du groupe de consommateurs de votre compte Azure IoT Hub. Vous pouvez créer un groupe de consommateurs dans votre compte IoT Hub ou utiliser le groupe par défaut.
  • IotHubConnectionString : chaîne de connexion à votre compte Azure IoT Hub, qui peut être récupérée à partir de la section Clés de votre ressource Azure IoT Hub Configure Parameters

Une fois ces 2 paramètres ajoutés, sélectionnez Enregistrer. Sélectionnez ensuite Authentification/autorisation dans le menu de navigation de gauche, puis mettez le niveau d’authentification souhaité à jour. Nous vous recommandons Microsoft Entra ID express.

Tester l’application

Accédez au service Azure et vérifiez que le déploiement a réussi et que l’application web est en cours d’exécution. Accédez à l’URL configurée : <yourapp>.azurewebsites.net pour afficher l’application en cours d’exécution.

Test the deployment

Obtenir le code source PersonCount

Si vous voulez afficher ou modifier le code source de cette application, vous pouvez le trouver sur GitHub.

Étapes suivantes