AWS Panorama サンプルアプリケーションのデプロイ - AWS Panorama

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Panorama サンプルアプリケーションのデプロイ

AWS Panorama Appliance または互換デバイスをセットアップし、ソフトウェアをアップグレードしたら、サンプルアプリケーションをデプロイします。以下のセクションでは、AWS Panorama アプリケーション CLI を使用してサンプルアプリケーションをインポートし、AWS Panorama コンソールでデプロイします。

サンプルアプリケーションでは、機械学習モデルを使用して、ネットワークカメラからのビデオフレーム内のオブジェクトを分類します。AWS Panorama アプリケーション SDK を使用してモデルの読み込み、画像の取得、モデルの実行を行います。次に、アプリケーションは結果を元の動画の上に重ねて表示し、接続されたディスプレイに出力します。

小売店では、人の往来パターンを分析することでトラフィック量を予測できます。この分析を他のデータと組み合わせることで、休日やその他のイベント前後の人員配置ニーズの増加を計画したり、広告や販売促進の効果を測定したり、ディスプレイの配置や在庫管理を最適化したりできます。

前提条件

このチュートリアルの手順に従うには、コマンドを実行するコマンドラインターミナルまたはシェルが必要になります。コード一覧では、コマンドは、該当する場合、プロンプト記号 ($) と現在のディレクトリの名前が前に付けられています。

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

コマンドが長い場合は、エスケープ文字 (\) を使用してコマンドを複数行に分割します。

Linux および macOS では、任意のシェルとパッケージマネージャーを使用します。Windows 10 では、Linux 用の Windows サブシステムをインストールして、Windows 統合バージョンの Ubuntu および Bash を入手できます。Windows での開発環境の設定方法については、Windows 開発環境でのセットアップ を参照してください。

Python を使用して AWS Panorama アプリケーションを開発し、Python のパッケージマネージャーである pip でツールをインストールします。まだ Python がインストールされていない場合は、最新バージョンをインストールしてください。Python 3 がありピップはない場合は、オペレーティングシステムのパッケージマネージャーでピップをインストールするか、ピップに付属の新しいバージョンの Python をインストールしてください。

このチュートリアルでは、ドッカーを使用してアプリケーションコードを実行するコンテナを構築します。Docker は、Docker ウェブサイトの「Docker の入手」からインストールします。

このチュートリアルでは、AWS Panorama アプリケーション CLI を使用してサンプルアプリケーションのインポート、パッケージのビルド、アーティファクトのアップロードを行います。AWS Panorama アプリケーション CLI は、AWS Command Line Interface (AWS CLI) を使用してサービス API オペレーションを呼び出します。AWS CLI をすでにインストールしている場合、最新バージョンにアップグレードします。AWS Panorama アプリケーション CLI およびAWS CLI をインストールするには、pip を使用してください。

$ pip3 install --upgrade awscli panoramacli

サンプルアプリケーションをダウンロードし、ワークスペースに抽出します。

サンプルアプリケーションをインポートする

サンプルアプリケーションをインポートしてアカウントで使用するには、AWS Panorama アプリケーション CLI を使用します。アプリケーションのフォルダとマニフェストには、プレースホルダーのアカウント番号への参照が含まれています。これらをアカウント番号で更新するには、panorama-cli import-application コマンドを実行します。

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

packages ディレクトリ内のSAMPLE_CODE パッケージには、アプリケーションのベースイメージ、panorama-application を使用するドッカーファイルなど、アプリケーションのコードと構成が含まれています。アプライアンス上で動作するアプリケーションコンテナを構築するには、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

AWS Panorama アプリケーション CLI の最後のステップは、アプリケーションのコードとモデルノードを登録し、サービスが提供する Amazon S3 アクセスポイントにアセットをアップロードすることです。アセットには、コードのコンテナイメージ、モデル、およびそれぞれの記述子ファイルが含まれます。ノードを登録してアセットをアップロードするには、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

アプリケーションのデプロイ

AWS Panorama コンソールを使用して、アプリケーションをアプライアンスにデプロイします。

アプリケーションをデプロイするには
  1. AWS Panorama コンソールの [デプロイされたアプリケーション] ページを開きます。

  2. [アプリケーションをデプロイ] を選択します。

  3. アプリケーションマニフェスト、graphs/aws-panorama-sample/graph.json の内容をテキストエディタに貼り付けます。[Next] (次へ) をクリックします。

  4. [アプリケーション名] にはaws-panorama-sampleと入力します。

  5. [デプロイに進む] を選択します。

  6. [デプロイを開始] を選択します。

  7. ロールを選択せずに [次へ] を選択します。

  8. [デバイスを選択]を選択し、次にアプライアンスを選択します。[Next] (次へ) をクリックします。

  9. 「データソースを選択」 ステップで、「入力を表示」を選択し、カメラストリームをデータソースとして追加します。[Next] (次へ) をクリックします。

  10. [設定)] ステップで、[次へ] を選択します。

  11. [デプロイ] を選択してから、[完了] を選択します。

  12. デプロイされたアプリケーションのリストで [aws-panorama-サンプル] を選択します。

このページを更新して更新を確認するか、次のスクリプトを使用してコマンドラインからデプロイを監視してください。

例 モニター-デプロイメント.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": {} } ] ...

アプリケーションが起動しない場合は、Amazon CloudWatch Logs のアプリケーションログとデバイスログを確認してください。

出力の表示

デプロイが完了すると、アプリケーションはビデオストリームの処理を開始し、CloudWatch にログを送信します。

CloudWatch Logs でログを表示する
  1. CloudWatch Logs コンソールの [[ロググループ] ページ] を開きます。

  2. 次のグループで AWS Panorama アプリケーションログとアプライアンスログを検索します:

    • デバイスログ/aws/panorama/devices/device-id

    • アプリケーションログ/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

アプリケーションのビデオ出力を表示するには、HDMI ケーブルでアプライアンスをモニターに接続します。デフォルトでは、信頼度が 20% を超える分類結果がアプリケーションに表示されます。

スクイーズネット_クラス.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", ...

サンプルモデルには、多くの動物、食べ物、一般的なオブジェクトを含む 1000 のクラスがあります。キーボードやコーヒーマグにカメラを向けてみてください。

検出テキスト付きのコーヒーマグ。

簡単にするために、サンプルアプリケーションでは軽量の分類モデルを使用しています。このモデルは、各クラスの確率を含む 1 つの配列を出力します。実際のアプリケーションでは、多次元出力のオブジェクト検出モデルがより頻繁に使用されます。より複雑なモデルを使用するサンプルアプリケーションについては、サンプルアプリケーション、スクリプト、テンプレート を参照してください。

SDK for Python を有効にする

サンプルアプリケーションは AWS SDK for Python (Boto) を使用して Amazon CloudWatch にメトリクスをアップロードします。この機能を有効にするには、メトリックスを送信する権限をアプリケーションに付与するロールを作成し、そのロールをアタッチした状態でアプリケーションを再デプロイします。

サンプルアプリケーションには、必要な権限を持つロールを作成する AWS CloudFormation テンプレートが含まれています。ロールを作成するには、aws cloudformation deploy コマンドを使用します。

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

アプリケーションを再デプロイするには
  1. AWS Panorama コンソールの [デプロイされたアプリケーション] ページを開きます。

  2. アプリケーションを選択します。

  3. Replace (置換)]を選択します。

  4. アプリケーションを実行するには、手順に従います。[IAM ロールを指定] で、作成したロールを選択します。名前が aws-panorama-sample-runtime で始まるものです。

  5. デプロイが完了したら、CloudWatch コンソールを開き、AWSPanoramaApplication 名前空間のメトリックスを表示します。150 フレームごとに、アプリケーションはフレーム処理と推論時間のメトリクスを記録してアップロードします。

クリーンアップ

サンプルアプリケーションの操作が終了したら、AWS Panorama コンソールを使用してアプライアンスから削除できます。

アプライアンスからアプリケーションを削除するには
  1. AWS Panorama コンソールの [デプロイされたアプリケーション] ページを開きます。

  2. アプリケーションを選択します。

  3. [デバイスから削除] を選択します。

次のステップ

サンプルアプリケーションのデプロイまたは実行中にエラーが発生した場合は、トラブルシューティング を参照してください。

サンプルアプリケーションの機能と実装について詳しくは、次のトピックに進んでください。