Bilder mit einem Gemini-Modell analysieren

In dieser Anleitung erfahren Sie, wie Sie ein BigQuery ML Remote-Modell erstellen, das auf dem gemini-2.5-flash Modellbasiert, und dieses Modell dann mit der AI.GENERATE_TEXT Funktion zum Analysieren einer Reihe von Filmposterbildern verwenden.

In dieser Anleitung werden die folgenden Aufgaben behandelt:

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

Die Filmposterdaten sind im öffentlichen Cloud Storage-Bucket gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters verfügbar.

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 erteilen: 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.*
  • Berechtigungen für Dienstkonten 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.

Kosten

In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:

  • BigQuery ML: You incur costs for the data that you process in BigQuery.
  • Vertex AI: You incur costs for calls to the Vertex AI model that is represented by the BigQuery remote model.

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

Neuen Google Cloud Nutzern vonsteht möglicherweise eine kostenlose Testversion zur Verfügung.

Weitere Informationen zu den Preisen von BigQuery finden Sie unter BigQuery: Preise in der BigQuery-Dokumentation.

Weitere Informationen zu den Preisen für generative KI in Vertex AI finden Sie auf der Seite Vertex AI: Preise.

Hinweis

  1. Wählen Sie in der Google Cloud Console auf der Seite für die Projektauswahl ein Projekt vonaus 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 gewährt 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 die Abrechnung für Ihr Google Cloud Projekt aktiviert ist.

  3. Aktivieren Sie die BigQuery API, die BigQuery Connection API und die Vertex AI API.

    Rollen, die zum Aktivieren von APIs erforderlich sind

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

    APIs aktivieren

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 Multi-Region 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 Datenstandort 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 mit den Filmposterbildern 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 Vertex AI-Modell gemini-2.5-flash 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');

    Die Abfrage dauert mehrere Sekunden. Anschließend wird das Modell gemini-vision im bqml_tutorial-Dataset des Bereichs Explorer angezeigt. Da die Abfrage eine CREATE MODEL-Anweisung zum Erstellen eines Modells verwendet, gibt es keine Abfrageergebnisse.

Filmposter analysieren

Analysieren Sie mit dem Remote-Modell die Filmposter, ermitteln Sie, welchen Film jedes Poster darstellt, und schreiben Sie diese Daten 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 Filmposterbilder 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 Filmanalysedaten, 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            |                            |      |
    +--------------------------------------------+----------------------------+------+
    

Bereinigen

  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 (Beenden), um das Projekt zu löschen.