创建数据提取流并向应用添加处理节点后,您必须选择要将处理后的数据发送到哪里。一种方法是直接接收直播应用输出,以便根据这些实时分析采取行动。
通常,您会将应用配置为将模型输出存储到Google Cloud 数据仓库(例如 Vertex AI Vision 的媒体仓库或 BigQuery)中。数据存储在其中一个仓库中后,便可用于根据应用图表执行离线分析作业。不过,您也可以通过实时流式传输方式接收模型输出。您可以让 Vertex AI Vision 将模型输出转发到流式资源,然后使用命令行工具 (vaictl
) 或 Vertex AI Vision API 实时使用这些输出。
假设您有以下应用图,其中包含以下三个节点:
- 数据源节点“输入流”(
input-stream
) - 处理节点“占用情况计数”(
occupancy-count
) - 应用输出目标节点“媒体仓库”(
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 信息中心的应用标签页。
从列表中选择应用名称旁边的查看图表。
在应用图表构建器页面中,点击部署按钮。
在随即打开的部署应用选项菜单中,选择
启用输出流式传输。从相应的模型下拉菜单中,
选择要为其启用流式输出的模型。点击部署
启用串流输出 (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
状态且没有任何错误,并且服务会相应地更新应用实例。