Implementación de la aplicación de muestra de AWS Panorama - AWS Panorama

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Implementación de la aplicación de muestra de AWS Panorama

Tras configurar su dispositivo AWS Panorama o dispositivo compatible y actualizar su software, implemente una aplicación de muestra. En las siguientes secciones, importará una aplicación de muestra con la CLI de la aplicación de AWS Panorama y la implementará con la consola de AWS Panorama.

La aplicación de muestra utiliza un modelo de machine learning para clasificar los objetos en fotogramas de vídeo de una cámara de red. Utiliza el SDK de la aplicación de AWS Panorama para cargar un modelo, obtener imágenes y ejecutar el modelo. A continuación, la aplicación superpone los resultados sobre el vídeo original y los envía a una pantalla conectada.

En un entorno minorista, el análisis de los patrones de tráfico peatonal permite predecir los niveles de tráfico. Al combinar el análisis con otros datos, puede planificar el aumento de las necesidades de personal durante las fiestas y otros eventos, medir la eficacia de los anuncios y las promociones de ventas u optimizar la ubicación de los expositores y la gestión del inventario.

Requisitos previos

Para seguir los procedimientos de este tutorial, necesitará un shell o un terminal de línea de comando para ejecutar los comandos. En las listas de código, los comandos van precedidos del símbolo del sistema ($) y del nombre del directorio actual, si es aplicable.

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

Para comandos largos, utilizamos un carácter de escape (\) para dividir un comando en varias líneas.

En Linux y macOS, use su administrador de shell y paquetes preferido. En Windows 10, puede instalar Windows Subsystem para Linux para obtener una versión de Ubuntu y Bash integrada con Windows. Si necesita ayuda para configurar un entorno de desarrollo en Windows, consulte Configuración de un entorno de desarrollo en Windows.

Utilice Python para desarrollar aplicaciones de AWS Panorama e instalar herramientas con pip, el administrador de paquetes de Python. Si aún no dispone de Python, instale la última versión. Si tiene Python 3 pero no pip, instale pip con el administrador de paquetes de su sistema operativo o instale una nueva versión de Python, que contenga pip.

En este tutorial, utilizará Docker para crear el contenedor en el que se ejecuta el código de su aplicación. Instale Docker desde el sitio web de Docker: Obtener Docker

Este tutorial utiliza la CLI de la aplicación de AWS Panorama para importar la aplicación de muestra, crear paquetes y cargar artefactos. La CLI de la aplicación de AWS Panorama usa AWS Command Line Interface (AWS CLI) para llamar a las operaciones de la API de servicio. Si ya tiene la AWS CLI, actualícela a la versión más reciente. Para instalar la CLI de la aplicación de AWS Panorama y AWS CLI, utilice pip.

$ pip3 install --upgrade awscli panoramacli

Descargue la aplicación de muestra y extráigala en su espacio de trabajo.

Importe la aplicación de ejemplo

Para importar la aplicación de muestra para usarla en su cuenta, utilice la CLI de la aplicación de AWS Panorama. Las carpetas y el manifiesto de la aplicación contienen referencias a un marcador de posición de número de cuenta. Para actualizarlos con su número de cuenta, ejecute el comando panorama-cli import-application.

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

El paquete SAMPLE_CODE, en el directorio packages, contiene el código y la configuración de la aplicación, incluido un Dockerfile que utiliza la imagen base de la aplicación, panorama-application. Para crear el contenedor de aplicaciones que se ejecuta en el dispositivo, utilice el comando panorama-cli build-container.

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

El último paso con la CLI de la aplicación de AWS Panorama consiste en registrar el código y los nodos del modelo de la aplicación y cargar los activos en un punto de acceso de Amazon S3 proporcionado por el servicio. Los activos incluyen la imagen del contenedor del código, el modelo y un archivo descriptor para cada uno. Para registrar los nodos y cargar los activos, ejecute el comando panorama-cli package-application.

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

Implementación de la aplicación

Utilice la consola de AWS Panorama para implementar la aplicación en su dispositivo.

Para implementar la aplicación
  1. Abra la página Aplicaciones implementadas de la consola de AWS Panorama.

  2. Elija Implementar aplicación.

  3. Pegue el contenido del manifiesto de la aplicación, graphs/aws-panorama-sample/graph.json, en el editor de texto. Elija Siguiente.

  4. En Nombre de la aplicación, escriba aws-panorama-sample.

  5. Elija Proceder a implementar.

  6. Elija Comenzar la implementación.

  7. Elija Siguiente sin seleccionar un rol.

  8. Elija Seleccionar dispositivo y, a continuación, elija su dispositivo. Elija Siguiente.

  9. En el paso Seleccionar fuentes de datos, elija Ver entradas y añada la transmisión de la cámara como origen de datos. Elija Siguiente.

  10. En el paso Configurar, seleccione Siguiente.

  11. Elija Implementación y a continuación elija Listo.

  12. En la lista de aplicaciones implementadas, elija aws-panorama-sample.

Actualice esta página para ver las actualizaciones o utilice el siguiente script para supervisar la implementación desde la línea de comandos.

ejemplo 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": {} } ] ...

Si la aplicación no comienza a ejecutarse, compruebe los registros de la aplicación y del dispositivo en Registros de Amazon CloudWatch.

Ver resultado

Cuando se completa la implementación, la aplicación comienza a procesar la transmisión de vídeo y envía los registros a CloudWatch.

Para ver los registros en Registros de CloudWatch
  1. Abra la página de grupos de registro de la consola de Registros de CloudWatch.

  2. Encuentre los registros de aplicaciones y dispositivos de AWS Panorama en los siguientes grupos:

    • Registros de dispositivos: /aws/panorama/devices/device-id

    • Registros de aplicaciones: /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

Para ver la salida de vídeo de la aplicación, conecte el dispositivo a un monitor con un cable HDMI. De forma predeterminada, la aplicación muestra cualquier resultado de clasificación que tenga más del 20% de confianza.

ejemplo 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", ...

El modelo de muestra tiene 1000 clases que incluyen muchos animales, alimentos y objetos comunes. Intente apuntar la cámara hacia un teclado o una taza de café.

Una taza de café con detección de texto.

Para simplificar, la aplicación de muestra utiliza un modelo ligero de clasificación. El modelo genera una matriz única con una probabilidad para cada una de sus clases. Las aplicaciones del mundo real utilizan con mayor frecuencia modelos de detección de objetos que tienen una salida multidimensional. Para ver ejemplos de aplicaciones con modelos más complejos, consulte Ejemplos de aplicaciones, scripts y plantillas.

Activar el SDK de Python

La aplicación de muestra utiliza AWS SDK for Python (Boto) para enviar métricas a Amazon CloudWatch. Para habilitar esta funcionalidad, cree un rol que conceda permiso a la aplicación para enviar métricas y vuelva a implementar la aplicación con el rol asociado.

La aplicación de muestra incluye una plantilla de AWS CloudFormation que crea un rol con los permisos que necesita. Para crear el rol, utilice el comando aws cloudformation deploy.

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

Para volver a implementar la aplicación
  1. Abra la página Aplicaciones implementadas de la consola de AWS Panorama.

  2. Elija una aplicación.

  3. Elija Reemplazar.

  4. Complete los pasos para implementar la aplicación. En Especificar rol de IAM, elija el rol que creó. Su nombre comienza por aws-panorama-sample-runtime.

  5. Cuando se complete la implementación, abra la Consola de CloudWatch y consulte las métricas en el espacio de nombres AWSPanoramaApplication. Cada 150 fotogramas, la aplicación registra y carga métricas para el procesamiento de los marcos y el tiempo de inferencia.

Eliminar recursos

Si ha terminado de trabajar con la aplicación de muestra, puede utilizar la consola de AWS Panorama para eliminarla del dispositivo.

Para eliminar la aplicación del dispositivo
  1. Abra la página Aplicaciones implementadas de la consola de AWS Panorama.

  2. Elija una aplicación.

  3. Elija Eliminar del dispositivo.

Pasos siguientes

Si ha detectado errores al implementar o ejecutar la aplicación de muestra, consulte Solución de problemas.

Para obtener más información sobre las funciones y la implementación de la aplicación de muestra, continúe con el tema siguiente.