Déploiement du modèle d'application AWS Panorama - AWS Panorama

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Déploiement du modèle d'application AWS Panorama

Une fois que vous avezconfigurer votre appliance AWS Panorama ou un appareil compatibleet a mis à jour son logiciel, déployé un exemple d'application. Dans les sections suivantes, vous devez importer un exemple d'application avec l'interface de ligne de commande de l'application AWS Panorama et le déployer avec la console AWS Panorama.

L'exemple d'application utilise un modèle d'apprentissage automatique pour classer des objets dans des images vidéo provenant d'une caméra réseau. Il utilise le SDK de l'application AWS Panorama pour charger un modèle, obtenir des images et exécuter le modèle. L'application superpose ensuite les résultats au-dessus de la vidéo d'origine et les transmet sur un écran connecté.

Dans un environnement de vente au détail, l'analyse des modèles de trafic piétonnier permet de prévoir les niveaux de trafic. En combinant l'analyse avec d'autres données, vous pouvez planifier l'augmentation des besoins en personnel pendant les vacances et autres événements, mesurer l'efficacité des publicités et des promotions commerciales ou optimiser l'emplacement des présentoirs et la gestion des stocks.

Prérequis

Pour suivre les procédures décrites dans ce didacticiel, vous aurez besoin d'un shell ou d'un terminal de ligne de commande pour exécuter des commandes. Dans les listes de code, les commandes sont précédées d'un symbole d'invite ($) et du nom du répertoire actuel, le cas échéant.

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

Pour les commandes longues, nous utilisons un caractère d'échappement (\) pour répartir une commande sur plusieurs lignes.

Sur Linux et macOS, utilisez votre gestionnaire de shell et de package préféré. Sur Windows 10, vous pouvez installer le sous-système Windows pour Linux afin d'obtenir une version intégrée à Windows d'Ubuntu et Bash. Pour obtenir de l'aide sur la configuration d'un environnement de développement sous Windows, voirConfiguration d'un environnement de développement sous Windows.

Vous utilisez Python pour développer des applications AWS Panorama et installer des outils avec pip, le gestionnaire de packages de Python. Si vous n'avez pas déjà Python,installer la dernière version. Si vous utilisez Python 3 mais pas pip, installez pip avec le gestionnaire de packages de votre système d'exploitation ou installez une nouvelle version de Python, fournie avec pip.

Dans ce didacticiel, vous allez utiliser Docker pour créer le conteneur qui exécute le code de votre application. Installez Docker depuis le site Web de Docker : Obtenez Docker

Ce didacticiel utilise l'interface de ligne de commande de l'application AWS Panorama pour importer l'exemple d'application, créer des packages et télécharger des artefacts. La CLI de l'application AWS Panorama utiliseAWS Command Line Interface(AWS CLI) pour appeler les opérations d'API de service. Si vous avez déjàAWS CLI, mettez-le à jour vers la dernière version. Pour installer la CLI de l'application AWS Panorama etAWS CLI, utilisationpip.

$ pip3 install --upgrade awscli panoramacli

Téléchargez l'exemple d'application et extrayez-le dans votre espace de travail.

Importer l'exemple d'application

Pour importer l'exemple d'application à utiliser dans votre compte, utilisez l'interface de ligne de commande de l'application AWS Panorama. Les dossiers et le manifeste de l'application contiennent des références à un numéro de compte fictif. Pour les mettre à jour avec votre numéro de compte, exécutez lepanorama-cli import-applicationcommande.

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

Dans laSAMPLE_CODEpackage, dans lepackagesrépertoire, contient le code et la configuration de l'application, y compris un Dockerfile qui utilise l'image de base de l'application,panorama-application. Pour créer le conteneur d'applications qui s'exécute sur l'appliance, utilisezpanorama-cli build-containercommande.

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

La dernière étape avec l'interface de ligne de commande de l'application AWS Panorama consiste à enregistrer le code et les nœuds de modèle de l'application, et à charger les actifs vers un point d'accès Amazon S3 fourni par le service. Les ressources incluent l'image du conteneur du code, le modèle et un fichier descripteur pour chacun d'entre eux. Pour enregistrer les nœuds et télécharger des actifs, exécutez lepanorama-cli package-applicationcommande.

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

Déployer l'application

Utilisez la console AWS Panorama pour déployer l'application sur votre appliance.

Pour déployer l'application
  1. Ouvrez la console AWS PanoramaPage Applications déployées.

  2. ChoisissezDéploiement.

  3. Collez le contenu du manifeste de l'application,graphs/aws-panorama-sample/graph.json, dans l'éditeur de texte. Choisissez Next (Suivant).

  4. Dans Application name (Nom de l'application), saisissez aws-panorama-sample.

  5. ChoisissezProcéder au déploiement.

  6. ChoisissezCommencer le déploiement.

  7. ChoisissezSuivantsans sélectionner de rôle.

  8. ChoisissezSélectionnez un appareil, puis choisissez votre appareil. Choisissez Next (Suivant).

  9. Sur leSélectionnez les sources de donnéesétape, choisissezAfficher les entrées, et ajoutez le flux de votre caméra en tant que source de données. Choisissez Next (Suivant).

  10. Sur leConfigurationétape, choisissezSuivant.

  11. ChoisissezDéploiement, puisTerminé.

  12. Dans la liste des applications déployées, choisissezaws-panorama-sample.

Actualisez cette page pour obtenir des mises à jour ou utilisez le script suivant pour surveiller le déploiement depuis la ligne de commande.

Exemple 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 l'application ne démarre pas, vérifiez lejournaux des applications et des appareilsdans Amazon CloudWatch Journaux.

Afficher la sortie

Une fois le déploiement terminé, l'application commence à traiter le flux vidéo et envoie des journaux à CloudWatch.

Pour consulter les connexions CloudWatch Journaux
  1. Ouvrez lePage Groupes de journaux du CloudWatch Console Logs.

  2. Trouvez les journaux de l'application et de l'appliance AWS Panorama dans les groupes suivants :

    • Journaux des appareils/aws/panorama/devices/device-id

    • Journaux d'applications/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

Pour visualiser la sortie vidéo de l'application, connectez l'appareil à un moniteur à l'aide d'un câble HDMI. Par défaut, l'application affiche tout résultat de classification présentant un niveau de confiance supérieur à 20 %.

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

Le modèle d'échantillon comprend 1 000 classes, y compris de nombreux animaux, de la nourriture et des objets courants. Essayez de pointer votre appareil photo vers un clavier ou une tasse à café.

Une tasse à café avec texte de détection.

Pour des raisons de simplicité, l'exemple d'application utilise un modèle de classification léger. Le modèle produit un tableau unique avec une probabilité pour chacune de ses classes. Les applications du monde réel utilisent plus fréquemment des modèles de détection d'objets dotés d'une sortie multidimensionnelle. Pour des exemples d'applications avec des modèles plus complexes, voirExemples d'applications, de scripts et de modèles.

Activer le kit SDK pour Python

L'exemple d'application utilise l'AWS SDK for Python (Boto)pour envoyer les métriques à Amazon CloudWatch. Pour activer cette fonctionnalité, créez un rôle qui autorise l'application à envoyer des métriques et redéployez l'application avec le rôle associé.

L'exemple d'application inclut unAWS CloudFormationmodèle qui crée un rôle avec les autorisations dont il a besoin. Pour créer le rôle, utilisez l'aws cloudformation deploycommande.

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

Pour redéployer l'application
  1. Ouvrez la console AWS PanoramaPage Applications déployées.

  2. Choisissez une application.

  3. Choisissez Remplacer.

  4. Suivez les étapes pour déployer l'application. Dans leSpécification du rôle IAM, choisissez le rôle que vous avez créé. Son nom commence par aws-panorama-sample-runtime.

  5. Lorsque le déploiement est terminé, ouvrez leCloudWatchconsoleet consultez les métriques dans leAWSPanoramaApplicationEspaces de noms. Toutes les 150 images, l'application enregistre et télécharge des métriques pour le traitement des images et le temps d'inférence.

Nettoyage

Si vous avez fini de travailler avec l'exemple d'application, vous pouvez utiliser la console AWS Panorama pour le supprimer de l'appliance.

Pour supprimer l'application de l'appliance
  1. Ouvrez la console AWS PanoramaPage Applications déployées.

  2. Choisissez une application.

  3. ChoisissezSuppression de l'appareil.

Étapes suivantes

Si vous avez rencontré des erreurs lors du déploiement ou de l'exécution de l'exemple d'application, voirRésolution des problèmes.

Pour en savoir plus sur les fonctionnalités et la mise en œuvre de l'exemple d'application, passez àle sujet suivant.