Nachdem Sie den Datenaufnahmestream erstellt und Ihrer App Verarbeitungsknoten hinzugefügt haben, müssen Sie auswählen, wohin die verarbeiteten Daten gesendet werden sollen. Eine Möglichkeit besteht darin, die Ausgabe der Livestream-App direkt zu empfangen, damit Sie auf diese Echtzeitanalysen reagieren können.
Im Allgemeinen konfigurieren Sie Ihre App so, dass die Modellausgabe in einemGoogle Cloud Data Warehouse wie dem Media Warehouse von Vertex AI Vision oder BigQuery gespeichert wird.
Nachdem die Daten in einem dieser Data Warehouses gespeichert wurden, können sie für Offline-Analysejobs auf Grundlage Ihres Anwendungsdiagramms verwendet werden. Sie können die Modellausgaben aber auch per Livestreaming empfangen. Sie können die Modellausgaben von Vertex AI Vision an eine Streamressource weiterleiten lassen und sie in Echtzeit über das Befehlszeilentool (vaictl
) oder die Vertex AI Vision API abrufen.
Angenommen, Sie haben den folgenden Anwendungsdiagramm mit den folgenden drei Knoten:
- Der Datenquellenknoten „Eingabestream“ (
input-stream
) - Der Verarbeitungsknoten „Occupancy Count“ (
occupancy-count
) - Der Zielknoten für die App-Ausgabe „Media Warehouse“ (
warehouse
)
Die App-Ausgabe wird derzeit vom Stream an den Prozess zur Zählung der Belegung gesendet und dann an das Media Warehouse von Vertex AI Vision, wo sie gespeichert wird.
API-App-Konfiguration:
![]() |
{ "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" } ] } } |
Streamausgabe aktivieren (Google Cloud console)
Sie können die Streamausgabe in der Google Cloud Console aktivieren, wenn Sie Ihr Modell zum ersten Mal bereitstellen oder wenn Sie die Bereitstellung des Modells aufheben und es dann noch einmal bereitstellen.
Console
Öffnen Sie den Tab Anwendungen des Vertex AI Vision-Dashboards.
Wählen Sie in der Liste neben dem Namen Ihrer Anwendung Diagramm ansehen aus.
Klicken Sie auf der Seite „Application Graph Builder“ (Tool zur Erstellung von Anwendungsdiagrammen) auf die Schaltfläche Deploy (Bereitstellen).
Wählen Sie im Optionsmenü Anwendung bereitstellen, das sich öffnet, die Option
Ausgabestreaming aktivieren aus.Wählen Sie im entsprechenden Drop-down-Menü Modelle die Modelle aus, für die Sie die Streamingausgabe aktivieren möchten.
Klicken Sie auf Bereitstellen.
Streamausgabe aktivieren (API)
App-Knoten aktualisieren
Sie können die Konfiguration einer App in der Befehlszeile aktualisieren, damit ein Modellknoten die Ausgabe speziell an einen Stream sendet.
Danach können Sie die App-Instanz aktualisieren, um die Streamressource anzugeben, in der die Ausgabedaten des Analyseknotens empfangen werden.
REST
In diesem Beispiel wird die Methode projects.locations.applications.patch verwendet. Mit dieser Anfrage wird die API-App-Konfiguration der vorherigen Beispiel-App so aktualisiert, dass der occupancy-count
-Knoten Ausgabekommentare an einen Vertex AI Vision-Stream sendet. Dieses Verhalten wird durch das Feld output_all_output_channels_to_stream
aktiviert.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT: Ihre Google Cloud-Projekt-ID oder Projektnummer.
- LOCATION_ID: Die Region, in der Sie Vertex AI Vision verwenden. Beispiele:
us-central1
,europe-west4
. Verfügbare Regionen - APPLICATION_ID: Die ID Ihrer Zielanwendung.
HTTP-Methode und URL:
PATCH https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID
JSON-Text der Anfrage:
{ "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 } ] } }
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
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
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
$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
ohne Fehler zurück und der Dienst aktualisiert die Anwendungsressource entsprechend.
App-Instanz aktualisieren
Im vorherigen Beispiel wird gezeigt, wie Sie die App aktualisieren, damit der Zielknoten Ausgaben an einen Stream senden kann. Nachdem Sie diese Option aktiviert haben, können Sie die App-Instanz optional aktualisieren, um die Stream-Ressource anzugeben, die die Ausgabedaten des Analyseknotens empfängt.
Wenn Sie mit diesem Befehl keinen Stream angeben, verwendet die App-Plattform weiterhin einen Standardstream, der beim Bereitstellen des App-Knotens erstellt wird.
Sie müssen eine Stream-Ressource erstellen, an die der Knoten die Ausgabe sendet.
bevor Sie die folgende Anfrage senden.
REST
In diesem Beispiel wird die Methode projects.locations.applications.updateApplicationInstances verwendet. Für diese Anfrage wird die aktualisierte API-App-Konfiguration aus der vorherigen Beispiel-App verwendet. Mit dem vorherigen Aktualisierungsbefehl wurde der Knoten occupancy-count
so festgelegt, dass er Ausgabekommentare an einen Vertex AI Vision-Stream senden kann. Mit diesem Befehl wird die App-Instanz aktualisiert, sodass die Daten von diesem occupancy-count
-Knoten an eine vorhandene Streamressource gesendet werden.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT: Ihre Google Cloud-Projekt-ID oder Projektnummer.
- LOCATION_ID: Die Region, in der Sie Vertex AI Vision verwenden. Beispiele:
us-central1
,europe-west4
. Verfügbare Regionen - APPLICATION_ID: Die ID Ihrer Zielanwendung.
inputResources
: Die Eingaberessource (n) für die aktuelle Anwendungsinstanz. Dies ist ein Array von Objekten mit den folgenden Feldern:consumerNode
: Der Name des Diagrammknotens, der die Eingaberessource empfängt.inputResource
: Der vollständige Name der Eingaberessource.
outputResources.outputResource
: Diestream
-Ressource, in die App-Daten ausgegeben werden sollen.outputResources.producerNode
: Der Name des Ausgabeknotens der App. In diesem Beispiel ist das der Analysenknotenoccupancy-count
.- INSTANCE_ID: Die ID der App-Instanz.
HTTP-Methode und URL:
POST https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances
JSON-Text der Anfrage:
{ "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 } ] }
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
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
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
$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
ohne Fehler zurück und der Dienst aktualisiert die Anwendungsinstanz entsprechend.