部署空間分析 Web 應用程式
使用本文來瞭解如何部署 Web 應用程式,以從 IoT 中樞 收集空間分析資料/深入解析,並將其可視化。 這在各種情節和產業中都有有用的應用程式。 例如,如果公司想要優化其房地產空間的使用,他們可以快速建立具有不同案例的解決方案。
在本教學課程中,您將了解如何:
- 佈署空間分析容器
- 設定作業和相機
- 在 Web 應用程式中設定 IoT 中樞 連線
- 部署及測試 Web 應用程式
應用程式將展示下列案例:
- 進入和離開空間/存放區的人員計數
- 進入和離開結帳區域的人員計數,以及在結帳隊伍中花費的時間 (停留時間)
- 戴口罩的人員計數
- 違反社交距離指導方針的人員計數
必要條件
- Azure 訂用帳戶 - 建立免費帳戶
- 對 Azure IoT Edge 部署設定和 Azure IoT 中樞的基本瞭解
- 已設定 的主電腦
佈署空間分析容器
遵循主機電腦安裝程式來設定主機電腦,並將 IoT Edge 裝置連線到 Azure IoT 中樞。
在訂用帳戶中部署 Azure IoT 中樞服務
首先,建立 Azure IoT 中樞服務的執行個體,其中包含標準定價層 (S1) 或免費層 (S0)。 請遵循下列指示,使用 Azure CLI 建立此執行個體。
填入必要參數:
- 訂用帳戶:Azure 訂用帳戶的名稱或識別碼
- 資源群組:建立資源群組的名稱
- IoT 中樞名稱:建立 IoT 中樞的名稱
- IoT 中樞名稱:您建立的 IoT 中樞名稱
- Edge 裝置名稱:建立 Edge 裝置的名稱
az login
az account set --subscription <name or ID of Azure Subscription>
az group create --name "<Resource Group Name>" --location "WestUS"
az iot hub create --name "<IoT Hub Name>" --sku S1 --resource-group "test-resource-group"
az iot hub device-identity create --hub-name "<IoT Hub Name>" --device-id "<Edge Device Name>" --edge-enabled
在主機電腦上 Azure IoT Edge 上部署容器
下一步是使用 Azure CLI,將空間分析容器部署為主機電腦上的 IoT 模組。 部署程序需要部署資訊清單檔案,其中會列出您的部署所需的容器、變數和設定。 您可以在 DeploymentManifest.json 中找到樣本部署資訊清單,其中包含適用於所有情節的預先建立設定。
設定環境變數
IoT Edge 模組的大部分環境變數都已在上述連結的樣本 DeploymentManifest.json 檔案中設定。 如下所示,在檔案中,搜尋 ENDPOINT
和 APIKEY
環境變數。 將這些值取代為您稍早建立的端點 URI 和 API 金鑰。 確認 EULA 值設定為「接受」。
"EULA": {
"value": "accept"
},
"BILLING":{
"value": "<Use the endpoint from your Vision resource>"
},
"APIKEY":{
"value": "<Use a key from your Vision resource>"
}
重要
如果您使用 API 金鑰,請將它安全地儲存在別處,例如在 Azure 金鑰保存庫 中。 請勿將 API 金鑰直接包含在您的程式代碼中,且絕不會公開發佈。
如需 AI 服務安全性的詳細資訊,請參閱 驗證對 Azure AI 服務的要求。
設定作業參數
如果您使用樣本 DeploymentManifest.json,其已經有所有必要的設定 (作業、錄製的影片檔案 url 和區域等),您可以跳到 [執行部署] 區段。
現在空間分析容器的初始設定完成後,下一個步驟是設定作業參數,並將其新增至部署。
第一個步驟是更新樣本 DeploymentManifest.json,並設定所需的作業。 例如,適用於 cognitiveservices.vision.spatialanalysis-personcount 的設定如下所示:
"personcount": {
"operationId": "cognitiveservices.vision.spatialanalysis-personcount",
"version": 1,
"enabled": true,
"parameters": {
"VIDEO_URL": "<Replace RTSP URL here>",
"VIDEO_SOURCE_ID": "<Replace with friendly name>",
"VIDEO_IS_LIVE":true,
"DETECTOR_NODE_CONFIG": "{ \"gpu_index\": 0 }",
"SPACEANALYTICS_CONFIG": "{\"zones\":[{\"name\":\"queue\",\"polygon\":[<Replace with your values>], \"events\": [{\"type\":\"count\"}], \"threshold\":<use 0 for no threshold.}]}"
}
},
更新部署資訊清單之後,請遵循相機製造商的指示來安裝相機、設定相機 url,以及設定使用者名稱和密碼。
接下來,將 VIDEO_URL
設定為相機的 RTSP url,以及用來連接到相機的認證。
如果邊緣裝置有一個以上的 GPU,請選取要在其上執行這項作業的 GPU。 確定您對作業進行負載平衡,其中在單一 GPU 上一次執行的作業不超過 8 個。
接下來,設定您想要在其中計算人員的區域。 若要設定區域多邊形,請先遵循製造商的指示,從相機擷取畫面。 若要判斷多邊形的每個頂點,請選取畫面上的某個點,取得相對於畫面左上角的點的 x、y 像素座標,然後除以對應的畫面尺寸。 將結果設定為頂點的 x、y 座標。 您可以在 SPACEANALYTICS_CONFIG
欄位中進行區域多邊形設定。
這是樣本影片畫面,顯示如何針對大小為 1920/1080 的畫面計算頂點座標。
您也可以選取當偵測到的人員計數和產生事件時的信賴臨界值。 如果您想要輸出所有事件,請將閾值設定為 0。
執行部署
現在部署資訊清單已完成,請在 Azure CLI 中使用此命令,將主機電腦上的容器部署為 IoT Edge 模組。
az login
az extension add --name azure-iot
az iot edge set-modules --hub-name "<IoT Hub name>" --device-id "<IoT Edge device name>" --content DeploymentManifest.json -–subscription "<subscriptionId>"
填入必要參數:
- IoT 中樞名稱:Azure IoT 中樞名稱
- DeploymentManifest.json:部署檔案名稱
- IoT Edge 裝置名稱:主機電腦的 IoT Edge 裝置名稱
- 訂用帳戶:訂用帳戶識別碼或名稱
此命令會開始部署,您可以在 Azure 入口網站中的 Azure IoT Hub 執行個體中檢視部署狀態。 狀態可能會顯示為 417 - 未設定裝置的部署設定 (在裝置完成下載容器映像並開始執行之前)。
驗證部署是否成功
在 Azure 入口網站上 IoT 中樞執行個體中,於空間分析模組的 IoT Edge 模組設定中找出執行階段狀態。 執行階段狀態所需的值和回報值應是 Running
。 請參閱以下內容,以瞭解這在 Azure 入口網站上的樣子。
此時,空間分析容器正在執行作業。 其會發出作業的 AI 見解,並將這些見解路由傳送至 Azure IoT 中樞執行個體的遙測。 若要設定其他相機,可以更新部署資訊清單檔,然後再次執行部署。
建置 Web 應用程式
空間分析 Web 應用程式可讓開發人員快速設定範例 Web 應用程式、將其裝載在其 Azure 環境中,並使用應用程式來驗證 E2E 事件。
建置 Docker 映像
遵循指南來建立影像,並將其推送至訂用帳戶中的 Azure Container Registry。
設定 Docker 容器
若要安裝容器,請建立新的 Azure App Service,並填入必要的參數。 然後移至 [Docker] 索引標籤,選取 [單一容器],然後 [Azure Container Registry]。 使用您在推送以上影像的 Azure Container Registry 執行個體。
輸入上述參數之後,請選取 [檢閱 + 建立] 並建立應用程式。
設定應用程式
等待安裝程式完成,然後瀏覽至 Azure 入口網站中的資源。 移至 [設定] 區段,並新增下列兩個應用程式設定。
EventHubConsumerGroup
– Azure IoT 中樞的取用者群組字串名稱,您可以在 IoT 中樞內建立新的取用者群組,或使用預設群組。IotHubConnectionString
– Azure IoT 中樞的連接字串,您可以從 Azure IoT 中樞資源的主要區段中擷取此字串
新增這 2 個設定之後,請選取 [儲存]。 然後選取左側導覽功能表中的 [驗證/授權],並使用所需的驗證層級加以更新。 我們建議Microsoft Entra ID express。
測試應用程式
移至 Azure 服務,確認部署是否成功,以及 web 應用程式是否正在執行。 瀏覽至已設定的 url:<yourapp>.azurewebsites.net
以檢視正在執行的應用程式。
取得 PersonCount 原始程式碼
如果您想要檢視或修改此應用程式的原始程式碼,您可以在 GitHub 上找到此程式碼。