

終止支援通知：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)。您可以在大約一小時內設定裝置、更新其軟體，以及部署範例應用程式。若要完成本節中的教學課程，您可以使用 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 應用程式 SDK 執行推論和輸出影片的範例程式碼。範例應用程式包含 CloudFormation 範本和指令碼，說明如何從命令列自動化開發和部署工作流程。

本章的最後兩個主題詳細說明[了模型和攝影機的需求](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 中編寫應用程式程式碼，並使用 Docker 建置應用程式容器。您可以使用 AWS Panorama Application CLI，從本機或從 Amazon Simple Storage Service (Amazon S3) 匯入機器學習模型。應用程式使用 AWS Panorama 應用程式開發套件接收攝影機的視訊輸入，並與模型互動。

**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 Appliance 是[採用 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 註冊和管理相容的裝置，並以相同的方式建置和部署應用程式。

****
+ [Lenovo 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 開發套件將結果傳送至 AWS 服務。

若要建置和部署應用程式，您可以使用 AWS Panorama 應用程式 CLI。AWS Panorama Application CLI 是一種命令列工具，可產生預設應用程式資料夾和組態檔案、使用 Docker 建置容器，以及上傳資產。您可以在一個裝置上執行多個應用程式。

如需詳細資訊，請參閱[管理 AWS Panorama 應用程式](panorama-applications.md)。

## 節點
<a name="gettingstarted-concepts-node"></a>

應用程式包含多個稱為*節點*的元件，代表輸入、輸出、模型和程式碼。節點只能是組態 （輸入和輸出），或包含成品 （模型和程式碼）。應用程式程式碼節點會封裝在您上傳至 Amazon S3 存取點的*節點套件*中，AWS Panorama Appliance 可以在其中存取它們。*應用程式資訊清單*是定義節點之間連線的組態檔案。

如需詳細資訊，請參閱[應用程式節點](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 設備） – FAT32-formatted的 USB 3.0 隨身碟，具有至少 1 GB 的儲存空間，用於將具有組態檔案和憑證的封存檔傳輸至 AWS Panorama 設備。
+ **攝影機** – 輸出 RTSP 影片串流的 IP 攝影機。

使用相機製造商提供的工具和指示來識別相機的 IP 地址和串流路徑。您可以使用 [VLC](https://www.videolan.org/) 等影片播放器，將其開啟為網路媒體來源來驗證串流 URL：

![\[\]](http://docs.aws.amazon.com/zh_tw/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 Appliance 是一種硬體裝置，可透過本機網路連線連線至已啟用網路的攝影機。它使用以 Linux 為基礎的作業系統，其中包含 AWS Panorama 應用程式 SDK 和支援執行電腦視覺應用程式的軟體。

若要連線至 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/zh_tw/panorama/latest/dev/images/setup-name.png)

1. 如果您需要手動指派 IP 地址、NTP 伺服器或 DNS 設定，請選擇**進階網路設定**。否則請選擇 **Next (下一步)**。/

1. 選擇**下載封存**。選擇 **Next (下一步)**。

1. 將組態封存複製到 USB 磁碟機的根目錄。

1. 將 USB 隨身碟連接到設備正面的 USB 3.0 連接埠，HDMI 連接埠旁。

   當您連接 USB 隨身碟時，設備會將組態封存檔和網路組態檔案複製到本身，並連接到 AWS 雲端。設備的狀態指示燈會在完成連線時從綠色變成藍色，然後回到綠色。

1. 若要繼續，請選擇 **Next (下一步)**。  
![\[\]](http://docs.aws.amazon.com/zh_tw/panorama/latest/dev/images/setup-poweron.png)

1. 選擇**完成**。

## 升級設備軟體
<a name="gettingstarted-upgrade"></a>

AWS Panorama Appliance 有數個軟體元件，包括 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/zh_tw/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/zh_tw/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 設備或相容裝置](gettingstarted-setup.md)並升級其軟體之後，請部署範例應用程式。在下列各節中，您可以使用 AWS Panorama Application CLI 匯入範例應用程式，並使用 AWS Panorama 主控台部署該應用程式。

範例應用程式使用機器學習模型來分類來自網路攝影機的影片影格中的物件。它使用 AWS Panorama 應用程式 SDK 載入模型、取得影像，以及執行模型。然後，應用程式會將結果疊加在原始影片上，並將其輸出到連接的顯示器。

在零售設定中，分析流量模式可讓您預測流量層級。透過將分析與其他資料結合，您可以針對假日和其他事件的更多人員配置需求進行規劃、測量廣告和銷售促銷的有效性，或最佳化顯示器配置和庫存管理。

**Topics**
+ [先決條件](#gettingstarted-deploy-prerequisites)
+ [匯入範例應用程式](#gettingstarted-deploy-import)
+ [部署應用程式](#gettingstarted-deploy-deploy)
+ [檢視輸出](#gettingstarted-deploy-view)
+ [啟用適用於 Python 的 SDK](#gettingstarted-deploy-redeploy)
+ [清除](#gettingstarted-deploy-cleanup)
+ [後續步驟](#gettingstarted-deploy-next)

## 先決條件
<a name="gettingstarted-deploy-prerequisites"></a>

為了遵循本指南的程序，您需要命令列終端機或 shell 來執行命令。在程式碼清單中，命令前面會加上提示符號 (\$1)，並在適當時顯示目前目錄的名稱。

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

對於長命令，我們使用逸出字元 (`\`) 將命令分割成多行。

在 Linux 和 macOS 上，使用您偏好的 shell 和套件軟體管理工具。在 Windows 10 上，您可以[安裝適用於 Linux 的 Windows 子系統](https://docs.microsoft.com/en-us/windows/wsl/install-win10)，以取得 Ubuntu 和 Bash 的 Windows 整合版本。如需在 Windows 中設定開發環境的說明，請參閱 [在 Windows 中設定開發環境](applications-devenvwindows.md)。

您可以使用 Python 開發 AWS Panorama 應用程式，並使用 Python 套件管理員 pip 安裝工具。如果您還沒有 Python，[請安裝最新版本](https://www.python.org/downloads/)。如果您有 Python 3 但沒有 pip，請使用作業系統的套件管理員安裝 pip，或安裝隨 pip 提供的 Python 新版本。

在本教學課程中，您會使用 Docker 建置執行應用程式程式碼的容器。從 Docker 網站安裝 Docker：[取得 Docker](https://docs.docker.com/get-docker/)

本教學課程使用 AWS Panorama 應用程式 CLI 來匯入範例應用程式、建置套件和上傳成品。AWS Panorama Application CLI 使用 AWS Command Line Interface (AWS CLI) 呼叫服務 API 操作。如果您已有 AWS CLI，請將其升級至最新版本。若要安裝 AWS Panorama 應用程式 CLI 和 AWS CLI，請使用 `pip`。

```
$ pip3 install --upgrade awscli panoramacli
```

下載範例應用程式，並將其擷取到您的工作區。

****
+ **應用程式範例** – [aws-panorama-sample.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 Application CLI。應用程式資料夾和資訊清單包含預留位置帳戶號碼的參考。若要使用您的帳戶號碼更新這些項目，請執行 `panorama-cli import-application`命令。

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

`packages` 目錄中的`SAMPLE_CODE`套件包含應用程式的程式碼和組態，包括使用應用程式基礎映像的 Dockerfile`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 Application 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. 選擇**選取裝置**，然後選擇您的設備。選擇 **Next (下一步)**。

1. 在**選取資料來源**步驟中，選擇**檢視輸入**，然後將攝影機串流新增為資料來源。選擇 **Next (下一步)**。

1. 在**設定**步驟中，選擇**下一步**。

1. 選擇**部署**，然後選擇**完成**。

1. 在部署的應用程式清單中，選擇 **aws-panorama-sample**。

重新整理此頁面以取得更新，或使用下列指令碼從命令列監控部署。

**Example 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": {}
    }
]
...
```

如果應用程式未開始執行，請檢查 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 [squeezenet\$1classes.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/zh_tw/panorama/latest/dev/images/mug.jpg)


為了簡化，範例應用程式使用輕量型分類模型。模型會輸出單一陣列，並具有其每個類別的機率。真實世界應用程式更頻繁地使用具有多維度輸出的物件偵測模型。如需使用更複雜模型的範例應用程式，請參閱[應用程式、指令碼和範本範例](panorama-samples.md)。

## 啟用適用於 Python 的 SDK
<a name="gettingstarted-deploy-redeploy"></a>

範例應用程式使用 適用於 Python (Boto) 的 AWS SDK 將指標傳送至 Amazon CloudWatch。若要啟用此功能，請建立 角色，授予應用程式傳送指標的許可，並在連接角色的情況下重新部署應用程式。

範例應用程式包含 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. 選擇 **Replace** (取代)。

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/zh_tw/panorama/latest/dev/images/sample-app.png)


在此範例中，應用程式使用 AWS Panorama 應用程式開發套件從攝影機取得影片影格、預先處理影片資料，並將資料傳送至偵測物件的電腦視覺模型。應用程式會在連接至設備的 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>

應用程式資訊清單是在 `graph.json` `graphs` 資料夾中名為 的檔案。資訊清單會定義應用程式的元件，即套件、節點和邊緣。

套件是應用程式程式碼、模型、攝影機和顯示器的程式碼、組態和二進位檔案。範例應用程式使用 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"
            }
        ],
```

前兩個套件是在 `packages`目錄中的應用程式內定義。它們包含此應用程式特定的程式碼和模型。第二個套件是 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` – 攝影機節點**  

```
            {
                "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. 選擇 **Replace** (取代)。

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) 拍攝的影像數量`1,3,512,512`、每個影像中的通道數量 (3-紅色、綠色和藍色），以及影像的維度 (512 x 512)。陣列的值和順序因模型而異。

1. 使用 AWS Panorama 應用程式 CLI 匯入模型。AWS Panorama Application 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>

在應用程式將映像傳送至模型之前，它會調整其大小並正規化顏色資料，以準備進行推論。應用程式使用的模型需要具有三個顏色通道的 224 x 224 像素影像，以符合其第一層中的輸入數目。應用程式透過將其轉換為介於 0 到 1 之間的數字、減去該顏色的平均值，然後除以標準差來調整每個顏色值。最後，它會結合顏色通道，並將其轉換為模型可以處理的 NumPy 陣列。

**Example https：//[application.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 https：//[application.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-sample.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/
```

範例應用程式會使用 pip 安裝適用於 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 Appliance 等邊緣裝置。

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 視訊串流。對於大於 200 萬像素的攝影機串流，設備會將影像縮減至 1920x1080 像素，或保留串流長寬比的同等大小。

下列攝影機模型已通過與 AWS Panorama 設備的相容性測試：
+ [軸](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** - 半球 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) 搭配 32GB RAM  | 
|  乙太網路  |  2x 1000 Base-T (Gigabyte)  | 
|  USB  |  1 個 USB 2.0 和 1 個 USB 3.0 Type-A 母頭  | 
|  HDMI 輸出  |  2.0a  | 
|  維度  |  7.75 英吋 x 9.6 英吋 x 1.6 英吋 (197 公釐 x 243 公釐 x 40 公釐）  | 
|  Weight  |  3.7 磅 (1.7 公斤）  | 
|  電源供應器  |  100V-240V 50-60Hz AC 65W  | 
|  電源輸入  |  IEC 60320 C6 (3 接腳） 插座  | 
|  灰塵和液體保護  |  IP-62  | 
|  EMI/EMC 法規合規  |  FCC Part-15 （美國）   | 
|  熱觸控限制  |  IEC-62368  | 
|  操作溫度  |  -20°C 到 60°C  | 
|  操作濕度  |  0% 到 95% RH  | 
|  儲存溫度  |  -20°C 到 85°C  | 
|  儲存濕度  |  無法控制低溫。90% RH，在高溫下   | 
|  冷卻  |  強制空氣熱擷取 （風扇）  | 
|  安裝選項  |  Rackmount 或獨立  | 
|  電源線  |  6 英尺 (1.8 公尺）  | 
|  電源控制  |  按鈕  | 
|  Reset  |  瞬間切換  | 
|  狀態和網路 LEDs  |  可程式設計的 3 顏色 RGB LED  | 

Wi-Fi、藍牙和 SD 卡儲存存在於設備上，但無法使用。

AWS Panorama 設備包含兩個螺絲，用於安裝在伺服器機架上。您可以在 19 英吋機架上side-by-side掛兩個設備。

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

AWS Panorama 會將配額套用至您在帳戶中建立的資源，以及您部署的應用程式。如果您在多個 AWS 區域中使用 AWS Panorama，配額會分別套用至每個區域。AWS Panorama 配額無法調整。

AWS Panorama 中的資源包括裝置、應用程式節點套件和應用程式執行個體。

****
+ **裝置** – 每個區域最多 50 個已註冊的設備。
+ **節點套件** – 每個區域 50 個套件，每個套件最多 20 個版本。
+ **應用程式執行個體** – 每個裝置最多 10 個應用程式。每個應用程式最多可監控 8 個攝影機串流。每個裝置的部署限制為每天 200 個。

當您搭配 AWS Panorama 服務使用 AWS Panorama 應用程式 CLI AWS Command Line Interface或 AWS SDK 時，配額會套用至您進行的 API 呼叫數量。您每秒最多可以提出 5 個請求。建立或修改資源的 API 操作子集會套用每秒 1 個請求的額外限制。

如需配額的完整清單，請造訪 [Service Quotas 主控台](https://console.aws.amazon.com/servicequotas/home/services/panorama/quotas)，或參閱 中的 [AWS Panorama 端點和配額](https://docs.aws.amazon.com/general/latest/gr/panorama.html) Amazon Web Services 一般參考。