

サポート終了通知: 2026 年 5 月 31 日、 AWS は のサポートを終了します AWS Panorama。2026 年 5 月 31 日以降、 AWS Panorama コンソールまたは AWS Panorama リソースにアクセスできなくなります。詳細については、[AWS Panorama 「サポート終了](https://docs.aws.amazon.com/panorama/latest/dev/panorama-end-of-support.html)」を参照してください。

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

# の開始方法 AWS Panorama
<a name="panorama-gettingstarted"></a>

の使用を開始するには AWS Panorama、まず[サービスの概念](gettingstarted-concepts.md)と、このガイドで使用されている用語について学習します。その後、 AWS Panorama コンソールを使用して[AWS Panorama アプライアンスを登録](gettingstarted-setup.md)し、[アプリケーションを作成できます](gettingstarted-deploy.md)。約 1 時間で、デバイスの設定、ソフトウェアの更新、サンプルアプリケーションのデプロイを行うことができます。このセクションのチュートリアルを完了するには、 AWS Panorama アプライアンスと、ローカルネットワーク経由でビデオをストリーミングするカメラを使用します。

**注記**  
 AWS Panorama アプライアンスを購入するには、 [AWS Panorama コンソール](https://console.aws.amazon.com/panorama/home#get-device-quote)にアクセスします。

[AWS Panorama サンプルアプリケーション](gettingstarted-sample.md)は、 AWS Panorama 機能の使用方法を示しています。これには、SageMaker AI でトレーニングされたモデルと、 AWS Panorama Application SDK を使用して推論を実行し、ビデオを出力するサンプルコードが含まれています。サンプルアプリケーションには、コマンドラインから開発およびデプロイワークフローを自動化する方法を示す CloudFormation テンプレートとスクリプトが含まれています。

この章の最後の 2 つのトピックでは、[モデルとカメラの要件](gettingstarted-compatibility.md)、および[AWS Panorama アプライアンスのハードウェア仕様](gettingstarted-hardware.md)について詳しく説明します。アプライアンスやカメラをまだ入手していない場合や、独自のコンピュータービジョンモデルを開発する計画がある場合は、まずこれらのトピックで詳細を確認してください。

**Topics**
+ [AWS Panorama の概念](gettingstarted-concepts.md)
+ [AWS Panorama アプライアンスのセットアップ](gettingstarted-setup.md)
+ [AWS Panorama サンプルアプリケーションのデプロイ](gettingstarted-deploy.md)
+ [AWS Panorama アプリケーションの開発](gettingstarted-sample.md)
+ [サポートされているコンピュータービジョンモデルとカメラ](gettingstarted-compatibility.md)
+ [AWS Panorama アプライアンスの仕様](gettingstarted-hardware.md)
+ [Service Quotas](gettingstarted-quotas.md)

# AWS Panorama の概念
<a name="gettingstarted-concepts"></a>

AWS Panorama では、コンピュータビジョンアプリケーションを作成し、それを AWS Panorama アプライアンスまたは互換性のあるデバイスにデプロイして、ネットワークカメラからのビデオストリームを分析します。Python でアプリケーションコードを記述し、ドッカーを使用してアプリケーションコンテナを構築します。AWS Panorama アプリケーション CLI を使用して、機械学習モデルをローカルまたは Amazon Simple Storage Service (Amazon S3) からインポートします。アプリケーションは AWS Panorama アプリケーション SDK を使用してカメラからのビデオ入力を受信し、モデルと対話します。

**Topics**
+ [AWS Panorama アプライアンス](#gettingstarted-concepts-appliance)
+ [互換性のあるデバイス](#gettingstarted-concepts-devices)
+ [アプリケーション](#gettingstarted-concepts-application)
+ [ノード](#gettingstarted-concepts-node)
+ [モデル](#gettingstarted-concepts-model)

## AWS Panorama アプライアンス
<a name="gettingstarted-concepts-appliance"></a>

AWS Panorama アプライアンスはアプリケーションを実行するハードウェアです。アプライアンスの登録、ソフトウェアの更新、アプリケーションのデプロイを行うために AWS Panorama コンソールを使用します。AWS Panorama アプライアンスのソフトウェアは、カメラストリームに接続し、ビデオフレームをアプリケーションに送信し、付属のディスプレイにビデオ出力を表示します。

AWS Panorama アプライアンスは [Nvidia Jetson AGX Xavier を搭載した](gettingstarted-hardware.md)エッジデバイスです。クラウドにイメージを送信して AWS 処理する代わりに、最適化されたハードウェアでローカルにアプリケーションを実行します。これにより、動画をリアルタイムで分析し、結果をローカルで処理できます。アプライアンスのステータスの報告、ログのアップロード、およびソフトウェアの更新とデプロイを行うには、インターネット接続が必要です。

詳細については、「[AWS Panorama アプライアンスの管理](panorama-appliance.md)」を参照してください。

## 互換性のあるデバイス
<a name="gettingstarted-concepts-devices"></a>

AWS Panorama アプライアンスに加えて、AWS Panorama は AWS パートナーからの互換性のあるデバイスをサポートしています。互換性のあるデバイスは AWS Panorama アプライアンスと同じ機能をサポートします。互換性のあるデバイスを AWS Panorama コンソールと API に登録して管理し、同じ方法でアプリケーションを構築してデプロイします。

****
+ [レノボ ThinkEdge® SE70](https://techtoday.lenovo.com/us/en/solutions/smb/thinkedge) — Nvidia Jetson Xavier NX を搭載

このガイドの内容とサンプルアプリケーションは、AWS Panorama アプライアンスを使用して開発されています。お使いのデバイスの特定のハードウェアおよびソフトウェア機能の詳細については、製造元のドキュメントを参照してください。

## アプリケーション
<a name="gettingstarted-concepts-application"></a>

アプリケーションは AWS Panorama アプライアンス上で動作し、ビデオストリームでコンピュータビジョンタスクを実行します。Python コードと機械学習モデルを組み合わせてコンピュータビジョンアプリケーションを構築し、インターネット経由で AWS Panorama アプライアンスにデプロイできます。アプリケーションはディスプレイに動画を送信したり、AWS SDK を使用して結果を AWS のサービスに送信したりできます。

アプリケーションを構築してデプロイするには、AWS Panorama アプリケーション CLI を使用します。AWS Panorama アプリケーション CLI は、デフォルトのアプリケーションフォルダと構成ファイルの生成、ドッカーによるコンテナの構築、アセットのアップロードを行うコマンドラインツールです。1 つのデバイスで複数のアプリケーションを実行できます。

詳細については、「[AWS Panorama アプリケーションの管理](panorama-applications.md)」を参照してください。

## ノード
<a name="gettingstarted-concepts-node"></a>

アプリケーションは、入力、出力、モデル、コードを表すノードと呼ばれる複数のコンポーネントで構成されます。ノードは構成のみ (入力と出力) でも、アーティファクト (モデルとコード) を含むこともできます。アプリケーションのコードノードはノードパッケージにバンドルされており、Amazon S3 アクセスポイントにアップロードすると、AWS Panorama アプライアンスからアクセスできます。アプリケーションマニフェストは、ノード間の接続を定義する構成ファイルです。

詳細については、「[アプリケーションノード](applications-nodes.md)」を参照してください。

## モデル
<a name="gettingstarted-concepts-model"></a>

コンピュータビジョンモデルは、画像を処理するようにトレーニングされた機械学習ネットワークです。コンピュータビジョンモデルは、分類、検出、セグメンテーション、追跡などのさまざまなタスクを実行できます。コンピュータビジョンモデルは、画像を入力として受け取り、画像または画像内のオブジェクトに関する情報を出力します。

AWS Panorama は PyTorch、Apache MXNet、TensorFlow で構築されたモデルをサポートしています。Amazon SageMaker AI または開発環境でモデルを構築できます。詳細については、「[コンピュータービジョンモデル](applications-models.md)」を参照してください。

# AWS Panorama アプライアンスのセットアップ
<a name="gettingstarted-setup"></a>

AWS Panorama アプライアンスまたは[互換性のあるデバイス](gettingstarted-concepts.md#gettingstarted-concepts-devices)の使用を開始するには、AWS Panorama コンソールに登録し、ソフトウェアを更新します。セットアッププロセス中に、物理アプライアンスを表すアプライアンスリソースを AWS Panorama に作成し、USB ドライブを使用してファイルをアプライアンスにコピーします。アプライアンスはこれらの証明書と設定ファイルを使用して AWS Panorama サービスに接続します。次に、AWS Panorama コンソールを使用してアプライアンスのソフトウェアを更新し、カメラを登録します。

**Topics**
+ [前提条件](#gettingstarted-prerequisites)
+ [AWS Panorama アプライアンスの登録と設定](#gettingstarted-device)
+ [アプライアンスソフトウェアをアップグレードする](#gettingstarted-upgrade)
+ [カメラストリームを追加します](#gettingstarted-setup-camera)
+ [次のステップ](#gettingstarted-setup-nextsteps)

## 前提条件
<a name="gettingstarted-prerequisites"></a>

このチュートリアルを実行するには、AWS Panorama アプライアンスまたは互換性のあるデバイスと、次のハードウェアが必要です。

****
+ **ディスプレイ** — サンプルアプリケーション出力を表示するための HDMI 入力付きディスプレイ。
+ **USB ドライブ** (AWS Panorama アプライアンスに付属) — 設定ファイルと証明書を含むアーカイブを AWS Panorama アプライアンスに転送するための、少なくとも 1 GB のストレージを備えた FAT32 フォーマットの USB 3.0 フラッシュメモリドライブ。
+ **カメラ** — RTSP ビデオストリームを出力する IP カメラ。

カメラの製造元から提供されているツールと説明書を使用して、カメラの IP アドレスとストリームパスを特定します。[VLC](https://www.videolan.org/) などの動画プレーヤーをネットワークメディアソースとして開くと、ストリーム URL を確認できます:

![\[\]](http://docs.aws.amazon.com/ja_jp/panorama/latest/dev/images/vlc-stream.png)


AWS Panorama コンソールは、他の AWS サービスを使用してアプリケーションコンポーネントの組み立て、権限の管理、設定の検証を行います。アプライアンスを登録してサンプルアプリケーションをデプロイするには、以下の権限が必要です。

****
+ [AWSPanoramaFullAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSPanoramaFullAccess) – AWS Panorama、Amazon S3 の AWS Panorama アクセスポイント、 のアプライアンス認証情報 AWS Secrets Manager、Amazon CloudWatch のアプライアンスログへのフルアクセスを提供します。AWS Panorama の[サービスにリンクされたロール](permissions-services.md)を作成する権限が含まれます。
+ **AWS Identity and Access Management (IAM)** – 初回実行時に、AWS Panorama サービスと AWS Panorama アプライアンスで使用されるロールを作成します。

IAM でロールを作成する権限がない場合は、管理者に [AWS Panorama コンソールを開き](https://console.aws.amazon.com/panorama/home)、サービスロールを作成するためのプロンプトを受け入れてもらいます。

## AWS Panorama アプライアンスの登録と設定
<a name="gettingstarted-device"></a>

AWS Panorama アプライアンスは、ローカルネットワーク接続を介してネットワーク対応カメラに接続するハードウェアデバイスです。AWS Panorama Application SDK とコンピュータビジョンアプリケーションを実行するためのサポートソフトウェアを含む Linux ベースのオペレーティングシステムを使用しています。

アプライアンスの管理とアプリケーションのデプロイ AWS のために に接続するために、アプライアンスはデバイス証明書を使用します。AWS Panorama コンソールを使用してプロビジョニング証明書を生成します。アプライアンスはこの一時証明書を使用して初期設定を完了し、永久デバイス証明書をダウンロードします。

**重要**  
この手順で生成するプロビジョニング証明書は 5 分間だけ有効です。この時間内に登録プロセスを完了されない場合は、最初からやり直す必要があります。

**アプライアンスを登録する**

1. コンピュータに USB ドライブを接続します。ネットワークと電源ケーブルを接続してアプライアンスを準備します。アプライアンスの電源が入り、USB ドライブが接続されるのを待ちます。

1. AWS Panorama コンソールの [[はじめに] ページ](https://console.aws.amazon.com/panorama/home#getting-started)を開きます。

1. **デバイスを追加** を選びます。

1. **[セットアップを開始]** を選択します。

1. AWS Panorama でアプライアンスを表すデバイスリソースの名前と説明を入力します。**次へ** を選択します。  
![\[\]](http://docs.aws.amazon.com/ja_jp/panorama/latest/dev/images/setup-name.png)

1. IP アドレス、NTP サーバー、または DNS 設定を手動で割り当てる必要がある場合は、**[ネットワークの詳細設定]** を選択します。それ以外の場合は、**次へ** を選択します。

1. **[アーカイブをダウンロード]** を選択します。**次へ** をクリックします。

1. 設定アーカイブを USB ドライブのルートディレクトリにコピーします。

1. USB ドライブを、アプライアンスの前面、HDMI ポートの横にある USB 3.0 ポートに接続します。

   USB ドライブを接続すると、アプライアンスは設定アーカイブとネットワーク設定ファイルをそれ自体にコピーし、 AWS クラウドに接続します。接続が完了すると、アプライアンスのステータスライトが緑色から青色に変わり、その後緑色に戻ります。

1. 続行するには、**次へ** を選択します。  
![\[\]](http://docs.aws.amazon.com/ja_jp/panorama/latest/dev/images/setup-poweron.png)

1. **完了** をクリックします。

## アプライアンスソフトウェアをアップグレードする
<a name="gettingstarted-upgrade"></a>

AWS Panorama アプライアンスには、Linux オペレーティングシステム、[AWS Panorama アプリケーション SDK](applications-panoramasdk.md)、サポートするコンピュータビジョンライブラリとフレームワークなど、いくつかのソフトウェアコンポーネントがあります。アプライアンスで最新の機能やアプリケーションを確実に使用できるようにするには、セットアップ後、および更新が可能になるたびにソフトウェアをアップデートしてください。

**アプライアンスソフトウェアをアップグレードする**

1. AWS Panorama コンソールの [[デバイス] ページ](https://console.aws.amazon.com/panorama/home#devices)を開きます。

1. アプライアンスを選択します。

1. **[設定]** を選択します。

1. **[システムのソフトウェア]** で **[ソフトウェアのインストール]** を選択します。  
![\[\]](http://docs.aws.amazon.com/ja_jp/panorama/latest/dev/images/setup-upgrade.png)

1. 新しいバージョンを選択し、**[インストール]** を選択します。

**重要**  
続行する前に、USB ドライブをアプライアンスから取り外し、フォーマットして内容を削除します。設定アーカイブには機密データが含まれており、自動的には削除されません。

アップグレードのプロセスは完了までに 30 分以上かかる場合があります。その進行状況は、AWS Panorama コンソールまたは接続されたモニターでモニタリングできます。プロセスが完了すると、アプライアンスは再起動します。

## カメラストリームを追加します
<a name="gettingstarted-setup-camera"></a>

次に、カメラストリームを AWS Panorama コンソールに登録します。

**カメラストリームを登録するには**

1. AWS Panorama コンソールの [[データソース] ページ](https://console.aws.amazon.com/panorama/home#data-sources)を開きます。

1. **[データソースを追加する]** を選択する。  
![\[\]](http://docs.aws.amazon.com/ja_jp/panorama/latest/dev/images/setup-addstream.png)

1. 以下を設定します。

****
   + **名前** — カメラストリームの名前。
   + **説明** — カメラ、その場所、その他の詳細に関する簡単な説明。
   + **RTSP URL** — カメラの IP アドレスとストリームへのパスを指定する URL。例えば、`rtsp://192.168.0.77/live/mpeg4/`
   + **認証情報** — カメラストリームがパスワードで保護されている場合は、ユーザーネームとパスワードを指定します。

1. [**Save**] を選択します。

 AWS Panorama は、カメラの認証情報を安全に に保存します AWS Secrets Manager。複数のアプリケーションが同じカメラストリームを同時に処理できます。

## 次のステップ
<a name="gettingstarted-setup-nextsteps"></a>

セットアップ中にエラーが発生した場合は、「[トラブルシューティング](panorama-troubleshooting.md)」を参照してください。

サンプルアプリケーションをデプロイするには、[次のトピック](gettingstarted-deploy.md)に進んでください。

# AWS Panorama サンプルアプリケーションのデプロイ
<a name="gettingstarted-deploy"></a>

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

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

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

**Topics**
+ [前提条件](#gettingstarted-deploy-prerequisites)
+ [サンプルアプリケーションをインポートする](#gettingstarted-deploy-import)
+ [アプリケーションをデプロイする](#gettingstarted-deploy-deploy)
+ [出力の表示](#gettingstarted-deploy-view)
+ [SDK for Python を有効にする](#gettingstarted-deploy-redeploy)
+ [クリーンアップ](#gettingstarted-deploy-cleanup)
+ [次のステップ](#gettingstarted-deploy-next)

## 前提条件
<a name="gettingstarted-deploy-prerequisites"></a>

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

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

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

Linux および macOS では、任意のシェルとパッケージマネージャーを使用します。Windows 10 では、[Linux 用の Windows サブシステムをインストール](https://docs.microsoft.com/en-us/windows/wsl/install-win10)して、Windows 統合バージョンの Ubuntu および Bash を入手できます。Windows での開発環境の設定方法については、[Windows 開発環境でのセットアップ](applications-devenvwindows.md) を参照してください。

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

このチュートリアルでは、ドッカーを使用してアプリケーションコードを実行するコンテナを構築します。Docker は、Docker ウェブサイトの「[Docker の入手](https://docs.docker.com/get-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](https://github.com/awsdocs/aws-panorama-developer-guide/releases/download/v1.0-ga/aws-panorama-sample.zip)

## サンプルアプリケーションをインポートする
<a name="gettingstarted-deploy-import"></a>

サンプルアプリケーションをインポートしてアカウントで使用するには、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
```

## アプリケーションをデプロイする
<a name="gettingstarted-deploy-deploy"></a>

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

**アプリケーションをデプロイするには**

1. AWS Panorama コンソールの [[デプロイされたアプリケーション] ページ](https://console.aws.amazon.com/panorama/home#deployed-applications)を開きます。

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

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

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

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

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

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

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

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

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

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

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

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

**Example モニター-デプロイメント.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 の[アプリケーションログとデバイスログ](monitoring-logging.md)を確認してください。

## 出力の表示
<a name="gettingstarted-deploy-view"></a>

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

**CloudWatch Logs でログを表示する**

1. CloudWatch Logs コンソールの [[[ロググループ] ページ](https://console.aws.amazon.com/cloudwatch/home#logsV2:log-groups)] を開きます。

1. 次のグループで 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% を超える分類結果がアプリケーションに表示されます。

**Example [スクイーズネット\$1クラス.json](https://github.com/awsdocs/aws-panorama-developer-guide/blob/main/sample-apps/aws-panorama-sample/packages/123456789012-SAMPLE_CODE-1.0/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",
...
```

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

![\[\]](http://docs.aws.amazon.com/ja_jp/panorama/latest/dev/images/mug.jpg)


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

## SDK for Python を有効にする
<a name="gettingstarted-deploy-redeploy"></a>

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

サンプルアプリケーションには、必要なアクセス許可を持つロールを作成する 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 コンソールの [[デプロイされたアプリケーション] ページ](https://console.aws.amazon.com/panorama/home#deployed-applications)を開きます。

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

1. ［**置換**］を選択します。

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

1. デプロイが完了したら、[CloudWatch コンソール](https://console.aws.amazon.com/cloudwatch/home#metricsV2:graph=~();namespace=~'AWSPanoramaApplication)を開き、`AWSPanoramaApplication` 名前空間のメトリックスを表示します。150 フレームごとに、アプリケーションはフレーム処理と推論時間のメトリクスを記録してアップロードします。

## クリーンアップ
<a name="gettingstarted-deploy-cleanup"></a>

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

**アプライアンスからアプリケーションを削除するには**

1. AWS Panorama コンソールの [[デプロイされたアプリケーション] ページ](https://console.aws.amazon.com/panorama/home#deployed-applications)を開きます。

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

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

## 次のステップ
<a name="gettingstarted-deploy-next"></a>

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

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

# AWS Panorama アプリケーションの開発
<a name="gettingstarted-sample"></a>

サンプルアプリケーションを使用して、AWS Panorama アプリケーションの構造について学んだり、独自のアプリケーションの開始点にしたりできます。

次の図表に、AWS Panorama アプライアンスで実行されるアプリケーションの主要なコンポーネントを示します。アプリケーションコードは AWS Panorama アプリケーションSDK を使用して画像を取得し、直接アクセスできないモデルとやり取りします。アプリケーションは接続されたディスプレイに動画を出力しますが、ローカルネットワークの外部には画像データを送信しません。

![\[\]](http://docs.aws.amazon.com/ja_jp/panorama/latest/dev/images/sample-app.png)


この例では、アプリケーションは AWS Panorama アプリケーション SDK を使用してカメラからビデオフレームを取得し、ビデオデータを前処理して、オブジェクトを検出するコンピュータビジョンモデルにデータを送信します。アプリケーションは、アプライアンスに接続された HDMI ディスプレイに結果を表示します。

**Topics**
+ [アプリケーションマニフェスト。](#gettingstarted-sample-manifest)
+ [サンプルアプリケーションでのビルド](#gettingstarted-sample-adapting)
+ [コンピュータービジョンモデルの変更](#gettingstarted-sample-model)
+ [画像の前処理](#gettingstarted-sample-preprocessing)
+ [Python 用 SDK によるメトリクスのアップロード](#gettingstarted-sample-metrics)
+ [次の手順](#gettingstarted-sample-nextsteps)

## アプリケーションマニフェスト。
<a name="gettingstarted-sample-manifest"></a>

アプリケーションマニフェストは、`graphs` フォルダー内の `graph.json` という名前のファイルです。マニフェストは、パッケージ、ノード、エッジなどのアプリケーションのコンポーネントを定義します。

パッケージは、アプリケーションコード、モデル、カメラ、ディスプレイのコード、構成、バイナリファイルです。サンプルアプリケーションは 4 つのパッケージを使用します。

**Example `graphs/aws-panorama-sample/graph.json` - パッケージ**  

```
        "packages": [
            {
                "name": "123456789012::SAMPLE_CODE",
                "version": "1.0"
            },
            {
                "name": "123456789012::SQUEEZENET_PYTORCH_V1",
                "version": "1.0"
            },
            {
                "name": "panorama::abstract_rtsp_media_source",
                "version": "1.0"
            },
            {
                "name": "panorama::hdmi_data_sink",
                "version": "1.0"
            }
        ],
```

最初の 2 つのパッケージは、アプリケーション内の `packages` ディレクトリで定義されています。これらには、このアプリケーション固有のコードとモデルが含まれています。次の 2 つのパッケージは、AWS Panorama サービスが提供する汎用のカメラおよびディスプレイパッケージです。`abstract_rtsp_media_source` パッケージは、デプロイ時にオーバーライドするカメラのプレースホルダーです。`hdmi_data_sink` パッケージはデバイスの HDMI 出力コネクタを表します。

ノードはパッケージへのインターフェースであると同時に、デプロイ時にオーバーライドできるデフォルト値を持つ非パッケージパラメーターのインターフェースでもあります。コードパッケージとモデルパッケージは、ビデオストリームでも、フロート、ブーリアン、文字列などの基本データ型でも、入力と出力を指定する `package.json` ファイル内のインターフェイスを定義します。

たとえば、`code_node` ノードは `SAMPLE_CODE` パッケージのインターフェースを参照します。

```
        "nodes": [
            {
                "name": "code_node",
                "interface": "123456789012::SAMPLE_CODE.interface",
                "overridable": false,
                "launch": "onAppStart"
            },
```

このインターフェースはパッケージ構成ファイル、`package.json` 内で定義されています。このインターフェースは、パッケージがビジネスロジックであり、`video_in` という名前のビデオストリームと `threshold`という名前の浮動小数点数を入力として受け取ることを指定しています。また、このインターフェースでは、ビデオをディスプレイに出力するための `video_out` という名前のビデオストリームバッファがコードに必要であることも指定されています。

**Example `packages/123456789012-SAMPLE_CODE-1.0/package.json`**  

```
{
    "nodePackage": {
        "envelopeVersion": "2021-01-01",
        "name": "SAMPLE_CODE",
        "version": "1.0",
        "description": "Computer vision application code.",
        "assets": [],
        "interfaces": [
            {
                "name": "interface",
                "category": "business_logic",
                "asset": "code_asset",
                "inputs": [
                    {
                        "name": "video_in",
                        "type": "media"
                    },
                    {
                        "name": "threshold",
                        "type": "float32"
                    }
                ],
                "outputs": [
                    {
                        "description": "Video stream output",
                        "name": "video_out",
                        "type": "media"
                    }
                ]
            }
        ]
    }
}
```

アプリケーションマニフェストに戻ると、`camera_node` ノードはカメラからのビデオストリームを表しています。これには、アプリケーションをデプロイするとコンソールに表示され、カメラストリームの選択を促すデコレータが含まれています。

**Example `graphs/aws-panorama-sample/graph.json` – Camera ノード**  

```
            {
                "name": "camera_node",
                "interface": "panorama::abstract_rtsp_media_source.rtsp_v1_interface",
                "overridable": true,
                "launch": "onAppStart",
                "decorator": {
                    "title": "Camera",
                    "description": "Choose a camera stream."
                }
            },
```

パラメータノード `threshold_param` は、アプリケーションコードで使用される信頼度しきい値パラメータを定義します。デフォルト値は 60 で、デプロイ時に上書きできます。

**Example `graphs/aws-panorama-sample/graph.json` — パラメータノード**  

```
            {
                "name": "threshold_param",
                "interface": "float32",
                "value": 60.0,
                "overridable": true,
                "decorator": {
                    "title": "Confidence threshold",
                    "description": "The minimum confidence for a classification to be recorded."
                }
            }
```

アプリケーションマニフェストの最後のセクション `edges` では、ノード間の接続を行います。カメラのビデオストリームとしきい値パラメータはコードノードの入力に接続し、コードノードからのビデオ出力はディスプレイに接続します。

**Example `graphs/aws-panorama-sample/graph.json` - エッジ**  

```
        "edges": [
            {
                "producer": "camera_node.video_out",
                "consumer": "code_node.video_in"
            },
            {
                "producer": "code_node.video_out",
                "consumer": "output_node.video_in"
            },
            {
                "producer": "threshold_param",
                "consumer": "code_node.threshold"
            }
        ]
```

## サンプルアプリケーションでのビルド
<a name="gettingstarted-sample-adapting"></a>

サンプルコードを開始点として使用して、独自のアプリケーションを作成することができます。

各パッケージ名は一意にする必要があります。自分とアカウント内の別のユーザーの両方が `code` や`model` などの汎用パッケージ名を使用している場合、デプロイ時に間違ったバージョンのパッケージが表示される可能性があります。コードパッケージの名前を、自分のアプリケーションを表す名前に変更してください。

**コードパッケージの名前を変更するには**

1. パッケージフォルダーの名前を変更します:`packages/123456789012-SAMPLE_CODE-1.0/`。

1. 次の場所でパッケージ名を更新します。

****
   + **アプリケーションマニフェスト** — `graphs/aws-panorama-sample/graph.json`
   + **パッケージ構成** – `packages/123456789012-SAMPLE_CODE-1.0/package.json`
   + **ビルドスクリプト** — `3-build-container.sh`

**アプリケーションコードを更新するには**

1. `packages/123456789012-SAMPLE_CODE-1.0/src/application.py` でアプリケーションコードを変更します。

1. コンテナを構築するには、`3-build-container.sh` を実行します。

   ```
   aws-panorama-sample$ ./3-build-container.sh
   TMPDIR=$(pwd) docker build -t code_asset packages/123456789012-SAMPLE_CODE-1.0
   Sending build context to Docker daemon  61.44kB
   Step 1/2 : FROM public.ecr.aws/panorama/panorama-application
    ---> 9b197f256b48
   Step 2/2 : COPY src /panorama
    ---> 55c35755e9d2
   Successfully built 55c35755e9d2
   Successfully tagged code_asset:latest
   docker export --output=code_asset.tar $(docker create code_asset:latest)
   gzip -9 code_asset.tar
   Updating an existing asset with the same name
   {
       "name": "code_asset",
       "implementations": [
           {
               "type": "container",
               "assetUri": "98aaxmpl1c1ef64cde5ac13bd3be5394e5d17064beccee963b4095d83083c343.tar.gz",
               "descriptorUri": "1872xmpl129481ed053c52e66d6af8b030f9eb69b1168a29012f01c7034d7a8f.json"
           }
       ]
   }
   Container asset for the package has been succesfully built at  ~/aws-panorama-sample-dev/assets/98aaxmpl1c1ef64cde5ac13bd3be5394e5d17064beccee963b4095d83083c343.tar.gz
   ```

   CLI は古いコンテナアセットを `assets` フォルダから自動的に削除し、パッケージ構成を更新します。

1. パッケージをアップロードするには、`4-package-application.py` を実行します。

1. AWS Panorama コンソールの [[デプロイされたアプリケーション] ページ](https://console.aws.amazon.com/panorama/home#deployed-applications)を開きます。

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

1. ［**置換**］を選択します。

1. アプリケーションを実行するには、手順に従います。必要に応じて、アプリケーションマニフェスト、カメラストリーム、またはパラメータを変更できます。

## コンピュータービジョンモデルの変更
<a name="gettingstarted-sample-model"></a>

サンプルアプリケーションにはコンピュータビジョンモデルが含まれています。独自のモデルを使用するには、モデルノードの構成を変更し、AWS Panorama アプリケーション CLI を使用してアセットとしてインポートします。

次の例では MXNet SSD ResNet50 モデルを使用しています。このモデルは、このガイドの GitHub リポジトリからダウンロードできます。[ssd\$1512\$1resnet50\$1v1\$1voc.tar.gz](https://github.com/awsdocs/aws-panorama-developer-guide/releases/download/v0.1-preview/ssd_512_resnet50_v1_voc.tar.gz)

**サンプルアプリケーションのモデルを変更するには**

1. モデルに合うようにパッケージフォルダーの名前を変更します。たとえば、`packages/123456789012-SSD_512_RESNET50_V1_VOC-1.0/` などにします。

1. 次の場所でパッケージ名を更新します。

****
   + **アプリケーションマニフェスト** — `graphs/aws-panorama-sample/graph.json`
   + **パッケージ構成** – `packages/123456789012-SSD_512_RESNET50_V1_VOC-1.0/package.json`

1. パッケージ構成ファイル (`package.json`) 内。`assets` 値を空白の配列に変更します。

   ```
   {
       "nodePackage": {
           "envelopeVersion": "2021-01-01",
           "name": "SSD_512_RESNET50_V1_VOC",
           "version": "1.0",
           "description": "Compact classification model",
           "assets": [],
   ```

1. パッケージ記述ファイル (`descriptor.json`) を開きます。モデルと一致するように`framework` および`shape` の値を更新します。

   ```
   {
       "mlModelDescriptor": {
           "envelopeVersion": "2021-01-01",
           "framework": "MXNET",
           "inputs": [
               {
                   "name": "data",
                   "shape": [ 1, 3, 512, 512 ]
               }
           ]
       }
   }
   ```

   **シェイプ** の値は `1,3,512,512`、モデルが入力として受け取る画像の数 (1)、各画像のチャネル数 (3–- 赤、緑、青 )、および画像のサイズ (512 x 512) を示します。配列の値と順序はモデルによって異なります。

1. AWS Panorama アプリケーション CLI を使用してモデルをインポートします。AWS Panorama アプリケーション CLI は、モデルファイルと記述子ファイルを一意の名前で `assets` フォルダにコピーし、パッケージ構成を更新します。

   ```
   aws-panorama-sample$ panorama-cli add-raw-model --model-asset-name model-asset \
   --model-local-path ssd_512_resnet50_v1_voc.tar.gz \
   --descriptor-path packages/123456789012-SSD_512_RESNET50_V1_VOC-1.0/descriptor.json \
   --packages-path packages/123456789012-SSD_512_RESNET50_V1_VOC-1.0
   {
       "name": "model-asset",
       "implementations": [
           {
               "type": "model",
               "assetUri": "b1a1589afe449b346ff47375c284a1998c3e1522b418a7be8910414911784ce1.tar.gz",
               "descriptorUri": "a6a9508953f393f182f05f8beaa86b83325f4a535a5928580273e7fe26f79e78.json"
           }
       ]
   }
   ```

1. モデルをアップロードするには、`panorama-cli package-application` を実行します。

   ```
   $ panorama-cli package-application
   Uploading package SAMPLE_CODE
   Patch Version 1844d5a59150d33f6054b04bac527a1771fd2365e05f990ccd8444a5ab775809 already registered, ignoring upload
   Uploading package SSD_512_RESNET50_V1_VOC
   Patch version for the package 244a63c74d01e082ad012ebf21e67eef5d81ce0de4d6ad1ae2b69d0bc498c8fd
   upload: assets/b1a1589afe449b346ff47375c284a1998c3e1522b418a7be8910414911784ce1.tar.gz to s3://arn:aws:s3:us-west-2:454554846382:accesspoint/panorama-123456789012-wc66m5eishf4si4sz5jefhx
   63a/123456789012/nodePackages/SSD_512_RESNET50_V1_VOC/binaries/b1a1589afe449b346ff47375c284a1998c3e1522b418a7be8910414911784ce1.tar.gz
   upload: assets/a6a9508953f393f182f05f8beaa86b83325f4a535a5928580273e7fe26f79e78.json to s3://arn:aws:s3:us-west-2:454554846382:accesspoint/panorama-123456789012-wc66m5eishf4si4sz5jefhx63
   a/123456789012/nodePackages/SSD_512_RESNET50_V1_VOC/binaries/a6a9508953f393f182f05f8beaa86b83325f4a535a5928580273e7fe26f79e78.json
   {
       "ETag": "\"2381dabba34f4bc0100c478e67e9ab5e\"",
       "ServerSideEncryption": "AES256",
       "VersionId": "KbY5fpESdpYamjWZ0YyGqHo3.LQQWUC2"
   }
   Registered SSD_512_RESNET50_V1_VOC with patch version 244a63c74d01e082ad012ebf21e67eef5d81ce0de4d6ad1ae2b69d0bc498c8fd
   Uploading package SQUEEZENET_PYTORCH_V1
   Patch Version 568138c430e0345061bb36f05a04a1458ac834cd6f93bf18fdacdffb62685530 already registered, ignoring upload
   ```

1. アプリケーションコードを更新します。ほとんどのコードは再利用できます。モデルのレスポンスに固有のコードは。`process_results` メソッド内にあります。

   ```
       def process_results(self, inference_results, stream):
           """Processes output tensors from a computer vision model and annotates a video frame."""
           for class_tuple in inference_results:
               indexes = self.topk(class_tuple[0])
           for j in range(2):
               label = 'Class [%s], with probability %.3f.'% (self.classes[indexes[j]], class_tuple[0][indexes[j]])
               stream.add_label(label, 0.1, 0.25 + 0.1*j)
   ```

   モデルに応じて、`preprocess` メソッドを更新する必要があることもあります。

## 画像の前処理
<a name="gettingstarted-sample-preprocessing"></a>

アプリケーションがイメージをモデルに送信する前に、イメージのサイズを変更してカラーデータを正規化することで、イメージを推論できるように準備します。アプリケーションが使用するモデルには、最初のレイヤーの入力数に合わせて、3 つのカラーチャンネルを含む 224 x 224 ピクセルの画像が必要です。アプリケーションは、各色の値を 0 から 1 の間の数値に変換し、その色の平均値を引いて標準偏差で割ることによって調整します。最後に、カラーチャンネルを結合し、モデルが処理できるNumPy 配列に変換します。

**Example [アプリケーション.py](https://github.com/awsdocs/aws-panorama-developer-guide/blob/main/sample-apps/aws-panorama-sample/packages/123456789012-SAMPLE_CODE-1.0/application.py) — 前処理**  

```
    def preprocess(self, img, width):
        resized = cv2.resize(img, (width, width))
        mean = [0.485, 0.456, 0.406]
        std = [0.229, 0.224, 0.225]
        img = resized.astype(np.float32) / 255.
        img_a = img[:, :, 0]
        img_b = img[:, :, 1]
        img_c = img[:, :, 2]
        # Normalize data in each channel
        img_a = (img_a - mean[0]) / std[0]
        img_b = (img_b - mean[1]) / std[1]
        img_c = (img_c - mean[2]) / std[2]
        # Put the channels back together
        x1 = [[[], [], []]]
        x1[0][0] = img_a
        x1[0][1] = img_b
        x1[0][2] = img_c
        return np.asarray(x1)
```

このプロセスにより、0 を中心とした予測可能な範囲内のモデル値が得られます。これはトレーニングデータセット内の画像に適用される前処理と一致します。これは標準的な方法ですが、モデルごとに異なる場合があります。

## Python 用 SDK によるメトリクスのアップロード
<a name="gettingstarted-sample-metrics"></a>

サンプルアプリケーションは Python 用 SDK を使用して Amazon CloudWatch にメトリクスをアップロードします。

**Example [アプリケーション.py](https://github.com/awsdocs/aws-panorama-developer-guide/blob/main/sample-apps/aws-panorama-sample/packages/123456789012-SAMPLE_CODE-1.0/application.py) — Python 用 SDK**  

```
    def process_streams(self):
        """Processes one frame of video from one or more video streams."""
        ...
            logger.info('epoch length: {:.3f} s ({:.3f} FPS)'.format(epoch_time, epoch_fps))
            logger.info('avg inference time: {:.3f} ms'.format(avg_inference_time))
            logger.info('max inference time: {:.3f} ms'.format(max_inference_time))
            logger.info('avg frame processing time: {:.3f} ms'.format(avg_frame_processing_time))
            logger.info('max frame processing time: {:.3f} ms'.format(max_frame_processing_time))
            self.inference_time_ms = 0
            self.inference_time_max = 0
            self.frame_time_ms = 0
            self.frame_time_max = 0
            self.epoch_start = time.time()
            self.put_metric_data('AverageInferenceTime', avg_inference_time)
            self.put_metric_data('AverageFrameProcessingTime', avg_frame_processing_time)
 
    def put_metric_data(self, metric_name, metric_value):
        """Sends a performance metric to CloudWatch."""
        namespace = 'AWSPanoramaApplication'
        dimension_name = 'Application Name'
        dimension_value = 'aws-panorama-sample'
        try:
            metric = self.cloudwatch.Metric(namespace, metric_name)
            metric.put_data(
                Namespace=namespace,
                MetricData=[{
                    'MetricName': metric_name,
                    'Value': metric_value,
                    'Unit': 'Milliseconds',
                    'Dimensions': [
                        {
                            'Name': dimension_name,
                            'Value': dimension_value
                        },
                        {
                            'Name': 'Device ID',
                            'Value': self.device_id
                        }
                    ]
                }]
            )
            logger.info("Put data for metric %s.%s", namespace, metric_name)
        except ClientError:
            logger.warning("Couldn't put data for metric %s.%s", namespace, metric_name)
        except AttributeError:
            logger.warning("CloudWatch client is not available.")
```

デプロイ時に割り当てたランタイムロールから権限を取得します。ロールは `aws-panorama-sample.yml` CloudFormation テンプレートで定義されます。

**Example [aws-panorama-サンプル.yml](https://github.com/awsdocs/aws-panorama-developer-guide/blob/main/sample-apps/aws-panorama-sample/aws-panorama-sample.yml)**  

```
Resources:
  runtimeRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: "2012-10-17"		 	 	 
        Statement:
          -
            Effect: Allow
            Principal:
              Service:
                - panorama.amazonaws.com
            Action:
              - sts:AssumeRole
      Policies:
        - PolicyName: cloudwatch-putmetrics
          PolicyDocument:
            Version: 2012-10-17		 	 	 
            Statement:
              - Effect: Allow
                Action: 'cloudwatch:PutMetricData'
                Resource: '*'
      Path: /service-role/
```

サンプルアプリケーションは、Python 用の SDK とその他の依存関係をピップでインストールします。アプリケーションコンテナをビルドすると、`Dockerfile` はコマンドを実行して、ベースイメージに付属しているものの上にライブラリをインストールします。

**Example [Dockerfile](https://github.com/awsdocs/aws-panorama-developer-guide/blob/main/sample-apps/aws-panorama-sample/packages/123456789012-SAMPLE_CODE-1.0/Dockerfile)**  

```
FROM public.ecr.aws/panorama/panorama-application
WORKDIR /panorama
COPY . .
RUN pip install --no-cache-dir --upgrade pip && \
    pip install --no-cache-dir -r requirements.txt
```

アプリケーションコードで AWS SDK を使用するには、まずテンプレートを変更して、アプリケーションが使用するすべての API アクションのアクセス許可を追加します。変更を行う`1-create-role.sh`たびに を実行して CloudFormation スタックを更新します。次に、変更内容をアプリケーションコードにデプロイします。

既存のリソースを変更または使用するアクションでは、ターゲット `Resource` の名前またはパターンを別のステートメントで指定して、このポリシーの範囲を最小限に抑えるのがベストプラクティスです。各サービスでサポートされているアクションとリソースの詳細については、サービス承認リファレンスの[「アクション、リソース、条件キー」](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html)を参照してください。

## 次の手順
<a name="gettingstarted-sample-nextsteps"></a>

AWS Panorama アプリケーション CLI を使用してアプリケーションをビルドし、パッケージを最初から作成する手順については、CLI の README を参照してください。

****
+ [github.com/aws/aws-panorama-cli](https://github.com/aws/aws-panorama-cli)

デプロイ前にアプリケーションコードを検証するために使用できるその他のサンプルコードとテストユーティリティについては、AWS Panorama サンプルリポジトリをご覧ください。

****
+ [github.com/aws-samples/aws-panorama-samples](https://github.com/aws-samples/aws-panorama-samples)

# サポートされているコンピュータービジョンモデルとカメラ
<a name="gettingstarted-compatibility"></a>

AWS Panorama は PyTorch、Apache MXNet、TensorFlow で構築されたモデルをサポートしています。アプリケーションをデプロイすると、AWS Panorama は SageMaker AI Neo でモデルをコンパイルします。Amazon SageMaker SageMaker AI または開発環境でモデルを構築できます。

動画を処理して画像を取得してモデルに送信するには、AWS Panorama アプライアンスは RTSP プロトコルを使用して H.264 でエンコードされたビデオストリームに接続します。AWS Panorama は、さまざまな一般的なカメラの互換性をテストします。

**Topics**
+ [サポートされているモデル](#gettingstarted-compatibility-models)
+ [サポート対象カメラ](#gettingstarted-compatibility-cameras)

## サポートされているモデル
<a name="gettingstarted-compatibility-models"></a>

AWS Panorama 用のアプリケーションを構築するときは、アプリケーションがコンピュータビジョンに使用する機械学習モデルを提供します。モデルフレームワークによって提供される、事前構築済みでトレーニング済みのモデル、[サンプルモデル](gettingstarted-sample.md#gettingstarted-sample-model)、または自分で構築してトレーニングしたモデルを使用できます。

**注記**  
AWS Panorama でテストされたビルド済みモデルのリストについては、[「モデルの互換性」](https://github.com/awsdocs/aws-panorama-developer-guide/blob/main/resources/model-compatibility.md)を参照してください。

アプリケーションをデプロイすると、AWS Panorama は SageMaker AI Neo コンパイラを使用してコンピュータビジョンモデルをコンパイルします。SageMaker AI Neo は、Amazon Elastic Compute Cloud (Amazon EC2) のインスタンスや AWS Panorama アプライアンスなどのエッジデバイスなど、ターゲットプラットフォームで効率的に実行されるようにモデルを最適化するコンパイラです。

AWS Panorama は、SageMaker AI Neo によってエッジデバイス用にサポートされている PyTorch、Apache MXNet、および TensorFlow のバージョンをサポートしています。独自のモデルを構築するときは、[SageMaker AI Neo リリースノート](https://aws.amazon.com/releasenotes/sagemaker-neo-supported-frameworks-and-operators/)に記載されているフレームワークバージョンを使用できます。SageMaker AI では、組み込みの[イメージ分類アルゴリズム](https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html)を使用できます。

AWS Panorama でのモデルの使用の詳細については、「[コンピュータービジョンモデル](applications-models.md)」を参照してください。

## サポート対象カメラ
<a name="gettingstarted-compatibility-cameras"></a>

AWS Panorama アプライアンスは、ローカルネットワーク経由で RTSP を出力するカメラからの H.264 ビデオストリームをサポートします。2 メガピクセルを超えるカメラストリームの場合、アプライアンスは画像を 1920x1080 ピクセル、またはストリームの縦横比を維持する同等のサイズに縮小します。

以下のカメラモデルは、AWS Panorama アプライアンスとの互換性がテストされています。
+ [Axis](https://www.axis.com/) — M3057-PLVE、M3058-PLVE、P1448-LE、P3225-LV Mk II
+ [LaVIEW](https://www.laviewsecurity.com/) — LV-PB3040W
+ [Vivotek](https://www.vivotek.com/) – IB9360-H
+ [Amcrest](https://amcrest.com/) – IP2M-841B
+ **Anpviz** — IPC-B850W-S-3X、IPC-D250W-S
+ **WGCC** – Dome PoE 4MP ONVIF

アプライアンスのハードウェア仕様については、「[AWS Panorama アプライアンスの仕様](gettingstarted-hardware.md)」を参照してください。

# AWS Panorama アプライアンスの仕様
<a name="gettingstarted-hardware"></a>

AWS Panorama アプライアンスのハードウェア仕様は次のとおりです。その他の[互換性のあるデバイス](gettingstarted-concepts.md#gettingstarted-concepts-devices)については、製造元の説明書をご参照ください。


| コンポーネント |  の仕様 | 
| --- | --- | 
|  プロセッサと GPU  |  [Nvidia Jetson AGX Xavier](https://developer.nvidia.com/embedded/jetson-agx-xavier-developer-kit) (32 GB RAM 搭載)  | 
|  イーサネット  |  1000 Base-T (ギガバイト) x 2  | 
|  USB  |  USB 2.0 x 1 と USB 3.0 タイプ A メス x 1  | 
|  HDMI 出力  |  2.0a  | 
|  ディメンション  |  7.75 インチ x 9.6 インチ x 1.6 インチ (197mm x 243mm x 40mm)  | 
|  重量  |  3.7 ポンド (1.7 kg)  | 
|  電源  |  100V-240V 50-60Hz AC 65W  | 
|  電源入力  |  IEC 60320 C6 (3 ピン) レセプタクル  | 
|  ほこりや液体からの保護  |  IP-62  | 
|  EMI/EMC 規制コンプライアンス  |  FCC Part-15 (米国)   | 
|  サーマル・タッチ・リミット  |  IEC-62368  | 
|  動作温度  |  -20°C ～ 60°C  | 
|  動作時湿度  |  相対湿度 (RH) 0% から 95%  | 
|  保管温度  |  -20°C ～ 85°C  | 
|  保管時の湿度  |  低温では制御されません。高温では相対湿度 (RH) 90%   | 
|  冷却  |  強制空気熱抽出 (ファン)  | 
|  取り付けオプション  |  ラックマウントまたはフリースタンディング  | 
|  電源コード  |  6 フィート (1.8 メートル)  | 
|  電源管理  |  プッシュボタン  | 
|  リセット  |  モーメンタリスイッチ  | 
|  ステータス LED とネットワーク LED  |  プログラム可能な 3 色 RGB LED  | 

Wi-Fi、Bluetooth、SD カードストレージはアプライアンスに搭載されていますが、使用できません。

AWS Panorama アプライアンスには、サーバーラックに取り付けるためのネジが 2 本付属されています。2 つのアプライアンスを並べて 19 インチラックに取り付けることができます。

# Service Quotas
<a name="gettingstarted-quotas"></a>

AWS Panorama は、アカウントで作成したリソースとデプロイするアプリケーションにクォータを適用します。複数の AWS リージョンで AWS Panorama を使用する場合、クォータはリージョンごとに個別に適用されます。AWS Panorama クォータは調整できません。

AWS Panorama のリソースには、デバイス、アプリケーションノードパッケージ、アプリケーションインスタンスが含まれます。

****
+ **デバイス** — 1 リージョンあたり最大 50 件の登録済みアプライアンス。
+ **ノードパッケージ** — 1 リージョンあたり 50 パッケージ、1 パッケージあたり最大 20 バージョン。
+ **アプリケーションインスタンス** — デバイスあたり最大 10 個のアプリケーション。各アプリケーションは最大 8 つのカメラストリームを監視できます。各デバイスのデプロイは 1 日あたり 200 件に制限されています。

AWS Panorama Application CLI AWS Command Line Interface、または AWS Panorama サービスで AWS SDK を使用する場合、実行する API コールの数にクォータが適用されます。1 秒あたり合計 5 回までリクエストできます。リソースを作成または変更する API オペレーションの一部には、1 秒あたり 1 リクエストという追加の制限が適用されます。

クォータの全リストについては、[Service Quotas コンソール](https://console.aws.amazon.com/servicequotas/home/services/panorama/quotas)にアクセスするか、 Amazon Web Services 全般のリファレンスの[AWS Panorama エンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/panorama.html)を参照してください。