Share via


Distribuire un'applicazione Web di analisi spaziale

Usare questo articolo per informazioni su come distribuire un'app Web che raccoglie dati/informazioni dettagliate sull'analisi spaziale da hub IoT e la visualizza. Ciò può avere applicazioni utili in un'ampia gamma di scenari e settori. Ad esempio, se un'azienda vuole ottimizzare l'uso dello spazio immobiliare, può creare rapidamente una soluzione con scenari diversi.

In questa esercitazione si apprenderà come:

  • Distribuire il contenitore di analisi spaziale
  • Configurare l'operazione e la fotocamera
  • Configurare la connessione hub IoT nell'applicazione Web
  • Distribuire e testare l'applicazione Web

L'app presenterà gli scenari seguenti:

  • Numero di persone che entrano ed escono da uno spazio/archivio
  • Numero di persone che entrano e escono da un'area di checkout/fuso orario e il tempo trascorso nella riga di checkout (tempo di attesa)
  • Numero di persone che indossano una maschera viso
  • Numero di persone che violano le linee guida sul distanziamento sociale

Prerequisiti

Distribuire il contenitore di analisi spaziale

Seguire il programma di installazione del computer host per configurare il computer host e connettere un dispositivo IoT Edge a hub IoT di Azure.

Distribuire un servizio hub IoT di Azure nella sottoscrizione

Creare prima di tutto un'istanza di un servizio hub IoT di Azure con il piano tariffario Standard (S1) o il livello gratuito (S0). Seguire queste istruzioni per creare questa istanza usando l'interfaccia della riga di comando di Azure.

Compilare i parametri obbligatori:

  • Sottoscrizione: nome o ID della sottoscrizione di Azure
  • Gruppo di risorse: creare un nome per il gruppo di risorse
  • Nome hub Iot: creare un nome per il hub IoT
  • Nome IoTHub: nome del hub IoT creato
  • Nome dispositivo Perimetrale: creare un nome per il dispositivo Perimetrale
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

Distribuire il contenitore in Azure IoT Edge nel computer host

Il passaggio successivo consiste nel distribuire il contenitore di analisi spaziale come modulo IoT nel computer host usando l'interfaccia della riga di comando di Azure. Il processo di distribuzione richiede un file manifesto della distribuzione che delinea i contenitori, le variabili e le configurazioni necessari per la distribuzione. Un manifesto della distribuzione di esempio è disponibile in DeploymentManifest.json che include configurazioni predefinite per tutti gli scenari.

Impostare le variabili di ambiente

La maggior parte delle variabili di ambiente per il modulo IoT Edge è già impostata nei file di esempio DeploymentManifest.json collegati in precedenza. Nel file cercare le ENDPOINT variabili di ambiente e APIKEY , come illustrato di seguito. Sostituire i valori con l'URI endpoint e la chiave API creata in precedenza. Assicurarsi che il valore del contratto di licenza sia impostato su "accept".

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

Configurare i parametri dell'operazione

Se si usa il DeploymentManifest.json di esempio che include già tutte le configurazioni necessarie (operazioni, URL e zone di file video registrati e così via), è possibile passare alla sezione Esegui la distribuzione.

Dopo aver completato la configurazione iniziale del contenitore di analisi spaziale, il passaggio successivo consiste nel configurare i parametri delle operazioni e aggiungerli alla distribuzione.

Il primo passaggio consiste nell'aggiornare il DeploymentManifest.json di esempio e configurare l'operazione desiderata. Ad esempio, la configurazione per cognitiveservices.vision.spatialanalysis-personcount è illustrata di seguito:

"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.}]}"
    }
},

Dopo aver aggiornato il manifesto della distribuzione, seguire le istruzioni del produttore della fotocamera per installare la fotocamera, configurare l'URL della fotocamera e configurare il nome utente e la password.

Impostare quindi VIDEO_URL sull'URL RTSP della fotocamera e le credenziali per la connessione alla fotocamera.

Se il dispositivo perimetrale ha più GPU, selezionare la GPU in cui eseguire questa operazione. Assicurarsi di bilanciare il carico delle operazioni in cui non sono in esecuzione più di 8 operazioni su una singola GPU alla volta.

Configurare quindi la zona in cui si desidera contare le persone. Per configurare il poligono di zona, seguire prima le istruzioni del produttore per recuperare un fotogramma dalla fotocamera. Per determinare ogni vertice del poligono, selezionare un punto nel fotogramma, prendere le coordinate x,y pixel del punto rispetto all'angolo superiore sinistro del fotogramma e dividere per le dimensioni del fotogramma corrispondenti. Impostare i risultati come coordinate x,y del vertice. È possibile impostare la configurazione del poligono di SPACEANALYTICS_CONFIG zona nel campo .

Si tratta di un fotogramma video di esempio che mostra come vengono calcolate le coordinate dei vertici per un fotogramma di dimensioni 1920/1080. Sample video frame

È anche possibile selezionare una soglia di attendibilità per quando vengono conteggiati gli utenti rilevati e vengono generati eventi. Impostare la soglia su 0 se si desidera che vengano restituiti tutti gli eventi.

Eseguire la distribuzione

Dopo aver completato il manifesto della distribuzione, usare questo comando nell'interfaccia della riga di comando di Azure per distribuire il contenitore nel computer host come modulo 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>"

Compilare i parametri obbligatori:

  • nome hub IoT: nome hub IoT di Azure
  • DeploymentManifest.json: nome del file di distribuzione
  • Nome del dispositivo IoT Edge: nome del dispositivo IoT Edge del computer host
  • Sottoscrizione: ID sottoscrizione o nome

Questo comando avvierà la distribuzione ed è possibile visualizzare lo stato della distribuzione nell'istanza di hub IoT di Azure nel portale di Azure. Lo stato può essere visualizzato come 417: la configurazione della distribuzione del dispositivo non viene impostata fino al termine del download delle immagini del contenitore e dell'avvio dell'esecuzione del dispositivo.

Verificare che la distribuzione sia stata completata correttamente

Individuare lo stato di runtime nel modulo IoT Edge Impostazioni per il modulo di analisi spaziale nell'istanza di hub IoT nel portale di Azure. Il valore desiderato e il valore segnalato per lo stato di runtime devono essere Running. Vedere di seguito per ottenere un aspetto simile al portale di Azure.

Example deployment verification

A questo punto, il contenitore di analisi spaziale esegue l'operazione. Genera informazioni dettagliate sull'intelligenza artificiale per le operazioni e indirizza queste informazioni come dati di telemetria all'istanza di hub IoT di Azure. Per configurare fotocamere aggiuntive, è possibile aggiornare il file manifesto della distribuzione ed eseguire di nuovo la distribuzione.

Compilare l'applicazione Web

L'applicazione Web Analisi spaziale consente agli sviluppatori di configurare rapidamente un'app Web di esempio, ospitarla nell'ambiente Azure e usare l'app per convalidare gli eventi E2E.

Creare un'immagine Docker

Seguire la guida per compilare ed eseguire il push dell'immagine in un Registro Azure Container nella sottoscrizione.

Configurare il contenitore Docker

Per installare il contenitore, creare un nuovo servizio app Azure e compilare i parametri necessari. Passare quindi alla scheda Docker e selezionare Contenitore singolo, quindi Registro Azure Container. Usare l'istanza di Registro Azure Container in cui è stato eseguito il push dell'immagine precedente.

Enter image details

Dopo aver immesso i parametri precedenti, selezionare Rivedi e crea e crea l'app.

Configurare l'app

Attendere il completamento dell'installazione e passare alla risorsa nella portale di Azure. Passare alla sezione di configurazione e aggiungere le due impostazioni dell'applicazione seguenti.

  • EventHubConsumerGroup: nome stringa del gruppo di consumer dal hub IoT di Azure, è possibile creare un nuovo gruppo di consumer nel hub IoT o usare il gruppo predefinito.
  • IotHubConnectionString: il stringa di connessione al hub IoT di Azure, può essere recuperato dalla sezione chiavi della risorsa hub IoT di AzureConfigure Parameters

Dopo aver aggiunto queste 2 impostazioni, selezionare Salva. Selezionare quindi Autenticazione/Autorizzazione nel menu di spostamento a sinistra e aggiornarlo con il livello di autenticazione desiderato. È consigliabile usare Microsoft Entra ID express.

Testare l'app

Passare al servizio di Azure e verificare che la distribuzione sia riuscita e che l'app Web sia in esecuzione. Passare all'URL configurato: <yourapp>.azurewebsites.net per visualizzare l'app in esecuzione.

Test the deployment

Ottenere il codice sorgente PersonCount

Se si vuole visualizzare o modificare il codice sorgente per questa applicazione, è possibile trovarlo in GitHub.

Passaggi successivi