Vertex AI Vision Traffic Monitoring-Anwendung

1. Zielsetzungen

Übersicht

In diesem Codelab geht es um das Erstellen einer End-to-End-Anwendung von Vertex AI Vision, um Videomaterial zum Verkehrsaufkommen in Echtzeit zu überwachen. Wir verwenden das vortrainierte „Specialized“-Modell Occupancy Analytics. integrierte Funktionen, mit denen Sie Folgendes erfassen können:

  • Die Anzahl der Fahrzeuge und Personen zählen, die auf einer bestimmten Linie eine Straße überqueren.
  • Zählen Sie die Anzahl der Fahrzeuge und Personen in einem festen Bereich der Straße.
  • Überlastungen in allen Teilen der Straße erkennen

Aufgaben in diesem Lab

  • VM einrichten, um Videos für das Streaming aufzunehmen
  • Anwendung in Vertex AI Vision erstellen
  • Verfügbare Funktionen in Occupancy Analytics und ihre Verwendung
  • Anwendung bereitstellen
  • So suchen Sie im Media Warehouse von Vertex AI Vision nach Videos in Ihrem Speicher.
  • Hier erfahren Sie, wie Sie die Ausgabe mit BigQuery verbinden, SQL-Abfragen schreiben, um Informationen aus der JSON-Ausgabe des Modells zu extrahieren und das Ergebnis in Looker Studio in Echtzeit zu visualisieren.

2. Vorbereitung

  1. Wählen Sie in der Google Cloud Console auf der Seite für die Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines. Hinweis: Wenn Sie die Ressourcen, die Sie in diesem Verfahren erstellen, nicht behalten möchten, erstellen Sie ein Projekt, anstatt ein vorhandenes Projekt auszuwählen. Wenn Sie fertig sind, können Sie das Projekt löschen und dadurch alle damit verknüpften Ressourcen entfernen. Zur Projektauswahl
  2. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. Hier erfahren Sie, wie Sie prüfen, ob die Abrechnung für ein Projekt aktiviert ist.
  3. Aktivieren Sie die Compute Engine API und die Vision AI API. APIs aktivieren

Dienstkonto erstellen:

  1. Wechseln Sie in der Google Cloud Console zur Seite Dienstkonto erstellen. Zur Seite „Dienstkonto erstellen“
  2. Wählen Sie Ihr Projekt aus.
  3. Geben Sie im Feld Dienstkontoname einen Namen ein. In der Google Cloud Console wird das Feld Dienstkonto-ID auf Grundlage dieses Namens ausgefüllt. Geben Sie im Feld Beschreibung des Dienstkontos eine Beschreibung ein. Beispiel: Dienstkonto für Kurzanleitung.
  4. Klicken Sie auf Erstellen und fortfahren.
  5. Weisen Sie Ihrem Dienstkonto die folgenden Rollen zu, um Zugriff auf Ihr Projekt zu ermöglichen: Vision AI > Vision AI-Bearbeiter, Compute Engine > Compute-Instanzadministrator (Beta), Speicher > Storage Object Viewer † Wählen Sie aus der Liste Rolle auswählen eine Rolle aus. Wenn Sie weitere Rollen hinzufügen möchten, klicken Sie auf Weitere Rolle hinzufügen und fügen Sie jede weitere Rolle hinzu. Hinweis: Das Feld Rolle wirkt sich darauf aus, auf welche Ressourcen in Ihrem Projekt das Dienstkonto zugreifen kann. Sie können diese Rollen später widerrufen oder zusätzliche Rollen erteilen. In Produktionsumgebungen sollten Sie die Rollen „Inhaber“, „Bearbeiter“ oder „Betrachter“ nicht zuweisen. Weisen Sie stattdessen eine vordefinierte Rolle oder benutzerdefinierte Rolle zu, die Ihren Anforderungen entspricht.
  6. Klicken Sie auf Weiter.
  7. Klicken Sie auf Fertig, um das Erstellen des Dienstkontos abzuschließen. Schließen Sie das Browserfenster nicht. Sie verwenden es in der nächsten Aufgabe.

Erstellen Sie einen Dienstkontoschlüssel:

  1. Klicken Sie in der Google Cloud Console auf die E-Mail-Adresse für das Dienstkonto, das Sie erstellt haben.
  2. Klicken Sie auf Schlüssel.
  3. Klicken Sie auf Schlüssel hinzufügen und dann auf Neuen Schlüssel erstellen.
  4. Klicken Sie auf Erstellen. Daraufhin wird eine JSON-Schlüsseldatei auf Ihren Computer heruntergeladen.
  5. Klicken Sie auf Schließen.
  6. Installieren und initialisieren Sie die Google Cloud CLI.

† Rolle nur erforderlich, wenn Sie eine Beispielvideodatei aus einem Cloud Storage-Bucket kopieren.

3. VM zum Streamen von Videos einrichten

Bevor Sie eine App in Occupancy Analytics erstellen, müssen Sie einen Stream registrieren, der später von der App verwendet werden kann.

In dieser Anleitung erstellen Sie eine Compute Engine-VM-Instanz, die ein Video hostet. Anschließend senden Sie die gestreamten Videodaten von der VM.

Linux-VM erstellen

Der erste Schritt beim Senden von Videos von einer Compute Engine-VM-Instanz besteht darin, die VM-Instanz zu erstellen.

  1. Rufen Sie in der Console die Seite VM-Instanzen auf. Zu Seite „VM-Instanzen“
  2. Wählen Sie Ihr Projekt aus und klicken Sie auf Weiter.
  3. Klicken Sie auf Instanz erstellen.
  4. Geben Sie einen Namen für Ihre VM an. Weitere Informationen finden Sie unter Namenskonvention für Ressourcen.
  5. Ändern Sie optional die Zone für diese VM. In Compute Engine wird die Liste der Zonen in jeder Region zufällig angeordnet, um die Verwendung in mehreren Zonen zu fördern.
  6. Übernehmen Sie die restlichen Standardoptionen. Weitere Informationen zu diesen Optionen finden Sie unter VM erstellen und starten.
  7. Klicken Sie zum Erstellen und Starten der VM auf Erstellen.

VM-Umgebung einrichten

Nachdem die VM gestartet wurde, können Sie mithilfe der Console über den Browser eine SSH-Verbindung zur VM herstellen. Anschließend können Sie das vaictl-Befehlszeilentool herunterladen, um Videos in Ihren Stream aufzunehmen.

SSH-Verbindung zur VM herstellen

  1. Rufen Sie in der Console die Seite VM-Instanzen auf. Zu Seite „VM-Instanzen“
  2. Klicken Sie im Abschnitt Verbinden der von Ihnen erstellten Instanzzeile auf SSH. Dadurch wird eine SSH-Verbindung in einem neuen Browserfenster geöffnet. SSH-Option in der UI

vaictl-Befehlszeilentool herunterladen

  1. Laden Sie im Fenster SSH im Browser das Befehlszeilentool Vertex AI Vision (vaictl) mit dem folgenden Befehl herunter:
wget https://github.com/google/visionai/releases/download/v0.0.4/visionai_0.0-4_amd64.deb
  1. Installieren Sie das Befehlszeilentool mit dem folgenden Befehl:
sudo apt install ./visionai_0.0-4_amd64.deb
  1. Sie können die Installation testen, indem Sie den folgenden Befehl ausführen:
vaictl --help

4. Videodatei für Streaming aufnehmen

Nachdem Sie Ihre VM-Umgebung eingerichtet haben, können Sie eine Beispielvideodatei kopieren und dann mit vaictl die Videodaten in Ihre Belegungsanalyse-App streamen.

Aktivieren Sie zuerst die Vision AI API in der Cloud Console

Neuen Stream registrieren

  1. Klicken Sie im linken Bereich von Vertex AI Vision auf den Tab „Streams“.
  2. Klicken Sie auf „Registrieren“.
  3. Geben Sie im Namen des Streams „traffic-stream“ ein.
  4. Geben Sie in der Region „us-central1“ ein.
  5. Auf „Registrieren“ klicken

Es dauert einige Minuten, bis der Stream registriert ist.

Beispielvideo auf die VM kopieren

  1. Kopieren Sie mit dem folgenden Befehl gsutil cp im Fenster SSH im Browser für Ihre VM ein Beispielvideo. Ersetzen Sie die folgende Variable:
  • SOURCE: Der Speicherort einer zu verwendenden Videodatei. Sie können Ihre eigene Videodateiquelle (z. B. gs://BUCKET_NAME/FILENAME.mp4) oder das Beispielvideo (gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4)(Video mit Personen und Fahrzeugen, Quelle) verwenden.
export SOURCE=gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4
gsutil cp $SOURCE .

Videos von einer VM streamen und Daten in den Stream aufnehmen

  1. Verwenden Sie den folgenden Befehl, um diese lokale Videodatei an den App-Eingabestream zu senden. Sie müssen die folgenden Variablen ersetzen:
  • PROJECT_ID: Ihre Google Cloud-Projekt-ID.
  • LOCATION_ID: Ihre Standort-ID. Beispiel: us-central1. Weitere Informationen finden Sie unter Cloud-Standorte.
  • LOCAL_FILE: Der Dateiname einer lokalen Videodatei. Beispiel: street_vehicles_people.mp4.
  • –loop-Flag: Optional. Führt Dateidaten in eine Schleife ein, um das Streaming zu simulieren.
export PROJECT_ID=<Your Google Cloud project ID>
export LOCATION_ID=us-central1
export LOCAL_FILE=street_vehicles_people.mp4
  1. Mit diesem Befehl wird eine Videodatei in einen Stream gestreamt. Mit dem Flag „-loop“ wird das Video so lange in den Stream aufgenommen, bis du den Befehl beendest. Wir führen diesen Befehl als Hintergrundjob aus, damit er auch nach dem Trennen der VM weiterhin streamt.
  • ( Fügen Sie am Anfang „nohup“ und am Ende „&“ hinzu, um den Job im Hintergrund zu erstellen.)
nohup vaictl -p $PROJECT_ID \
    -l $LOCATION_ID \
    -c application-cluster-0 \
    --service-endpoint visionai.googleapis.com \
send video-file to streams 'traffic-stream' --file-path $LOCAL_FILE --loop &

Nach dem Start der vaictl-Datenaufnahme kann es etwa 100 Sekunden dauern, bis das Video im Dashboard angezeigt wird.

Sobald die Streamaufnahme verfügbar ist, können Sie den Videofeed im Vertex AI Vision-Dashboard auf dem Tab Streams ansehen. Wählen Sie dazu den Trafficstream-Stream aus.

Zum Tab „Streams“

Ansicht des gestreamten Live-Videos in der BenutzeroberflächeLiveansicht von Videos, die in den Stream der Google Cloud Console aufgenommen werden. Bildnachweis: Elizabeth Mavor auf Pixabay (Pixelation hinzugefügt).

5. Anwendung erstellen

Der erste Schritt besteht darin, eine App zu erstellen, die Ihre Daten verarbeitet. Stellen Sie sich eine Anwendung als automatisierte Pipeline vor, die Folgendes verbindet:

  • Datenaufnahme: Ein Videofeed wird in einen Stream aufgenommen.
  • Datenanalyse: Ein KI-Modell(Computer Vision) kann nach der Aufnahme hinzugefügt werden.
  • Datenspeicher: Die beiden Versionen des Videofeeds (der Originalstream und der vom KI-Modell verarbeitete Stream) können in einem Media Warehouse gespeichert werden.

In der Google Cloud Console wird eine Anwendung als Grafik dargestellt.

Leere App erstellen

Bevor Sie das App-Diagramm füllen können, müssen Sie zuerst eine leere App erstellen.

Anwendung in der Google Cloud Console erstellen

  1. Rufen Sie die Google Cloud Console auf.
  2. Öffnen Sie den Tab Anwendungen des Vertex AI Vision-Dashboards.

Gehen Sie zum Tab „Anwendungen“.

  1. Klicken Sie auf die Schaltfläche Create (Erstellen).
  2. Geben Sie „traffic-app“ als App-Namen ein und wählen Sie Ihre Region aus.
  3. Klicken Sie auf Erstellen.

Knoten der App-Komponente hinzufügen

Nachdem Sie die leere Anwendung erstellt haben, können Sie die drei Knoten zum Anwendungsdiagramm hinzufügen:

  1. Aufnahmeknoten: Die Streamressource, die Daten aufnimmt, die von einer von Ihnen erstellten Compute Engine-VM-Instanz gesendet wurden.
  2. Verarbeitungsknoten: Das Belegungsanalysemodell, das auf aufgenommene Daten angewendet wird.
  3. Speicherknoten: Das Media Warehouse, in dem verarbeitete Videos gespeichert werden und das als Metadatenspeicher dient. Die Metadatenspeicher enthalten Analyseinformationen über aufgenommene Videodaten und abgeleitete Informationen von den KI-Modellen.

Fügen Sie Ihrer Anwendung in der Console Komponentenknoten hinzu.

  1. Öffnen Sie den Tab Anwendungen des Vertex AI Vision-Dashboards. Gehen Sie zum Tab „Anwendungen“.
  2. Wählen Sie in der Traffic-App-Zeile die Option Grafik ansehen aus. Dadurch gelangen Sie zur Diagrammvisualisierung der Verarbeitungspipeline.

Datenaufnahmeknoten hinzufügen

  1. Um einen Eingabestream-Knoten hinzuzufügen, wählen Sie im Abschnitt Connectors des seitlichen Menüs die Option Streams aus.
  2. Wählen Sie im angezeigten Menü Stream im Abschnitt Quelle die Option Streams hinzufügen aus.
  3. Wählen Sie im Menü Streams hinzufügen die Option Neue Streams registrieren aus und fügen Sie den Streamnamen "Traffic-Stream" hinzu.
  4. Klicken Sie auf Streams hinzufügen, um den Stream zur App-Grafik hinzuzufügen.

Datenverarbeitungsknoten hinzufügen

  1. Wenn Sie den Knoten für das Belegungszahlmodell hinzufügen möchten, wählen Sie im Bereich Spezialisierte Modelle des seitlichen Menüs die Option Belegungsanalyse aus.
  2. Behalten Sie die Standardauswahl Personen und Fahrzeuge bei.
  3. Linien in Linienüberschneidungen hinzufügen. Zeichnen Sie mit dem Tool für Linien mit mehreren Punkten Linien, um aus- oder einfahrende Autos oder Personen zu erkennen.
  4. Zeichne die aktiven Zonen, um Personen/Fahrzeuge in diesem Bereich zu zählen.
  5. Fügen Sie Einstellungen für die Verweildauer hinzu, um Überlastungen zu erkennen, wenn eine aktive Zone gezeichnet wird.
  • Aktuell werden aktive Zonen und Linienkreuzungen nicht gleichzeitig unterstützt. Verwenden Sie jeweils nur eine Funktion.)

3acdb6f1e8474e07.png ce63449d601995e9.png

194c54d2bbcf7e8a.png

Datenspeicherknoten hinzufügen

  1. Wählen Sie im Abschnitt Connectors des seitlichen Menüs die Option Media Warehouse von Vertex AI Vision aus, um den Ausgabezielknoten (Speicherknoten) hinzuzufügen.
  2. Klicken Sie im Menü Media Warehouse von Vertex AI Vision auf Warehouse verbinden.
  3. Wählen Sie im Menü Warehouse verbinden die Option Neues Warehouse erstellen aus. Benennen Sie das Warehouse Traffic Warehouse und belassen Sie die TTL-Dauer bei 14 Tagen.
  4. Klicken Sie auf die Schaltfläche Erstellen, um das Warehouse hinzuzufügen.

6. Ausgabe mit BigQuery-Tabelle verbinden

Wenn Sie Ihrer Vertex AI Vision-Anwendung einen BigQuery-Connector hinzufügen, werden alle Ausgaben des verbundenen Anwendungsmodells in die Zieltabelle aufgenommen.

Sie können entweder eine eigene BigQuery-Tabelle erstellen und diese angeben, wenn Sie der Anwendung einen BigQuery-Connector hinzufügen, oder sie von der Vertex AI Vision-Anwendungsplattform automatisch erstellen lassen.

Automatische Tabellenerstellung

Wenn Sie die Vertex AI Vision-App-Plattform automatisch die Tabelle erstellen lassen, können Sie diese Option beim Hinzufügen des BigQuery-Connector-Knotens angeben.

Die folgenden Dataset- und Tabellenbedingungen gelten, wenn Sie die automatische Tabellenerstellung verwenden möchten:

  • Dataset: Der automatisch erstellte Dataset-Name lautet visionai_dataset.
  • Tabelle: Der automatisch erstellte Tabellenname lautet visionai_dataset.APPLICATION_ID.
  • Fehlerbehandlung:
  • Wenn eine Tabelle mit demselben Namen unter demselben Dataset vorhanden ist, erfolgt keine automatische Erstellung.
  1. Öffnen Sie den Tab Anwendungen des Vertex AI Vision-Dashboards. Gehen Sie zum Tab „Anwendungen“.
  2. Wählen Sie in der Liste neben dem Namen der App die Option App ansehen aus.
  3. Wählen Sie auf der Seite „Application Builder“ im Bereich Connectors die Option BigQuery aus.
  4. Lassen Sie das Feld BigQuery-Pfad leer. ee0b67d4ab2263d.png
  5. Wählen Sie unter Filialmetadaten von nur „Belegungsanalyse“ aus. und deaktivieren Sie „Streams“.

Die endgültige App-Grafik sollte so aussehen:

1787242465fd6da7.png

7. Anwendung zur Verwendung bereitstellen

Nachdem Sie Ihre End-to-End-Anwendung mit allen erforderlichen Komponenten erstellt haben, besteht der letzte Schritt zur Verwendung der Anwendung darin, sie bereitzustellen.

  1. Öffnen Sie den Tab Anwendungen des Vertex AI Vision-Dashboards. Gehen Sie zum Tab „Anwendungen“.
  2. Wählen Sie neben der Traffic-App in der Liste die Option Grafik anzeigen aus.
  3. Klicken Sie auf der Seite zum Erstellen von Anwendungsgrafiken auf die Schaltfläche Bereitstellen.
  4. Wählen Sie im folgenden Bestätigungsdialogfeld die Option Bereitstellen aus. Der Bereitstellungsvorgang kann einige Minuten dauern. Nach Abschluss der Bereitstellung werden neben den Knoten grüne Häkchen angezeigt. ee78bbf00e5db898.png

8. Videoinhalte im Storage Warehouse suchen

Nachdem Sie Videodaten in die Verarbeitungs-App aufgenommen haben, können Sie analysierte Videodaten ansehen und die Daten basierend auf Informationen zur Belegungsanalyse durchsuchen.

  1. Öffnen Sie den Tab Warehouses des Vertex AI Vision-Dashboards. Zum Tab „Warehouses“
  2. Suchen Sie das Traffic-Warehouse-Warehouse in der Liste und klicken Sie auf Assets anzeigen.
  3. Setzen Sie im Abschnitt Personenanzahl oder Fahrzeuganzahl den Wert für Min. auf 1 und den Wert für Max. auf 5.
  4. Klicken Sie auf Suchen, um verarbeitete Videodaten zu filtern, die im Media Warehouse von Vertex AI Vision gespeichert sind.

e636361b19738c8d.png

Eine Ansicht gespeicherter Videodaten, die den Suchkriterien in der Google Cloud Console entsprechen. Urheber des Videos: Elizabeth Mavor auf Pixabay (Suchkriterien angewendet).

9. Ausgabe in BigQuery-Tabelle analysieren

Zu BigQuery

Dataset auswählen: visionai_dataset

Wählen Sie die Tabelle aus: Ihre APPLICATION_ID (in diesem Fall „traffic-app“).

Klicken Sie auf das Dreipunkt-Menü rechts neben dem Tabellennamen und dann auf „Abfrage“.

Schreiben Sie die folgende Abfrage

Abfrage 1: Abfrage zur Prüfung der Fahrzeuganzahl, die pro Zeile jede Zeile überschreitet

abc.sql

—- Get list of active marked lines for each timeframe
WITH line_array AS (
  SELECT
  t.ingestion_time AS ingestion_time,
  JSON_QUERY_ARRAY(t.annotation.stats["crossingLineCounts"]) AS lines
  FROM
  `PROJ_ID.visionai_dataset.APP_ID` AS t
),
—- Flatten active lines to get individual entities details
flattened AS (
  SELECT
  line_array.ingestion_time,
  JSON_VALUE(line.annotation.id) as line_id,
  JSON_QUERY_ARRAY(line["positiveDirectionCounts"]) AS entities
  FROM line_array, unnest(line_array.lines) as line
 )
—- Generate aggregate vehicle count per zone w.r.t time 
SELECT
  STRING(TIMESTAMP_TRUNC(ingestion_time, MINUTE) ) AS time, line_id,
  SUM(INT64(entity["count"])) as vehicle_count
FROM
  flattened, UNNEST(flattened.entities) AS entity
WHERE JSON_VALUE(entity['entity']['labelString']) = 'Vehicle'
GROUP BY time, line_id

Abfrage 2: Abfrage zum Prüfen der Fahrzeuganzahl pro Minute in jeder Zone

—- Get list of active zones for each timeframe
WITH zone_array AS (
     SELECT
     t.ingestion_time AS ingestion_time,
     JSON_QUERY_ARRAY(t.annotation.stats["activeZoneCounts"]) AS zones
     FROM
     `PROJ_ID.visionai_dataset.APP_ID` AS t
),
—- Flatten active zones to get individual entities details
flattened AS (
   SELECT zone_array.ingestion_time, JSON_VALUE(zone.annotation.id) as zone_id,
         JSON_QUERY_ARRAY(zone["counts"]) AS entities
   FROM zone_array, unnest(zone_array.zones) as zone
 )
—- Generate aggregate vehicle count per zone w.r.t time 
SELECT 
STRING(TIMESTAMP_TRUNC(ingestion_time, MINUTE) ) AS time, 
zone_id,
SUM(INT64(entity["count"])) as vehicle_count
FROM flattened, UNNEST(flattened.entities) AS entity
WHERE JSON_VALUE(entity['entity']['labelString']) = 'Vehicle'
GROUP BY time, zone_id

In den obigen Abfragen können Sie „Fahrzeug“ ändern zu "Person" Person zu zählen.

In diesem Codelab werden nur die Beispieldaten und die Visualisierung für Abfrage 1 verwendet. Für Abfrage 2 können Sie ähnlich vorgehen.

e6fd891f3a46246.png

Klicken Sie im Menü rechts auf „Daten auswerten“ und wählen Sie „Mit Looker Studio auswerten“ aus.

9e737ddb4d0d25b6.png

Wählen Sie im Feld „Dimension“ fügen Sie die Uhrzeit hinzu und ändern Sie die Uhrzeitkonfiguration in Datum-Uhrzeit. In „Aufschlüsselungsdimension“ fügen Sie „line_id“ hinzu. b5da9704ccd8db.png

Das Diagramm oben zeigt die Anzahl der Fahrzeuge/Personen, die pro Minute auf einer Linie fahren.

Der tiefblaue und der hellblaue Balken stehen für die beiden verschiedenen Linien-IDs.

10. Glückwunsch

Sie haben das Lab abgeschlossen.

Aufräumen

Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, können Sie entweder das Projekt löschen, das die Ressourcen enthält, oder das Projekt beibehalten und die einzelnen Ressourcen löschen.

Projekt löschen

Einzelne Ressourcen löschen

Ressourcen

https://cloud.google.com/vision-ai/docs/overview

https://cloud.google.com/vision-ai/docs/occupancy-count-tutorial

Feedback

Klicken Sie hier, um Feedback zu geben.

Umfrage

Wie möchten Sie diese Anleitung nutzen?

<ph type="x-smartling-placeholder"></ph> Nur bis zum Ende lesen Lies sie dir durch und absolviere die Übungen

Wie nützlich war dieses Codelab?

<ph type="x-smartling-placeholder"></ph> Sehr nützlich Nützlich