Livestreamausgabe aktivieren

Nachdem Sie den Dateneinnahmestream 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, den Livestream-App-Output direkt zu empfangen, damit du diese Echtzeitanalysen nutzen kannst.

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 Repositories gespeichert wurden, können sie für Offlineanalysejobs auf der Grundlage Ihres Anwendungsgraphen verwendet werden. Sie können die Modellausgaben aber auch per Livestream empfangen. Sie können Vertex AI Vision anweisen, die Modellausgaben an eine Streamressource weiterzuleiten. Sie können sie dann entweder mit dem Befehlszeilentool (vaictl) oder der Vertex AI Vision API in Echtzeit nutzen.

Angenommen, Sie haben den folgenden Anwendungsgraphen mit den folgenden drei Knoten:

  1. Der Datenquellenknoten „Input Stream“ (input-stream)
  2. Der Verarbeitungsknoten „Belegungszähler“ (occupancy-count)
  3. Der Zielknoten für die App-Ausgabe „Media Warehouse“ (warehouse)

Die App-Ausgabe wird derzeit vom Stream an den Prozess zur Personenzählung und dann an das Media Warehouse von Vertex AI Vision gesendet, wo sie gespeichert wird.

API-App-Konfiguration:

Beispielkonfiguration für eine App in der Cloud Console
{
  "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 die Bereitstellung des Modells aufheben und es dann noch einmal bereitstellen.

Console

  1. Öffnen Sie den Tab Anwendungen des Vertex AI Vision-Dashboards.

    Zum Tab „Anwendungen“

  2. Wählen Sie in der Liste neben dem Namen Ihrer Anwendung die Option Diagramm ansehen aus.

  3. Klicken Sie auf der Seite „Application Graph Builder“ (Anwendungsgraph-Builder) auf die Schaltfläche Bereitstellen.

  4. Wählen Sie im Optionsmenü Anwendung bereitstellen die Option Ausgabestreaming aktivieren aus.

    App-Menü in der Console bereitstellen

  5. Wählen Sie im Drop-down-Menü Modelle die Modelle aus, für die Sie die Streamingausgabe aktivieren möchten.

  6. Klicken Sie auf Bereitstellen.

Streamausgabe (API) aktivieren

App-Knoten aktualisieren

Sie können die Konfiguration einer App über die Befehlszeile aktualisieren, damit ein Modellknoten die Ausgabe speziell an einen Stream sendet.

Nachdem Sie diesen Schritt ausgeführt haben, können Sie die App-Instanz aktualisieren, um die Streamressource anzugeben, die die Ausgabedaten des Analyseknotens empfängt.

REST

In diesem Beispiel wird die Methode projects.locations.applications.patch verwendet. Mit dieser Anfrage wird die API-App-Konfiguration aus der vorherigen Beispiel-App aktualisiert, damit der occupancy-count-Knoten Ausgabe-Anmerkungen 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:

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
Wenn der Aktualisierungsvorgang abgeschlossen ist, gibt er den Status 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 die Ausgabe an einen Stream senden kann. Nachdem Sie diese Option aktiviert haben, können Sie die App-Instanz optional aktualisieren, um die Streamressource 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 Streamressource 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 Update-Befehl wurde der occupancy-count-Knoten so konfiguriert, dass er Ausgabeanmerkungen an einen Vertex AI Vision-Stream senden kann. Mit diesem Befehl wird die App-Instanz aktualisiert, damit die Daten von diesem Producer-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. Beispiel: us-central1, europe-west4. Weitere Informationen finden Sie unter Verfügbare Regionen.
  • APPLICATION_ID: Die ID der Zielanwendung.
  • inputResources: Die Eingaberessource (n) für die aktuelle Anwendungsinstanz. Dies ist ein Array von Objekten mit den folgenden Feldern:
    • consumerNode: Der Name des Graphknotens, der die Eingaberessource empfängt.
    • inputResource: Der vollständige Name der Eingaberessource.
  • outputResources.outputResource: Die stream-Ressource, in die App-Daten ausgegeben werden sollen.
  • outputResources.producerNode: Der Name des Erstellerknotens für die App-Ausgabe. In diesem Beispiel ist das der Analyseknoten occupancy-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
Wenn der Aktualisierungsvorgang abgeschlossen ist, gibt er den Status 200 OK ohne Fehler zurück und der Dienst aktualisiert die Anwendungsinstanz entsprechend.