啟用即時串流輸出功能

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

一般來說,您可以將應用程式設為將模型輸出內容儲存至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. 應用程式輸出目的地節點「Media Warehouse」(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 資訊主頁的「Applications」分頁。

    前往「應用程式」分頁

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

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

  4. 在隨即開啟的「Deploy application」選項選單中,選取「Enable output streaming」

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

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

  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 狀態,且不會發生任何錯誤,服務也會相應更新應用程式執行個體。