Dopo aver creato lo stream di importazione dati dati e aggiunto i nodi di elaborazione all'app, devi scegliere dove inviare i dati elaborati. Un'opzione è ricevere direttamente l'output dell'app di live streaming, in modo da poter agire in base a questi dati di analisi in tempo reale.
In generale, configuri l'app in modo che memorizzi l'output del modello in un
Google Cloud data warehouse come Media Warehouse di Vertex AI Vision o BigQuery.
Una volta archiviati in uno di questi warehouse, i dati possono essere utilizzati per job di analisi offline in base al grafico dell'applicazione. Tuttavia, puoi anche ricevere gli output del modello
in modalità live streaming. Puoi fare in modo che Vertex AI Vision inoltri gli output del modello a una risorsa di flusso e puoi utilizzare lo strumento a riga di comando (vaictl
) o l'API Vertex AI Vision per utilizzarli in tempo reale.
Supponendo di avere il seguente grafico dell'applicazione con i seguenti tre nodi:
- Il nodo dell'origine dati "Stream di input" (
input-stream
) - Il nodo di elaborazione "Conteggio occupazione" (
occupancy-count
) - Il nodo di destinazione dell'output dell'app "Media Warehouse" (
warehouse
)
L'output dell'app viene attualmente inviato dal flusso al processo di conteggio dell'occupazione e poi a 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" } ] } } |
Abilitare l'output del flusso (consoleGoogle Cloud )
Puoi attivare l'output del flusso nella console Google Cloud quando esegui il deployment del modello per la prima volta o quando annulli il deployment e poi lo esegui di nuovo.
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 Deploy dell'applicazione che viene visualizzato, seleziona
Attiva lo streaming dell'output.Nel menu a discesa Modelli corrispondente, seleziona
i modelli per cui vuoi attivare l'output di streaming.Fai clic su Esegui il deployment.
Abilitare l'output di stream (API)
Aggiorna il nodo dell'app
Puoi aggiornare la configurazione di un'app dalla 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 dall'app di esempio precedente in modo che il nodo occupancy-count
invii annotazioni di output a uno stream 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
. Vedi 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 di queste 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, il che consente al nodo di destinazione di inviare l'output a uno stream. Dopo aver attivato questa opzione, puoi aggiornare facoltativamente 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 app continua a utilizzare uno stream predefinito creato al momento del deployment del nodo dell'app.
Devi creare una risorsa di flusso a cui il nodo invia l'output
prima di inviare la richiesta successiva.
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 set di comandi di aggiornamento precedente ha impostato il nodo occupancy-count
in modo che possa inviare annotazioni di output a un flusso Vertex AI Vision. Questo comando
aggiorna l'istanza dell'app per 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
. Vedi le regioni disponibili. - APPLICATION_ID: l'ID dell'applicazione di destinazione.
inputResources
: La risorsa o le risorse di input per l'istanza dell'applicazione attuale. Si tratta di un array di oggetti che contengono 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 generare l'output dei dati dell'app.outputResources.producerNode
: Il nome del nodo produttore dell'output dell'app. In questo esempio questo è il nodo di analisi,occupancy-count
.- 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 di queste 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.