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.
Sezioni
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
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
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.
-
Applicazione di esempio–aws-panorama-sample.zip
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-application
comando.
aws-panorama-sample$ panorama-cli import-application
IlSAMPLE_CODE
pacchetto, nelpackages
directory, 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-container
comando.
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-application
comando.
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
Aprire la console AWS PanoramaPagina delle applicazioni distribuite
. -
ScegliDistribuzione dell'applicazione.
-
Incolla il contenuto del manifesto dell'applicazione,
graphs/aws-panorama-sample/graph.json
, nell'editor di testo. Seleziona Successivo. -
Per Application name (Nome applicazione), immettere
aws-panorama-sample
. -
ScegliContinua con la distribuzione.
-
ScegliInizia la distribuzione.
-
ScegliSuccessivosenza selezionare un ruolo.
-
ScegliSeleziona dispositivo, quindi scegli il tuo elettrodomestico. Seleziona Successivo.
-
SulSelezionare le origini datipasso, scegliVisualizza input (s)e aggiungi lo stream della tua videocamera come fonte di dati. Seleziona Successivo.
-
SulConfigurapasso, scegliSuccessivo.
-
ScegliDistribuzione, quindi selezionareFatto.
-
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
-
Aprire ilPagina dei gruppi di log di CloudWatch Console Logs
. -
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.](images/mug.jpg)
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 deploy
comando.
$
aws cloudformation deploy --template-file aws-panorama-sample.yml --stack-name aws-panorama-sample-runtime --capabilities CAPABILITY_NAMED_IAM
Per ridistribuire l'applicazione
Aprire la console AWS PanoramaPagina delle applicazioni distribuite
. Scegliere un'applicazione.
-
Scegliere Replace (Sostituisci).
-
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
. -
Al termine della distribuzione, apri ilCloudWatchplancia
e visualizzare i parametri nella AWSPanoramaApplication
Spazio 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
Aprire la console AWS PanoramaPagina delle applicazioni distribuite
. Scegliere un'applicazione.
-
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.