建立資料攝入串流並將處理節點新增至應用程式後,您必須選擇要將已處理的資料傳送至何處。其中一個選項是直接接收直播應用程式輸出內容,以便您根據這些即時分析資料採取行動。
一般來說,您可以將應用程式設為將模型輸出內容儲存至Google Cloud 資料倉儲,例如 Vertex AI Vision 的 Media Warehouse 或 BigQuery。資料儲存在其中一個倉儲後,即可根據應用程式圖表用於離線分析工作。不過,您也可以以直播方式接收模型輸出內容。您可以讓 Vertex AI Vision 將模型輸出內容轉送至串流資源,然後使用指令列工具 (vaictl
) 或 Vertex AI Vision API 即時使用這些輸出內容。
假設您有下列應用程式圖表,其中包含下列三個節點:
- 資料來源節點「輸入串流」(
input-stream
) - 處理節點「Occupancy Count」(
occupancy-count
) - 應用程式輸出目的地節點「Media Warehouse」(
warehouse
)
應用程式輸出內容目前會從串流傳送至人數計數程序,然後傳送至 Vertex AI Vision 的媒體倉儲。
API 應用程式設定:
![]() |
{ "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 控制台中啟用串流輸出功能。
控制台
開啟 Vertex AI Vision 資訊主頁的「Applications」分頁。
在清單中選取應用程式名稱旁的「查看圖表」。
在應用程式圖表建構工具頁面中,按一下「Deploy」按鈕。
在隨即開啟的「Deploy application」選項選單中,選取「Enable output streaming」
。在對應的「Model(s)」下拉式選單中,選取要啟用串流輸出的模型
。按一下 [部署]
啟用串流輸出 (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-central1
、europe-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-central1
、europe-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
狀態,且不會發生任何錯誤,服務也會相應更新應用程式執行個體。