Bilder analysieren

In dieser Anleitung erfahren Sie, wie Sie mit der Integration von BigQuery ML in Gemini Erkenntnisse aus unstrukturierten Bilddaten gewinnen. In der Anleitung erstellen Sie ein Remote-Modell, das auf gemini-2.5-flash basiert, und verwenden die Funktion AI.GENERATE_TEXT , um automatisch Metadaten wie Titel und Erscheinungsjahre aus einer Sammlung von Filmplakaten zu extrahieren.

Ziele

  • Erstellen Sie eine BigQuery-Objekttabelle für Bilddaten in einem Cloud Storage-Bucket.
  • Erstellen Sie ein BigQuery ML-Remote-Modell, das auf das gemini-2.5-flash-Modell von Vertex AI ausgerichtet ist.
  • Verwenden Sie das Remote-Modell mit der Funktion AI.GENERATE_TEXT, um die Filme zu identifizieren, die mit einer Reihe von Filmplakaten verknüpft sind.

Kosten

In dieser Anleitung werden die folgenden kostenpflichtigen Komponenten von Google Cloudverwendet:

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.

Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.

Hinweis

  1. Wählen Sie in der Google Cloud Console auf der Seite für die Projektauswahl ein Projekt von aus oder erstellen Sie eines Google Cloud .

    Rollen, die zum Auswählen oder Erstellen eines Projekts erforderlich sind

    • Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können ein beliebiges Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
    • Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Projektersteller“ (roles/resourcemanager.projectCreator), die die resourcemanager.projects.create Berechtigung enthält. Informationen zum Zuweisen von Rollen.

    Zur Projektauswahl

  2. Prüfen Sie, ob für Ihr Google Cloud Projekt die Abrechnung aktiviert ist.

  3. Aktivieren Sie die BigQuery-, BigQuery Connection- und Vertex AI-APIs.

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin), die die Berechtigung serviceusage.services.enable enthält. Informationen zum Zuweisen von Rollen.

    APIs aktivieren

Erforderliche Rollen

Zum Ausführen dieser Anleitung benötigen Sie die folgenden IAM-Rollen (Identity and Access Management):

  • BigQuery-Datasets, -Verbindungen und -Modelle erstellen und verwenden: BigQuery-Administrator (roles/bigquery.admin).
  • Berechtigungen für das Dienstkonto der Verbindung gewähren: Projekt-IAM-Administrator (roles/resourcemanager.projectIamAdmin).

Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Ausführen der Aufgaben in diesem Dokument erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

  • Dataset erstellen: bigquery.datasets.create
  • Verbindung erstellen, delegieren und verwenden: bigquery.connections.*
  • Standardverbindung festlegen: bigquery.config.*
  • Dienstkontoberechtigungen festlegen: resourcemanager.projects.getIamPolicy und resourcemanager.projects.setIamPolicy
  • Objekttabelle erstellen: bigquery.tables.create und bigquery.tables.update
  • Modell erstellen und Inferenzen ausführen:
    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Umgebung vorbereiten

Wenn Sie BigQuery ML-Inferenzen für Objekttabellen mit gemini-2.5-flashausführen möchten, müssen Sie Ihrem Projekt eine BigQuery-Reservierung zuweisen. Wenn Ihrem Projekt bereits eine Reservierung zugewiesen ist, können Sie diesen Schritt überspringen.

Reservierung erstellen

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Klicken Sie im Navigationsmenü auf Kapazitätsverwaltung.

  3. Klicken Sie auf Reservierung erstellen.

  4. Führen Sie auf der Seite Reservierung erstellen die folgenden Schritte aus:

    1. Geben Sie unter Name der Reservierung bqml-tutorial-reservation ein.
    2. Wählen Sie unter Standort die Option USA (mehrere Regionen in den USA) aus.
    3. Übernehmen Sie die verbleibenden Standardeinstellungen unverändert und klicken Sie auf Speichern.

Reservierung zuweisen

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Klicken Sie im Navigationsmenü auf Kapazitätsverwaltung.

  3. Suchen Sie in der Tabelle Slotreservierungen nach der Reservierung, die Sie Ihrem Projekt zuweisen möchten.

  4. Klicken Sie auf Aktionen ansehen > Zuweisung erstellen.

  5. Klicken Sie unter Zuweisung erstellen auf Durchsuchen und wählen Sie Ihr Projekt aus.

  6. Wählen Sie unter Jobtyp die Option ABFRAGE aus. Durch diese Auswahl wird sichergestellt, dass Ihre SQL-Abfragen die Slots dieser Reservierung verwenden.

  7. Klicken Sie auf Erstellen.

Dataset erstellen

Erstellen Sie ein BigQuery-Dataset, um Ihr ML-Modell zu speichern.

Console

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery auf.

    Zur Seite "BigQuery"

  2. Klicken Sie im Bereich Explorer auf den Namen Ihres Projekts.

  3. Klicken Sie auf Aktionen ansehen > Dataset erstellen.

  4. Führen Sie auf der Seite Dataset erstellen die folgenden Schritte aus:

    • Geben Sie unter Dataset-ID bqml_tutorial ein.

    • Wählen Sie unter Standorttyp die Option Multiregional und dann USA aus.

    • Übernehmen Sie die verbleibenden Standardeinstellungen unverändert und klicken Sie auf Dataset erstellen.

bq

Verwenden Sie den bq mk --dataset Befehl, um ein neues Dataset zu erstellen.

  1. Erstellen Sie ein Dataset mit dem Namen bqml_tutorial und legen Sie den Speicherort der Daten auf US fest.

    bq mk --dataset \
      --location=US \
      --description "BigQuery ML tutorial dataset." \
      bqml_tutorial
  2. Prüfen Sie, ob das Dataset erstellt wurde:

    bq ls

API

Rufen Sie die datasets.insert Methode mit einer definierten Dataset-Ressource auf.

{
  "datasetReference": {
     "datasetId": "bqml_tutorial"
  }
}

Objekttabelle erstellen

Erstellen Sie eine Objekttabelle für die Bilder von Filmplakaten im öffentlichen Cloud Storage Bucket. Mit der Objekttabelle können Sie die Bilder analysieren, ohne sie aus Cloud Storage zu verschieben.

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Führen Sie im Abfrageeditor die folgende Abfrage aus, um die Objekttabelle zu erstellen:

    CREATE OR REPLACE EXTERNAL TABLE `bqml_tutorial.movie_posters`
      WITH CONNECTION DEFAULT
      OPTIONS (
        object_metadata = 'SIMPLE',
        uris =
          ['gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters/*']);

Remote-Modell erstellen

Erstellen Sie ein Remote-Modell, das ein gemini-2.5-flash-Modell von Vertex AI darstellt:

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Führen Sie im Abfrageeditor die folgende Abfrage aus, um das Remote-Modell zu erstellen:

    CREATE OR REPLACE MODEL `bqml_tutorial.gemini-vision`
      REMOTE WITH CONNECTION DEFAULT
      OPTIONS (ENDPOINT = 'gemini-2.5-flash');

    Es kann einige Minuten dauern, bis die Abfrage abgeschlossen ist. Das Modell gemini-vision wird dann im Dataset bqml_tutorial im Bereich Explorer angezeigt. Da die Abfrage eine CREATE MODEL-Anweisung zum Erstellen eines Modells verwendet, gibt es keine Abfrageergebnisse.

Filmposter analysieren

Verwenden Sie das Remote-Modell, um die Filmplakate zu analysieren und zu ermitteln, welchen Film jedes Plakat darstellt. Schreiben Sie diese Daten dann in eine Tabelle.

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Führen Sie im Abfrageeditor die folgende Abfrage aus, um die Bilder von Filmplakaten zu analysieren:

    CREATE OR REPLACE TABLE
      `bqml_tutorial.movie_posters_results` AS (
      SELECT
        uri,
       result
      FROM
        AI.GENERATE_TEXT( MODEL `bqml_tutorial.gemini-vision`,
          TABLE `bqml_tutorial.movie_posters`,
          STRUCT( 0.2 AS temperature,
            'For the movie represented by this poster, what is the movie title and year of release? Answer in JSON format with two keys: title, year. title should be string, year should be integer.' AS PROMPT)));
        
  3. Führen Sie im Abfrageeditor folgende Anweisung aus, um die Tabellendaten aufzurufen:

    SELECT * FROM `bqml_tutorial.movie_posters_results`;

    Die Ausgabe sieht in etwa so aus:

    +--------------------------------------------+----------------------------------+
    | uri                                        | result                           |
    +--------------------------------------------+----------------------------------+
    | gs://cloud-samples-data/vertex-ai/dataset- | json                          |
    | management/datasets/classic-movie-         | {                                |
    | posters/little_annie_rooney.jpg            |  "title": "Little Annie Rooney", |
    |                                            |  "year": 1912                    |
    |                                            | }                                |
    |                                            |                              |
    +--------------------------------------------+----------------------------------+
    | gs://cloud-samples-data/vertex-ai/dataset- | json                          |
    | management/datasets/classic-movie-         | {                                |
    | posters/mighty_like_a_mouse.jpg            |  "title": "Mighty Like a Moose", |
    |                                            |  "year": 1926                    |
    |                                            | }                                |
    |                                            |                              |
    +--------------------------------------------+----------------------------------+
    | gs://cloud-samples-data/vertex-ai/dataset- | json                          |
    | management/datasets/classic-movie-         | {                                |
    | posters/brown_of_harvard.jpeg              |  "title": "Brown of Harvard",    |
    |                                            |  "year": 1926                    |
    |                                            | }                                |
    |                                            |                              |
    +--------------------------------------------+----------------------------------+
    

Modellausgabe formatieren

Formatieren Sie die vom Modell zurückgegebenen Daten, um den Filmtitel und die Jahresdaten besser lesbar zu machen.

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Führen Sie im Abfrageeditor die folgende Abfrage aus, um die Daten zu formatieren:

    CREATE OR REPLACE TABLE
      `bqml_tutorial.movie_posters_results_formatted` AS (
      SELECT
        uri,
        JSON_QUERY(RTRIM(LTRIM(results.result, " ```json"), "```"), "$.title") AS title,
        JSON_QUERY(RTRIM(LTRIM(results.result, " ```json"), "```"), "$.year") AS year
      FROM
        `bqml_tutorial.movie_posters_results` results );
  3. Führen Sie im Abfrageeditor folgende Anweisung aus, um die Tabellendaten aufzurufen:

    SELECT * FROM `bqml_tutorial.movie_posters_results_formatted`;

    Die Ausgabe sieht in etwa so aus:

    +--------------------------------------------+----------------------------+------+
    | uri                                        | title                      | year |
    +--------------------------------------------+----------------------------+------+
    | gs://cloud-samples-data/vertex-ai/dataset- | "Barque sortant du port"   | 1895 |
    | management/datasets/classic-movie-         |                            |      |
    | posters/barque_sortant_du_port.jpeg        |                            |      |
    +--------------------------------------------+----------------------------+------+
    | gs://cloud-samples-data/vertex-ai/dataset- | "The Great Train Robbery"  | 1903 |
    | management/datasets/classic-movie-         |                            |      |
    | posters/the_great_train_robbery.jpg        |                            |      |
    +--------------------------------------------+----------------------------+------+
    | gs://cloud-samples-data/vertex-ai/dataset- | "Little Annie Rooney"      | 1912 |
    | management/datasets/classic-movie-         |                            |      |
    | posters/little_annie_rooney.jpg            |                            |      |
    +--------------------------------------------+----------------------------+------+
    

Projekt löschen

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Herunterfahren), um das Projekt zu löschen.

Einzelne Ressourcen löschen

Wenn Sie das Projekt wiederverwenden möchten, löschen Sie die für die Anleitung erstellten Ressourcen.

Dataset löschen

Console

Löschen Sie das gesamte Dataset bqml_tutorial und alle zugehörigen Inhalte, indem Sie den folgenden SQL-Befehl ausführen:

DROP SCHEMA IF EXISTS `bqml_tutorial` CASCADE;

bq

Löschen Sie das gesamte Dataset bqml_tutorial und alle zugehörigen Inhalte:

bq rm -r bqml_tutorial

Reservierung löschen

Console

Wenn Sie im Rahmen dieser Anleitung eine BigQuery-Reservierung erstellt haben, sollten Sie sie entfernen, um weitere Slotgebühren zu vermeiden.

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Klicken Sie im Navigationsmenü auf Kapazitätsverwaltung.

  3. Suchen Sie in der Tabelle Slotreservierungen nach bqml-tutorial-reservation.

  4. Klicken Sie auf Aktionen ansehen > Löschen.

bq

Wenn Sie eine BigQuery-Reservierung mit dem Namen bqml-tutorial-reservation am Standort us erstellt haben, verwenden Sie den folgenden Befehl, um sie zu entfernen:

bq rm --reservation --location=us bqml-tutorial-reservation

Verbindung löschen

Console

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Klicken Sie im linken Bereich auf Explorer, suchen Sie nach Ihrem Projekt und klicken Sie dann auf Verbindungen.

  3. Suchen Sie in der Tabelle nach Ihrer Verbindung.

  4. Klicken Sie auf „Aktionen ansehen > Löschen.

bq

Verbindung löschen:

bq rm --connection --location=us CONNECTION_ID

Ersetzen Sie CONNECTION_ID durch die tatsächliche ID Ihrer Verbindung.

Nächste Schritte