啟用即時串流輸出功能

建立資料擷取串流將處理節點新增至應用程式後,您必須選擇要將處理後的資料傳送到何處。其中一個方法是直接接收直播應用程式輸出內容,以便根據這些即時數據分析採取行動。

一般來說,您會將應用程式設定為將模型輸出內容儲存到Google Cloud 資料倉儲,例如 Vertex AI Vision 的 Media Warehouse 或 BigQuery。資料儲存在其中一個資料倉儲後,即可根據應用程式圖表用於離線分析工作。不過,你也可以透過即時串流方式接收模型輸出內容。您可以讓 Vertex AI Vision 將模型輸出內容轉送至串流資源,並使用指令列工具 (vaictl) 或 Vertex AI Vision API 即時取用這些內容。

假設您有下列應用程式圖表,其中包含下列三個節點:

  1. 資料來源節點「輸入串流」(input-stream)
  2. 處理節點「Occupancy Count」(occupancy-count)
  3. 應用程式輸出目的地節點「媒體倉庫」(warehouse)

應用程式輸出內容目前會從串流傳送至入住人數計算程序,然後傳送至 Vertex AI Vision 的媒體倉儲並儲存。

API 應用程式設定:

Cloud 控制台中的範例應用程式設定
{
  "applicationConfigs": {
    "nodes": [
        {
          "displayName": "Input Stream",
          "name": "input-stream",
          "processor": "builtin:stream-input"
        },
        {
          "displayName": "Occupancy Count",
          "name": "occupancy-count",
          "nodeConfig": {
            "occupancyCountConfig": {
              "enablePeopleCounting": true,
              "enableVehicleCounting": true
            }
          },
          "parents": [
            {
              "parentNode": "input-stream"
            }
          ],
          "processor": "builtin:occupancy-count"
        },
        {
          "displayName": "Media Warehouse",
          "name": "warehouse",
          "nodeConfig": {
            "mediaWarehouseConfig": {
              "corpus": "projects/PROJECT_ID/locations/LOCATION_ID/corpora/CORPUS_ID",
              "ttl": "86400s"
            }
          },
          "parents": [
            {
              "parentNode": "input-stream"
            },
            {
              "parentNode": "occupancy-count"
            }
          ],
          "processor": "builtin:media-warehouse"
        }
    ]
  }
}

啟用串流輸出 (Google Cloud 控制台)

您可以在 Google Cloud 控制台中啟用串流輸出,方法是在首次部署模型時,或在解除部署模型後重新部署時啟用。

控制台

  1. 開啟 Vertex AI Vision 資訊主頁的「應用程式」分頁。

    前往「應用程式」分頁

  2. 從清單中選取應用程式名稱旁的「查看圖表」

  3. 在應用程式圖表建構工具頁面中,按一下「Deploy」按鈕。

  4. 在隨即開啟的「Deploy application」(部署應用程式) 選單中,選取「Enable output streaming」(啟用輸出串流)

    控制台中的「部署應用程式」選單

  5. 在對應的「模型」下拉式選單中,選取要啟用串流輸出的模型。

  6. 按一下 [部署]

啟用串流輸出 (API)

更新應用程式節點

您可以在指令列更新應用程式的設定,讓模型節點專門將輸出內容傳送至串流。

完成這個步驟後,您可以選擇更新應用程式例項,指定接收分析節點輸出資料的串流資源。

REST

本範例使用 projects.locations.applications.patch 方法。這項要求會更新先前範例應用程式的 API 應用程式設定,讓 occupancy-count 節點將輸出註解傳送至 Vertex AI Vision 串流。這項行為是由 output_all_output_channels_to_stream 欄位啟用。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT:您的 Google Cloud 專案 ID 或專案編號
  • LOCATION_ID:您使用 Vertex AI Vision 的區域。例如:us-central1europe-west4。請參閱可用區域
  • APPLICATION_ID:目標應用程式的 ID。

HTTP 方法和網址:

PATCH https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID

JSON 要求主體:

{
  "applicationConfigs": {
    "nodes": [
        {
          "displayName": "Input Stream",
          "name": "input-stream",
          "processor": "builtin:stream-input"
        },
        {
          "displayName": "Occupancy Count",
          "name": "occupancy-count",
          "nodeConfig": {
            "occupancyCountConfig": {
              "enablePeopleCounting": true,
              "enableVehicleCounting": true
            }
          },
          "parents": [
            {
              "parentNode": "input-stream"
            }
          ],
          "processor": "builtin:occupancy-count",
          "output_all_output_channels_to_stream": true
        }
    ]
  }
}

如要傳送要求,請選擇以下其中一個選項:

curl

將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID"

PowerShell

將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID" | Select-Object -Expand Content
如果更新作業完成,作業會傳回 200 OK 狀態,且不會發生任何錯誤,服務也會據此更新應用程式資源。

更新應用程式執行個體

先前的範例說明如何更新應用程式,讓目標節點將輸出內容傳送至串流。啟用這個選項後,您可以選擇更新應用程式例項,指定接收分析節點輸出資料的串流資源。

如果沒有使用這項指令指定串流,應用程式平台會繼續使用部署應用程式節點時建立的預設串流。

您必須建立節點傳送輸出的串流資源

再傳送下列要求。

REST

本範例使用 projects.locations.applications.updateApplicationInstances 方法。這項要求會使用先前範例應用程式中更新的 API 應用程式設定。先前的更新指令已將 occupancy-count 節點設為可將輸出註解傳送至 Vertex AI Vision 串流。這項指令會更新應用程式執行個體,將該生產端 occupancy-count 節點的資料傳送至現有串流資源。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT:您的 Google Cloud 專案 ID 或專案編號
  • LOCATION_ID:您使用 Vertex AI Vision 的區域。例如:us-central1europe-west4。請參閱可用區域
  • APPLICATION_ID:目標應用程式的 ID。
  • inputResources:目前應用程式執行個體的輸入資源。這是物件陣列,包含下列欄位:
    • consumerNode:接收輸入資源的圖形節點名稱。
    • inputResource:完整的輸入資源名稱。
  • outputResources.outputResource:用於輸出應用程式資料的 stream 資源。
  • outputResources.producerNode:應用程式輸出內容產生器節點名稱。在本範例中,這是分析節點 occupancy-count
  • INSTANCE_ID:應用程式執行個體的 ID。

HTTP 方法和網址:

POST https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances

JSON 要求主體:

{
  "applicationInstances": [
    {
      "instance": {
        "inputResources": [
          {
            "consumerNode": "input-stream",
            "inputResource": "projects/PROJECT_NUMBER/locations/LOCATION_ID/clusters/application-cluster-0/streams/INPUT_STREAM_ID"
          }
        ],
        "outputResources":[
          {
            "outputResource": "projects/PROJECT_NUMBER/locations/LOCATION_ID/clusters/application-cluster-0/streams/OUTPUT_STREAM_ID",
            "producerNode": "occupancy-count"
          }
        ]
      },
      "instanceId": INSTANCE_ID
    }
  ]
}

如要傳送要求,請選擇以下其中一個選項:

curl

將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances"

PowerShell

將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances" | Select-Object -Expand Content
如果更新作業完成,作業會傳回 200 OK 狀態,且不會發生任何錯誤,服務也會據此更新應用程式例項。