Distribuzione dell'applicazione di esempio AWS Panorama - AWS Panorama

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Distribuzione dell'applicazione di esempio AWS Panorama

Dopo averconfigura la tua appliance AWS Panorama o un dispositivo compatibilee ha aggiornato il suo software, implementato un'applicazione di esempio. Nelle sezioni seguenti, importi un'applicazione di esempio con l'interfaccia a riga di comando dell'applicazione AWS Panorama e la distribuisci con la console AWS Panorama.

L'applicazione di esempio utilizza un modello di apprendimento automatico per classificare gli oggetti in fotogrammi video di una telecamera di rete. Utilizza l'AWS Panorama Application SDK per caricare un modello, ottenere immagini ed eseguire il modello. L'applicazione quindi sovrappone i risultati al video originale e lo invia a uno schermo collegato.

In un ambiente di vendita al dettaglio, l'analisi dei modelli di traffico pedonale consente di prevedere i livelli di traffico. Combinando l'analisi con altri dati, è possibile pianificare l'aumento delle esigenze di personale durante le festività e altri eventi, misurare l'efficacia delle pubblicità e delle promozioni di vendita o ottimizzare il posizionamento dei display e la gestione dell'inventario.

Prerequisiti

Per seguire le procedure in questa esercitazione, devi usare un terminale a riga di comando o una shell per eseguire i comandi. Negli elenchi di codice, i comandi sono preceduti da un simbolo di prompt ($) e dal nome della directory attuale, se appropriato.

~/panorama-project$ this is a command this is output

Per comandi lunghi, utilizziamo un carattere di escape (\) per dividere un comando su più righe.

In Linux e macOS utilizzare la propria shell e il proprio programma di gestione dei pacchetti preferiti. In Windows 10 è possibile installare Windows Subsystem for Linux per ottenere una versione di Ubuntu e Bash integrata con Windows. Per informazioni sulla configurazione di un ambiente di sviluppo in Windows, vediConfigurazione di un ambiente di sviluppo in Windows.

Usi Python per sviluppare applicazioni AWS Panorama e installare strumenti con pip, il gestore di pacchetti di Python. Se non disponi già di Python,installare la versione più recente. Se hai Python 3 ma non pip, installa pip con il gestore di pacchetti del tuo sistema operativo o installa una nuova versione di Python, che viene fornita con pip.

In questo tutorial, usi Docker per creare il contenitore che esegue il codice dell'applicazione. Installa Docker dal sito Web di Docker: Ottieni Docker

Questo tutorial utilizza l'interfaccia a riga di comando dell'applicazione AWS Panorama per importare l'applicazione di esempio, creare pacchetti e caricare artefatti. L'interfaccia a riga di comando dell'applicazione AWS Panorama utilizzaAWS Command Line Interface(AWS CLI) per chiamare le operazioni API del servizio. Se hai già ilAWS CLI, aggiornarlo alla versione più recente. Per installare la CLI dell'applicazione AWS Panorama eAWS CLI, usopip.

$ pip3 install --upgrade awscli panoramacli

Scarica l'applicazione di esempio ed estraila nel tuo spazio di lavoro.

Importazione dell'applicazione di esempio

Per importare l'applicazione di esempio da utilizzare nel tuo account, usa l'interfaccia a riga di comando dell'applicazione AWS Panorama. Le cartelle e il manifesto dell'applicazione contengono riferimenti a un numero di account segnaposto. Per aggiornarli con il tuo numero di account, esegui ilpanorama-cli import-applicationcomando.

aws-panorama-sample$ panorama-cli import-application

IlSAMPLE_CODEpacchetto, nelpackagesdirectory, contiene il codice e la configurazione dell'applicazione, incluso un Dockerfile che utilizza l'immagine di base dell'applicazione,panorama-application. Per creare il contenitore di applicazioni che viene eseguito sull'appliance, utilizzare ilpanorama-cli build-containercomando.

aws-panorama-sample$ ACCOUNT_ID=$(aws sts get-caller-identity --output text --query 'Account') aws-panorama-sample$ panorama-cli build-container --container-asset-name code_asset --package-path packages/${ACCOUNT_ID}-SAMPLE_CODE-1.0

Il passaggio finale con l'interfaccia a riga di comando dell'applicazione AWS Panorama consiste nel registrare il codice e i nodi del modello dell'applicazione e caricare le risorse su un punto di accesso Amazon S3 fornito dal servizio. Le risorse includono l'immagine del contenitore del codice, il modello e un file descrittore per ciascuna di esse. Per registrare i nodi e caricare le risorse, esegui ilpanorama-cli package-applicationcomando.

aws-panorama-sample$ panorama-cli package-application Uploading package model Registered model with patch version bc9c58bd6f83743f26aa347dc86bfc3dd2451b18f964a6de2cc4570cb6f891f9 Uploading package code Registered code with patch version 11fd7001cb31ea63df6aaed297d600a5ecf641a987044a0c273c78ceb3d5d806

Distribuzione dell'applicazione

Usa la console AWS Panorama per distribuire l'applicazione sul tuo dispositivo.

Per distribuire un'applicazione
  1. Aprire la console AWS PanoramaPagina delle applicazioni distribuite.

  2. ScegliDistribuzione dell'applicazione.

  3. Incolla il contenuto del manifesto dell'applicazione,graphs/aws-panorama-sample/graph.json, nell'editor di testo. Seleziona Successivo.

  4. Per Application name (Nome applicazione), immettere aws-panorama-sample.

  5. ScegliContinua con la distribuzione.

  6. ScegliInizia la distribuzione.

  7. ScegliSuccessivosenza selezionare un ruolo.

  8. ScegliSeleziona dispositivo, quindi scegli il tuo elettrodomestico. Seleziona Successivo.

  9. SulSelezionare le origini datipasso, scegliVisualizza input (s)e aggiungi lo stream della tua videocamera come fonte di dati. Seleziona Successivo.

  10. SulConfigurapasso, scegliSuccessivo.

  11. ScegliDistribuzione, quindi selezionareFatto.

  12. Nell'elenco delle applicazioni distribuite, scegliaws-panorama-sample.

Aggiorna questa pagina per gli aggiornamenti o utilizza il seguente script per monitorare la distribuzione dalla riga di comando.

Esempio monitor-deployment.sh
while true; do aws panorama list-application-instances --query 'ApplicationInstances[?Name==`aws-panorama-sample`]' sleep 10 done
[ { "Name": "aws-panorama-sample", "ApplicationInstanceId": "applicationInstance-x264exmpl33gq5pchc2ekoi6uu", "DefaultRuntimeContextDeviceName": "my-appliance", "Status": "DEPLOYMENT_PENDING", "HealthStatus": "NOT_AVAILABLE", "StatusDescription": "Deployment Workflow has been scheduled.", "CreatedTime": 1630010747.443, "Arn": "arn:aws:panorama:us-west-2:123456789012:applicationInstance/applicationInstance-x264exmpl33gq5pchc2ekoi6uu", "Tags": {} } ] [ { "Name": "aws-panorama-sample", "ApplicationInstanceId": "applicationInstance-x264exmpl33gq5pchc2ekoi6uu", "DefaultRuntimeContextDeviceName": "my-appliance", "Status": "DEPLOYMENT_PENDING", "HealthStatus": "NOT_AVAILABLE", "StatusDescription": "Deployment Workflow has completed data validation.", "CreatedTime": 1630010747.443, "Arn": "arn:aws:panorama:us-west-2:123456789012:applicationInstance/applicationInstance-x264exmpl33gq5pchc2ekoi6uu", "Tags": {} } ] ...

Se l'applicazione non si avvia, controlla ilregistri delle applicazioni e dei dispositiviin Amazon CloudWatch Registri.

Visualizza l'output

Al termine della distribuzione, l'applicazione avvia l'elaborazione del flusso video e invia i registri a CloudWatch.

Per visualizzare i log in CloudWatch Log
  1. Aprire ilPagina dei gruppi di log di CloudWatch Console Logs.

  2. Trova i log delle applicazioni e delle appliance AWS Panorama nei seguenti gruppi:

    • Registri dei dispositivi/aws/panorama/devices/device-id

    • Registri delle applicazioni/aws/panorama/devices/device-id/applications/instance-id

2022-08-26 17:43:39 INFO INITIALIZING APPLICATION 2022-08-26 17:43:39 INFO ## ENVIRONMENT VARIABLES {'PATH': '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', 'TERM': 'xterm', 'container': 'podman'...} 2022-08-26 17:43:39 INFO Configuring parameters. 2022-08-26 17:43:39 INFO Configuring AWS SDK for Python. 2022-08-26 17:43:39 INFO Initialization complete. 2022-08-26 17:43:39 INFO PROCESSING STREAMS 2022-08-26 17:46:19 INFO epoch length: 160.183 s (0.936 FPS) 2022-08-26 17:46:19 INFO avg inference time: 805.597 ms 2022-08-26 17:46:19 INFO max inference time: 120023.984 ms 2022-08-26 17:46:19 INFO avg frame processing time: 1065.129 ms 2022-08-26 17:46:19 INFO max frame processing time: 149813.972 ms 2022-08-26 17:46:29 INFO epoch length: 10.562 s (14.202 FPS) 2022-08-26 17:46:29 INFO avg inference time: 7.185 ms 2022-08-26 17:46:29 INFO max inference time: 15.693 ms 2022-08-26 17:46:29 INFO avg frame processing time: 66.561 ms 2022-08-26 17:46:29 INFO max frame processing time: 123.774 ms

Per visualizzare l'uscita video dell'applicazione, collegare l'apparecchio a un monitor con un cavo HDMI. Per impostazione predefinita, l'applicazione mostra qualsiasi risultato di classificazione con una confidenza superiore al 20%.

Esempio squeezenet_classes.json
["tench", "goldfish", "great white shark", "tiger shark", "hammerhead", "electric ray", "stingray", "cock", "hen", "ostrich", "brambling", "goldfinch", "house finch", "junco", "indigo bunting", "robin", "bulbul", "jay", "magpie", "chickadee", "water ouzel", "kite", "bald eagle", "vulture", "great grey owl", "European fire salamander", "common newt", "eft", "spotted salamander", "axolotl", "bullfrog", "tree frog", ...

Il modello di esempio ha 1000 classi che includono molti animali, cibo e oggetti comuni. Prova a puntare la fotocamera verso una tastiera o una tazza da caffè.

Una tazza da caffè con testo di rilevamento.

Per semplicità, l'applicazione di esempio utilizza un modello di classificazione leggero. Il modello emette un singolo array con una probabilità per ciascuna delle sue classi. Le applicazioni del mondo reale utilizzano più frequentemente modelli di rilevamento di oggetti con output multidimensionali. Per applicazioni di esempio con modelli più complessi, vedereApplicazioni, script e modelli di esempio.

Abilitare l'SDK per Python

L'applicazione di esempio utilizzaAWS SDK for Python (Boto)per inviare metriche ad Amazon CloudWatch. Per abilitare questa funzionalità, crea un ruolo che conceda all'applicazione il permesso di inviare metriche e ridistribuisci l'applicazione con il ruolo associato.

L'applicazione di esempio vale anche perAWS CloudFormationmodello che crea un ruolo con le autorizzazioni necessarie. Per creare il ruolo, utilizzareaws cloudformation deploycomando.

$ aws cloudformation deploy --template-file aws-panorama-sample.yml --stack-name aws-panorama-sample-runtime --capabilities CAPABILITY_NAMED_IAM

Per ridistribuire l'applicazione
  1. Aprire la console AWS PanoramaPagina delle applicazioni distribuite.

  2. Scegliere un'applicazione.

  3. Scegliere Replace (Sostituisci).

  4. Completare i passaggi per implementare l'applicazione. NelSpecificare il ruolo IAM, scegli il ruolo appena creato. Il suo nome inizia con aws-panorama-sample-runtime.

  5. Al termine della distribuzione, apri ilCloudWatchplanciae visualizzare i parametri nellaAWSPanoramaApplicationSpazio dei nomi. Ogni 150 frame, l'applicazione registra e carica le metriche per l'elaborazione dei frame e il tempo di inferenza.

Elimina

Se hai finito di lavorare con l'applicazione di esempio, puoi usare la console AWS Panorama per rimuoverla dall'appliance.

Per rimuovere l'applicazione dal dispositivo
  1. Aprire la console AWS PanoramaPagina delle applicazioni distribuite.

  2. Scegliere un'applicazione.

  3. ScegliEliminazione dal dispositivo.

Fasi successive

Se si sono verificati errori durante la distribuzione o l'esecuzione dell'applicazione di esempio, vedereRisoluzione dei problemi.

Per ulteriori informazioni sulle funzionalità e sull'implementazione dell'applicazione di esempio, continua al'argomento successivo.