Depois de criar a stream de carregamento de dados e adicionar os nós de processamento à sua app, tem de escolher para onde enviar os dados processados. Uma opção é receber o resultado da app de stream em direto diretamente para poder agir com base nestas estatísticas em tempo real.
Em geral, configura a sua app para armazenar o resultado do modelo num
Google Cloud armazém de dados, como o Media Warehouse do Vertex AI Vision ou o BigQuery.
Depois de os dados serem armazenados num destes armazéns, podem ser usados para tarefas analíticas offline com base no gráfico da sua aplicação. No entanto, também pode receber os resultados do modelo de forma
de streaming em direto. Pode fazer com que o Vertex AI Vision encaminhe os resultados do modelo para um recurso de stream e pode usar a ferramenta de linha de comandos (vaictl
) ou a API Vertex AI Vision para os consumir em tempo real.
Supondo que tem o seguinte gráfico de aplicações com os seguintes três nós:
- O nó de origem de dados "Stream de entrada" (
input-stream
) - O nó de processamento "Contagem de ocupação" (
occupancy-count
) - O nó de destino de saída da app "Media Warehouse" (
warehouse
)
Atualmente, o resultado da app é enviado da stream para o processo de contagem de ocupação e, em seguida, para o Media Warehouse do Vertex AI Vision, onde é armazenado.
Configuração da app 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" } ] } } |
Ative a saída de stream (Google Cloud consola)
Pode ativar a saída de stream na Google Cloud consola quando implementar o modelo pela primeira vez ou quando anular a implementação e, em seguida, voltar a implementar o modelo.
Consola
Abra o separador Aplicações do painel de controlo do Vertex AI Vision.
Selecione Ver gráfico junto ao nome da aplicação na lista.
Na página do criador de gráficos de aplicações, clique no botão Implementar.
No menu de opções Implementar aplicação apresentado, selecione
Ativar streaming de saída.No menu pendente Modelos correspondente, selecione
os modelos para os quais quer ativar a saída de streaming.Clique em Implementar
Ative a saída de stream (API)
Atualize o nó da app
Pode atualizar a configuração de uma app na linha de comandos para que um nó do modelo envie especificamente a saída para um fluxo.
Depois de concluir este passo, tem a opção de atualizar a instância da 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. Este pedido atualiza a configuração da app API da app de exemplo anterior para que o nó occupancy-count
envie anotações de saída para uma stream do Vertex AI Vision. Este comportamento é ativado pelo campo output_all_output_channels_to_stream
.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT: o seu Google Cloud ID do projeto ou número do projeto.
- LOCATION_ID: A região onde está a usar o
Vertex AI Vision. Por exemplo:
us-central1
,europe-west4
. Veja as regiões disponíveis. - APPLICATION_ID: o ID da sua aplicação de destino.
Método HTTP e URL:
PATCH https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID
Corpo JSON do pedido:
{ "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 o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
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
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
$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 atualiza o recurso da aplicação em conformidade.
Atualize a instância da app
O exemplo anterior mostra como atualizar a app, o que permite que o nó de destino envie a saída para um fluxo. Depois de ativar esta opção, pode atualizar opcionalmente a instância da app para especificar o recurso de stream que recebe os dados de saída do nó de análise.
Se não especificar uma stream com este comando, a plataforma de apps continua a usar uma stream predefinida criada quando o nó da app é implementado.
Tem de criar um recurso de stream para o qual o nó envia o resultado
antes de enviar o seguinte pedido.
REST
Este exemplo usa o método
projects.locations.applications.updateApplicationInstances. Este pedido usa a configuração da app API atualizada da app de exemplo anterior. O comando de atualização anterior definiu o nó occupancy-count
para poder enviar anotações de saída para uma stream do Vertex AI Vision. Este comando
atualiza a instância da app para enviar os dados desse nó occupancy-count
produtor para um recurso de stream existente.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT: o seu Google Cloud ID do projeto ou número do projeto.
- LOCATION_ID: A região onde está a usar o
Vertex AI Vision. Por exemplo:
us-central1
,europe-west4
. Veja as regiões disponíveis. - APPLICATION_ID: o ID da sua aplicação de destino.
inputResources
: o recurso (ou os recursos) de entrada para a instância da aplicação atual. Esta é 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 da app.outputResources.producerNode
: o nome do nó do produtor de saída da app. Neste exemplo, este é o nó de análise,occupancy-count
.- INSTANCE_ID: o ID da instância da app.
Método HTTP e URL:
POST https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances
Corpo JSON do pedido:
{ "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 o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
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
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
$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 atualiza a instância da aplicação em conformidade.