翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 サブシステムをインストール
Python を使用して AWS Panorama アプリケーションを開発し、Python のパッケージマネージャーである pip でツールをインストールします。まだ 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-サンプル.zip
サンプルアプリケーションをインポートする
サンプルアプリケーションをインポートしてアカウントで使用するには、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 コンソールを使用して、アプリケーションをアプライアンスにデプロイします。
アプリケーションをデプロイするには
AWS Panorama コンソールの [デプロイされたアプリケーション] ページ
を開きます。 -
[アプリケーションをデプロイ] を選択します。
-
アプリケーションマニフェスト、
graphs/aws-panorama-sample/graph.json
の内容をテキストエディタに貼り付けます。[Next] (次へ) をクリックします。 -
[アプリケーション名] には
aws-panorama-sample
と入力します。 -
[デプロイに進む] を選択します。
-
[デプロイを開始] を選択します。
-
ロールを選択せずに [次へ] を選択します。
-
[デバイスを選択]を選択し、次にアプライアンスを選択します。[Next] (次へ) をクリックします。
-
「データソースを選択」 ステップで、「入力を表示」を選択し、カメラストリームをデータソースとして追加します。[Next] (次へ) をクリックします。
-
[設定)] ステップで、[次へ] を選択します。
-
[デプロイ] を選択してから、[完了] を選択します。
-
デプロイされたアプリケーションのリストで [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 でログを表示する
-
CloudWatch Logs コンソールの [[ロググループ] ページ
] を開きます。 -
次のグループで 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
アプリケーションを再デプロイするには
AWS Panorama コンソールの [デプロイされたアプリケーション] ページ
を開きます。 アプリケーションを選択します。
-
[Replace (置換)]を選択します。
-
アプリケーションを実行するには、手順に従います。[IAM ロールを指定] で、作成したロールを選択します。名前が
aws-panorama-sample-runtime
で始まるものです。 -
デプロイが完了したら、CloudWatch コンソール
を開き、 AWSPanoramaApplication
名前空間のメトリックスを表示します。150 フレームごとに、アプリケーションはフレーム処理と推論時間のメトリクスを記録してアップロードします。
クリーンアップ
サンプルアプリケーションの操作が終了したら、AWS Panorama コンソールを使用してアプライアンスから削除できます。
アプライアンスからアプリケーションを削除するには
AWS Panorama コンソールの [デプロイされたアプリケーション] ページ
を開きます。 アプリケーションを選択します。
-
[デバイスから削除] を選択します。
次のステップ
サンプルアプリケーションのデプロイまたは実行中にエラーが発生した場合は、トラブルシューティング を参照してください。
サンプルアプリケーションの機能と実装について詳しくは、次のトピックに進んでください。