Bereitstellen der AWS Panorama Panorama-Beispielanwendung - AWS Panorama

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Bereitstellen der AWS Panorama Panorama-Beispielanwendung

Nachdem durichten Sie Ihre AWS Panorama Appliance oder ein kompatibles Gerät einund aktualisierte seine Software, stellen Sie eine Beispielanwendung bereit. In den folgenden Abschnitten importieren Sie eine Beispielanwendung mit der AWS Panorama Application CLI und stellen sie mit der AWS Panorama Panorama-Konsole bereit.

Die Beispielanwendung verwendet ein Machine-Learning-Modell, um Objekte in Frames eines Videos von einer Netzwerkkamera zu klassifizieren. Es verwendet das AWS Panorama Application SDK, um ein Modell zu laden, Images abzurufen und das Modell auszuführen. Die Anwendung überlagert dann die Ergebnisse über das Originalvideo und gibt sie an ein angeschlossenes Display aus.

In einer Einzelhandelsumgebung können Sie durch die Analyse von Fußgängerverkehrsmustern das Verkehrsaufkommen vorhersagen. Durch die Kombination der Analyse mit anderen Daten können Sie den erhöhten Personalbedarf rund um Feiertage und andere Veranstaltungen planen, die Wirksamkeit von Anzeigen und Verkaufsaktionen messen oder die Displayplatzierung und Bestandsverwaltung optimieren.

Voraussetzungen

Für die Verfahren in diesem Tutorial benötigen Sie ein Befehlszeilen-Terminal oder eine Befehlszeilen-Shell zum Ausführen der Befehle. In den Codelistungen sind ein ein ein ein ein ein ein ein ein das aktuelle Verzeichnis vorangestellt (bei Bedarf).

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

Für lange Befehle verwenden wir ein Escape-Zeichen (\), um einen Befehl über mehrere Zeilen aufzuteilen.

Verwenden Sie auf Linux und macOS Ihren bevorzugten Shell- und Paket-Manager. Sie können unter Windows 10 das Windows-Subsystem für Linux installieren, um eine Windows-Version von Ubuntu und Bash zu erhalten. Hilfe zum Einrichten einer Entwicklungsumgebung in Windows finden Sie unterEinrichten einer Entwicklungsumgebung in Windows.

Sie verwenden Python, um AWS Panorama Panorama-Anwendungen zu entwickeln und Tools mit pip, dem Paketmanager von Python, zu installieren. Wenn Sie Python noch nicht haben,installieren der neuesten Version. Wenn Sie Python 3, aber nicht pip haben, installieren Sie pip mit dem Paketmanager Ihres Betriebssystems oder installieren Sie eine neue Version von Python, die mit pip geliefert wird.

In diesem Lernprogramm verwenden Sie Docker, um den Container zu erstellen, der Ihren Anwendungscode ausführt. Installieren Sie Docker von der Docker-Website: Holen Sie sich Docker

In diesem Lernprogramm wird die AWS Panorama Application CLI verwendet, um die Beispielanwendung zu importieren, Pakete zu erstellen und Artefakte hochzuladen. Die AWS Panorama Application CLI verwendet dieAWS Command Line Interface(AWS CLI), um Service-API-Operationen aufzurufen. Wenn du das schon hastAWS CLI, aktualisiere es auf die neueste Version. So installieren Sie die AWS Panorama Application CLI undAWS CLI, verwendenpip.

$ pip3 install --upgrade awscli panoramacli

Laden Sie die Beispielanwendung herunter und extrahieren Sie sie in Ihren Workspace.

Importieren der Beispielanwendung

Um die Beispielanwendung zur Verwendung in Ihrem Konto zu importieren, verwenden Sie die AWS Panorama Application CLI. Die Ordner und das Manifest der Anwendung enthalten Verweise auf eine Platzhalterkontonummer. Um diese mit Ihrer Kontonummer zu aktualisieren, führen Sie diepanorama-cli import-applicationbefehlen.

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

DieSAMPLE_CODEPaket, in derpackagesenthält den Code und die Konfiguration der Anwendung, einschließlich einer Dockerdatei, die das Basisimage der Anwendung verwendet,panorama-application. Um den Anwendungscontainer zu erstellen, der auf der Appliance ausgeführt wird, verwenden Siepanorama-cli build-containerbefehlen.

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

Der letzte Schritt mit der AWS Panorama Application CLI besteht darin, den Code und die Modellknoten der Anwendung zu registrieren und Assets auf einen vom Service bereitgestellten Amazon S3 S3-Zugriffspunkt hochzuladen. Zu den Assets gehören das Container-Image des Codes, das Modell und jeweils eine Deskriptordatei. Um die Knoten zu registrieren und Assets hochzuladen, führen Siepanorama-cli package-applicationbefehlen.

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

Bereitstellen der Anwendung

Verwenden Sie die AWS Panorama Panorama-Konsole, um die Anwendung auf Ihrer Appliance bereitzustellen.

So stellen Sie die Anwendung bereit
  1. Öffnen Sie die AWS Panorama Panorama-KonsoleSeite „Bereitgestellte Anwendungen.

  2. WählenBereitstellen der Anwendung.

  3. Fügen Sie den Inhalt des Anwendungsmanifests ein,graphs/aws-panorama-sample/graph.jsonin den Texteditor. Wählen Sie Next (Weiter).

  4. Geben Sie für Application name (Anwendungsname) den Text aws-panorama-sample ein.

  5. WählenFortfahren mit der Bereitstellung.

  6. WählenStarten der Bereitstellung.

  7. WählenWeiterohne eine Rolle auszuwählen.

  8. WählenWählen Sie ein Gerät, und wählen Sie dann Ihr Gerät aus. Wählen Sie Next (Weiter).

  9. Auf derWählen Sie DatenquellenSchritt, wähleEingabe (s) anzeigenund fügen Sie Ihren Kamerastream als Datenquelle hinzu. Wählen Sie Next (Weiter).

  10. Auf derKonfigurationSchritt, wähleWeiter.

  11. WählenBereitstellenund dann wählenFertig.

  12. Wählen Sie in der Liste der bereitgestellten Anwendungenaws-panorama-sample.

Aktualisieren Sie diese Seite für Updates, oder verwenden Sie das folgende Skript, um die Bereitstellung über die Befehlszeile zu überwachen.

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

Wenn die Anwendung nicht gestartet wird, überprüfen Sie dieAnwendungs- und Gerätebei Amazon CloudWatch Logs.

Die Konsolenausgabe anzeigen

Wenn die Bereitstellung abgeschlossen ist, beginnt die Anwendung mit der Verarbeitung des Videostreams und sendet Protokolle an CloudWatch.

So zeigen Sie Logs an CloudWatch Logs (Protokolle)
  1. Öffnen Sie dasSeite „Log Groups“ der CloudWatch -Konsole.

  2. Suchen Sie AWS Panorama Anwendungs- und Appliance-Protokolle in den folgenden Gruppen:

    • Geräteprotokolle/aws/panorama/devices/device-id

    • Anwendungs-Logs/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

Um die Videoausgabe der Anwendung anzuzeigen, schließen Sie das Gerät mit einem HDMI-Kabel an einen Monitor an. Standardmäßig zeigt die Anwendung jedes Klassifizierungsergebnis mit einer Konfidenz von mehr als 20% an.

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

Das Beispielmodell umfasst 1000 Klassen, darunter viele Tiere, Lebensmittel und gemeinsame Objekte. Richten Sie Ihre Kamera auf eine Tastatur oder eine Kaffeetasse.

Eine Kaffeetasse mit Erkennungstext.

Der Einfachheit halber verwendet die Beispielanwendung ein leichtgewichtiges Klassifizierungsmodell. Das Modell gibt ein einzelnes Array mit einer Wahrscheinlichkeit für jede seiner Klassen aus. Reale Anwendungen verwenden häufiger Objekterkennungsmodelle mit mehrdimensionaler Ausgabe. Beispielanwendungen mit komplexeren Modellen finden Sie unterBeispielanwendungen, Skripte und Vorlagen.

Aktivieren des SDK für Python

Die Beispielanwendung verwendet dasAWS SDK for Python (Boto)um Metriken an Amazon zu senden CloudWatch. Um diese Funktionalität zu aktivieren, erstellen Sie eine Rolle, die der Anwendung die Berechtigung zum Senden von Metriken erteilt, und stellen Sie die Anwendung mit der zugewiesenen Rolle erneut bereit.

Die Beispielanwendung umfasst einAWS CloudFormationVorlage, die eine Rolle mit den erforderlichen Berechtigungen erstellt. Um die Rolle anzulegen, verwenden Sie dasaws cloudformation deploybefehlen.

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

So stellen Sie die Anwendung erneut bereit
  1. Öffnen Sie die AWS Panorama Panorama-KonsoleSeite „Bereitgestellte Anwendungen.

  2. Wählen Sie eine Anwendung aus.

  3. Wählen Sie Replace (Ersetzen) aus.

  4. Führen Sie die Schritte zum Bereitstellen der Anwendung aus. In derAuswählen der IAM-Rolle, wählen Sie die Rolle aus, die Sie erstellt haben. Ihr Name beginnt mit aws-panorama-sample-runtime.

  5. Wenn die Bereitstellung abgeschlossen ist, öffnen Sie dieCloudWatchKonsoleund sehen Sie sich die Metriken imAWSPanoramaApplication-Namespace Alle 150 Frames protokolliert und lädt die Anwendung Metriken für die Frame-Verarbeitung und die Inferenzzeit hoch.

Bereinigen

Wenn Sie mit der Arbeit mit der Beispielanwendung fertig sind, können Sie sie mithilfe der AWS Panorama Panorama-Konsole aus der Appliance entfernen.

So entfernen Sie die Anwendung von der Appliance
  1. Öffnen Sie die AWS Panorama Panorama-KonsoleSeite „Bereitgestellte Anwendungen.

  2. Wählen Sie eine Anwendung aus.

  3. WählenLöschen vom Gerät.

Nächste Schritte

Wenn beim Bereitstellen oder Ausführen der Beispielanwendung Fehler aufgetreten sind, finden Sie weitere Informationen unterFehlerbehebung.

Weitere Informationen zu den Funktionen und der Implementierung der Beispielanwendung finden Sie unterdas nächste Thema.