Depois de criar o fluxo de ingestão de dados e adicionar os nós de processamento ao app, você precisa escolher para onde enviar os dados processados. Uma opção é receber a saída do app de transmissão ao vivo diretamente para poder agir com base nessas análises em tempo real.
Em geral, você configura o app para armazenar a saída do modelo em um
data warehouseGoogle Cloud , como o Media Warehouse da Vertex AI Vision ou o BigQuery.
Depois que os dados são armazenados em um
desses data warehouses, eles podem ser usados para jobs de análise off-line com base
no gráfico de aplicativos. No entanto, você também pode receber as saídas do modelo
em uma transmissão ao vivo. Você pode fazer com que a Vertex AI Vision encaminhe as saídas do modelo para um recurso de stream e usar a ferramenta de linha de comando (vaictl
) ou a API Vertex AI Vision para consumir em tempo real.
Suponha que você tenha o seguinte gráfico de aplicativo com estes três nós:
- O nó de origem de dados "Fluxo de entrada" (
input-stream
) - O nó de processamento "Contagem de ocupação" (
occupancy-count
) - O nó de destino da saída do app "Media Warehouse" (
warehouse
)
A saída do app é enviada do stream para o processo de contagem de ocupação e, em seguida, para o Media Warehouse da Vertex AI Vision, onde é armazenada.
Configuração do app de 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" } ] } } |
Ativar a saída de stream (consoleGoogle Cloud )
É possível ativar a saída de stream no Google Cloud console ao implantar o modelo pela primeira vez ou ao remover e reimplantar o modelo.
Console
Abra a guia Aplicativos do painel da Vertex AI Vision.
Selecione Ver gráfico ao lado do nome do aplicativo na lista.
Na página do criador de gráficos de aplicativos, clique no botão Implantar.
No menu de opções Implantar aplicativo que aparece, selecione
Ativar transmissão de saída.No menu suspenso Modelos correspondente, selecione
os modelos para os quais você quer ativar a saída de streaming.Clique em Implantar.
Ativar a saída de stream (API)
Atualizar o nó do app
É possível atualizar a configuração de um app na linha de comando para que um nó de modelo envie a saída especificamente para um fluxo.
Depois de concluir essa etapa, você pode atualizar a instância do app para especificar o recurso de stream que recebe os dados de saída do nó de análise.
REST
Este exemplo usa o método projects.locations.applications.patch. Essa solicitação atualiza a configuração do app de API do app de exemplo anterior para que o nó occupancy-count
envie anotações de saída para um fluxo da Vertex AI Vision. Esse comportamento é ativado pelo campo
output_all_output_channels_to_stream
.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT: o ID ou número do projeto do Google Cloud.
- LOCATION_ID: a região em que você está usando a
Vertex AI Vision. Por exemplo:
us-central1
,europe-west4
. Consulte as regiões disponíveis. - APPLICATION_ID: o ID do aplicativo de destino.
Método HTTP e URL:
PATCH https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID
Corpo JSON da solicitação:
{ "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 } ] } }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
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
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$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
sem erros, e o serviço vai atualizar o recurso do aplicativo
de acordo com isso.
Atualizar a instância do app
O exemplo anterior mostra como atualizar o app, o que permite que o nó de destino envie a saída para um fluxo. Depois de ativar essa opção, você pode atualizar a instância do app para especificar o recurso de stream que recebe os dados de saída do nó de análise.
Se você não especificar um fluxo com esse comando, a plataforma de apps continuará usando um fluxo padrão criado quando o nó do app é implantado.
É necessário criar um recurso de stream para onde o nó envia a saída.
antes de enviar a solicitação a seguir.
REST
Este exemplo usa o método
projects.locations.applications.updateApplicationInstances. Essa solicitação usa a configuração atualizada do app de API do app de exemplo
anterior. O comando de atualização anterior definiu o nó occupancy-count
para que ele
pudesse enviar anotações de saída para um fluxo da Vertex AI Vision. Esse comando
atualiza a instância do app para enviar os dados desse nó occupancy-count
produtor a um recurso de stream atual.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT: o ID ou número do projeto do Google Cloud.
- LOCATION_ID: a região em que você está usando a
Vertex AI Vision. Por exemplo:
us-central1
,europe-west4
. Consulte as regiões disponíveis. - APPLICATION_ID: o ID do aplicativo de destino.
inputResources
: o recurso (ou recursos) de entrada da instância do aplicativo atual. É uma matriz de objetos que contém os seguintes campos:consumerNode
: o nome do nó do gráfico que recebe o recurso de entrada.inputResource
: o nome completo do recurso de entrada.
outputResources.outputResource
: o recursostream
para gerar dados de apps.outputResources.producerNode
: o nome do nó produtor de saída do app. Neste exemplo, o nó de análise éoccupancy-count
.- INSTANCE_ID: o ID da instância do app.
Método HTTP e URL:
POST https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances
Corpo JSON da solicitação:
{ "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 } ] }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
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
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$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
sem erros, e o serviço vai atualizar a instância do aplicativo de acordo.