Dopo aver creato lo stream di importazione dei dati e aggiunto i node di elaborazione all'app, devi scegliere dove inviare i dati elaborati. Un'opzione è ricevere direttamente l'output dell'app di live streaming per poter intervenire in base a questi dati in tempo reale.
In genere, configuri l'app in modo da archiviare l'output del modello in un
Google Cloud data warehouse come Media Warehouse di Vertex AI Vision o BigQuery.
Una volta archiviati i dati in uno di questi data warehouse, possono essere utilizzati per i job di analisi offline in base al grafo dell'applicazione. Tuttavia, puoi anche ricevere gli output del modello
in modalità live streaming. Puoi chiedere a Vertex AI Vision di inoltrare gli output del modello a una risorsa stream e utilizzare lo strumento a riga di comando (vaictl
) o l'API Vertex AI Vision per utilizzarli in tempo reale.
Supponiamo che tu abbia il seguente grafo dell'applicazione con i tre seguenti nodi:
- Nodo dell'origine dati "Stream di input" (
input-stream
) - Il nodo di elaborazione "Conteggio presenze" (
occupancy-count
) - Nodo di destinazione dell'output dell'app "Media Warehouse" (
warehouse
)
Al momento, l'output dell'app viene inviato dallo stream al processo di conteggio delle persone, e poi al Media Warehouse di Vertex AI Vision, dove viene archiviato.
Configurazione dell'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" } ] } } |
Attivare l'output dello stream (console Google Cloud)
Puoi attivare l'output dello stream nella console Google Cloud al primo deployment del modello o quando esegui il ritiro e il nuovo deployment del modello.
Console
Apri la scheda Applicazioni della dashboard di Vertex AI Vision.
Seleziona Visualizza grafico accanto al nome dell'applicazione nell'elenco.
Nella pagina del generatore di grafici delle applicazioni, fai clic sul pulsante Esegui il deployment.
Nel menu delle opzioni Esegui il deployment dell'applicazione visualizzato, seleziona
Attiva lo streaming di output.Nel menu a discesa Modelli corrispondente, seleziona
i modelli per i quali vuoi attivare l'output in streaming.Fai clic su Esegui il deployment.
Attivare l'output dello stream (API)
Aggiorna il nodo dell'app
Puoi aggiornare la configurazione di un'app sulla riga di comando in modo che un nodo del modello invii specificamente l'output a uno stream.
Dopo aver completato questo passaggio, hai la possibilità di aggiornare l'istanza dell'app per specificare la risorsa stream che riceve i dati di output del nodo di analisi.
REST
Questo esempio utilizza il metodo projects.locations.applications.patch. Questa richiesta aggiorna la configurazione dell'app API dell'app di esempio precedente in modo che il nodo occupancy-count
invii le annotazioni di output a uno stream di Vertex AI Vision. Questo comportamento è attivato dal
campo output_all_output_channels_to_stream
.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT: il tuo Google Cloud ID progetto o numero di progetto.
- LOCATION_ID: la regione in cui utilizzi Vertex AI Vision. Ad esempio:
us-central1
,europe-west4
. Consulta le regioni disponibili. - APPLICATION_ID: l'ID dell'applicazione di destinazione.
Metodo HTTP e URL:
PATCH https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID
Corpo JSON della richiesta:
{ "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 } ] } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
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
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
$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
senza errori e il servizio aggiorna la risorsa dell'applicazione di conseguenza.
Aggiorna l'istanza dell'app
L'esempio precedente mostra come aggiornare l'app, in modo che il nodo di destinazione possa inviare l'output a uno stream. Dopo aver attivato questa opzione, se vuoi puoi aggiornare l'istanza dell'app per specificare la risorsa stream che riceve i dati di output del nodo di analisi.
Se non specifichi uno stream con questo comando, la piattaforma dell'app continua a utilizzare uno stream predefinito creato al momento del deployment del nodo dell'app.
Devi creare una risorsa stream a cui il nodo invia l'output
prima di inviare la seguente richiesta.
REST
Questo esempio utilizza il metodo
projects.locations.applications.updateApplicationInstances. Questa richiesta utilizza la configurazione dell'app API aggiornata dell'app di esempio precedente. Il comando di aggiornamento precedente ha impostato il nodo occupancy-count
in modo da poter inviare le annotazioni di output a uno stream di Vision di Vertex AI. Questo comando
aggiorna l'istanza dell'app in modo da inviare i dati dal nodo occupancy-count
del produttore a una risorsa stream esistente.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT: il tuo Google Cloud ID progetto o numero di progetto.
- LOCATION_ID: la regione in cui utilizzi Vertex AI Vision. Ad esempio:
us-central1
,europe-west4
. Consulta le regioni disponibili. - APPLICATION_ID: l'ID dell'applicazione di destinazione.
inputResources
: la risorsa o le risorse di input per l'istanza dell'applicazione corrente. Si tratta di un array di oggetti contenenti i seguenti campi:consumerNode
: il nome del nodo del grafico che riceve la risorsa di input.inputResource
: il nome completo della risorsa di input.
outputResources.outputResource
: la risorsastream
in cui eseguire l'output dei dati dell'app.outputResources.producerNode
: il nome del nodo del produttore dell'output dell'app. In questo esempio,occupancy-count
è il nodo di analisi.- INSTANCE_ID: l'ID dell'istanza dell'app.
Metodo HTTP e URL:
POST https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances
Corpo JSON della richiesta:
{ "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 } ] }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
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
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
$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
senza errori e il servizio aggiorna l'istanza dell'applicazione di conseguenza.