部署 AWS Panorama 範例應用程式 - AWS Panorama

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

部署 AWS Panorama 範例應用程式

之後你已經設定 AWS Panorama 設備或相容裝置並升級了其軟件,部署示例應用程序。在以下各節中,您可以使用 AWS Panorama 應用程式 CLI 匯入範例應用程式,並使用 AWS Panorama 主控台進行部署。

範例應用程式使用機器學習模型,將來自網路攝影機的影片框架中的物件分類。它使用 AWS Panorama 應用程式開發套件載入模型、取得映像和執行模型。然後,應用程序將結果覆蓋在原始視頻的頂部,並將其輸出到連接的顯示器。

在零售環境中,分析人流量模式可讓您預測流量水平。透過將分析與其他資料結合在一起,您可以規劃假日和其他活動期間增加的人員配置需求、衡量廣告和促銷活動的有效性,或者最佳化展示位置和庫存管理。

先決條件

為了遵循本指南的程序,您需要命令列終端機或 shell 來執行命令。在清單前,命令前會出現提示字元 (如有)。

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

對於長命令,我們使用轉義字符(\),將指令分割為多行。

在 Linux 和 macOS 上,使用您偏好的 shell 和套件軟體管理工具。在 Windows 10 上,您可以安裝適用於 Linux 的 Windows 子系統,以取得 Ubuntu 和 Bash 的 Windows 整合版本。如需在 Windows 中設定開發環境的說明,請參閱在 Windows 中設置開發環境

您可以使用 Python 開發 AWS Panorama 應用程式,並使用 Python 套件管理員 pip 來安裝工具。如果您還沒有 Python,安裝最新版本。如果您有 Python 3 而不是 pip,請使用操作系統的軟件包管理器安裝 pip,或者安裝帶有 pip 的新版本的 Python。

在本教學課程中,您會使用 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

所以此SAMPLE_CODE套件,在packages目錄中,包含應用程序的代碼和配置,包括使用應用程序基礎映像的 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 應用程式 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. Application name (應用程式名稱) 中,輸入 aws-panorama-sample

  5. 選擇繼續部署

  6. 選擇開始部署

  7. 選擇下一頁而不選擇角色。

  8. 選擇選擇裝置,然後選擇您的設備。選擇 Next (下一步)。

  9. 在「」選取資料來源步驟,選擇檢視輸入,並將您的攝影機串流新增為資料來源。選擇 Next (下一步)。

  10. 在「」設定步驟,選擇下一頁

  11. 選擇部署,然後選擇已完成

  12. 在已部署的應用程式清單中,選擇aws-panorama-sample

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

範例 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 日誌。

檢視輸出

部署完成後,應用程式會開始處理視訊串流,並將記錄檔傳送至 CloudWatch。

若要檢視日誌 CloudWatch 日誌
  1. 開啟的日誌群組頁面 CloudWatch 日誌主控台

  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 個類別,包括許多動物,食物和常見物體。嘗試將相機指向鍵盤或咖啡杯。

帶有檢測文本的咖啡杯。

為了簡化,範例應用程式使用輕量型分類模型。該模型輸出與其每個類的概率的單個數組。現實世界的應用程式更頻繁地使用具有多維輸出的物體偵測模型。如需具有更複雜模型的範例應用程式,請參閱範例應用程式、指令碼和範本

啟用適用於 Python 的軟體開發套件

範例應用程式會使用AWS SDK for Python (Boto)將指標發送到亞馬遜 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. 選擇從裝置刪除

後續步驟

如果您在部署或執行範例應用程式時遇到錯誤,請參閱疑難排解

若要進一步瞭解範例應用程式的功能和實作,請繼續:下一主題