Analizzare le immagini

Questo tutorial mostra come ottenere insight da dati di immagini non strutturati integrando BigQuery ML con Gemini. Nel tutorial, crei un modello remoto basato su gemini-2.5-flash e utilizzi la funzione `AI.GENERATE_TEXT` per estrarre automaticamente i metadati, come titoli e anni di uscita, da una raccolta di poster di film.AI.GENERATE_TEXT

Obiettivi

  • Crea una tabella di oggetti BigQuery sui dati delle immagini in un bucket Cloud Storage.
  • Crea un modello remoto BigQuery ML che abbia come target il modello gemini-2.5-flash di Vertex AI.
  • Utilizza il modello remoto con la funzione AI.GENERATE_TEXT per identificare i film associati a una serie di poster di film.

Costi

Questo tutorial utilizza i seguenti componenti fatturabili di Google Cloud:

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il calcolatore prezzi.

Al termine delle attività descritte in questo documento, puoi evitare l'addebito di ulteriori costi eliminando le risorse che hai creato. Per saperne di più, consulta Esegui la pulizia.

Prima di iniziare

  1. Nella Google Cloud console, nella pagina di selezione del progetto, seleziona o crea un Google Cloud progetto.

    Ruoli necessari per selezionare o creare un progetto

    • Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto su cui ti è stato concesso un ruolo.
    • Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto (roles/resourcemanager.projectCreator), che contiene l' resourcemanager.projects.create autorizzazione. Scopri come concedere i ruoli.

    Vai al selettore di progetti

  2. Verifica che la fatturazione sia abilitata per il tuo Google Cloud progetto.

  3. Abilita le API BigQuery, BigQuery Connection e Vertex AI.

    Ruoli necessari per abilitare le API

    Per abilitare le API, devi disporre del ruolo IAM Service Usage Admin (roles/serviceusage.serviceUsageAdmin), che contiene l'autorizzazione serviceusage.services.enable. Scopri come concedere i ruoli.

    Abilita le API

Ruoli obbligatori

Per eseguire questo tutorial, devi disporre dei seguenti ruoli Identity and Access Management (IAM):

  • Crea e utilizza set di dati, connessioni e modelli BigQuery: BigQuery Admin (roles/bigquery.admin).
  • Concedi le autorizzazioni al account di servizio della connessione: Project IAM Admin (roles/resourcemanager.projectIamAdmin).

Questi ruoli predefiniti contengono le autorizzazioni necessarie per eseguire le attività descritte in questo documento. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

  • Crea un set di dati: bigquery.datasets.create
  • Crea, delega e utilizza una connessione: bigquery.connections.*
  • Imposta la connessione predefinita: bigquery.config.*
  • Imposta le autorizzazioni del account di servizio: resourcemanager.projects.getIamPolicy e resourcemanager.projects.setIamPolicy
  • Crea una tabella di oggetti: bigquery.tables.create e bigquery.tables.update
  • Crea un modello ed esegui l'inferenza:
    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Prepara l'ambiente

Per eseguire l'inferenza di BigQuery ML sulle tabelle di oggetti utilizzando gemini-2.5-flash, devi assegnare una prenotazione BigQuery al tuo progetto. Se al tuo progetto è già assegnata una prenotazione, puoi saltare questo passaggio.

Crea una prenotazione

  1. Nella Google Cloud console, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel menu di navigazione, fai clic su Gestione della capacità.

  3. Fai clic su Crea prenotazione.

  4. Nella pagina Crea prenotazione:

    1. In Nome prenotazione, inserisci bqml-tutorial-reservation.
    2. In Località, seleziona Stati Uniti (più regioni negli Stati Uniti).
    3. Lascia invariate le impostazioni predefinite rimanenti e fai clic su Salva.

Assegna la prenotazione

  1. Nella Google Cloud console, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel menu di navigazione, fai clic su Gestione della capacità.

  3. Nella tabella Prenotazioni slot, individua la prenotazione che vuoi assegnare al tuo progetto.

  4. Fai clic su Visualizza azioni > Crea assegnazione.

  5. In Crea un'assegnazione, fai clic su Sfoglia e seleziona il tuo progetto.

  6. In Tipo di prestazione, seleziona QUERY. Questa selezione garantisce che le query SQL utilizzino gli slot di questa prenotazione.

  7. Fai clic su Crea.

Crea un set di dati

Crea un set di dati BigQuery per archiviare il tuo modello ML.

Console

  1. Nella Google Cloud console, vai alla pagina BigQuery.

    Vai alla pagina BigQuery

  2. Nel riquadro Explorer, fai clic sul nome del progetto.

  3. Fai clic su Visualizza azioni > Crea set di dati.

  4. Nella pagina Crea set di dati:

    • In ID set di dati, inserisci bqml_tutorial.

    • In Tipo di località, seleziona Più regioni e poi seleziona Stati Uniti.

    • Lascia invariate le impostazioni predefinite rimanenti e fai clic su Crea set di dati.

bq

Per creare un nuovo set di dati, utilizza il bq mk --dataset comando.

  1. Crea un set di dati denominato bqml_tutorial con la località dei dati impostata su US.

    bq mk --dataset \
      --location=US \
      --description "BigQuery ML tutorial dataset." \
      bqml_tutorial
  2. Verifica che il set di dati sia stato creato:

    bq ls

API

Chiama il datasets.insert metodo con una risorsa del set di dati definita.

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

Crea la tabella di oggetti

Crea una tabella di oggetti sulle immagini dei poster di film nel bucket Cloud Storage pubblico . La tabella di oggetti ti consente di analizzare le immagini senza spostarle da Cloud Storage.

  1. Nella Google Cloud console, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor di query, esegui la query seguente per creare la tabella di oggetti:

    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/*']);

Crea il modello remoto

Crea un modello remoto che rappresenti un modello gemini-2.5-flash di Vertex AI:

  1. Nella Google Cloud console, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor di query, esegui la query seguente per creare il modello remoto:

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

    Il completamento della query potrebbe richiedere alcuni minuti, dopodiché il modello gemini-vision verrà visualizzato nel set di dati bqml_tutorial nel riquadro Explorer. Poiché la query utilizza un'istruzione CREATE MODEL per creare un modello, non vengono visualizzati i risultati della query.

Analizza i poster dei film

Utilizza il modello remoto per analizzare i poster dei film e determinare il film rappresentato da ogni poster, quindi scrivi questi dati in una tabella.

  1. Nella Google Cloud console, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor di query, esegui la query seguente per analizzare le immagini dei poster dei film:

    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. Nell'editor di query, esegui l'istruzione seguente per visualizzare i dati della tabella:

    SELECT * FROM `bqml_tutorial.movie_posters_results`;

    L'output è simile al seguente:

    +--------------------------------------------+----------------------------------+
    | 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                    |
    |                                            | }                                |
    |                                            |                              |
    +--------------------------------------------+----------------------------------+
    

Formatta l'output del modello

Per semplificare la lettura dei dati del titolo e dell'anno del film, formatta i dati restituiti dal modello.

  1. Nella Google Cloud console, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor di query, esegui la query seguente per formattare i dati:

    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. Nell'editor di query, esegui l'istruzione seguente per visualizzare i dati della tabella:

    SELECT * FROM `bqml_tutorial.movie_posters_results_formatted`;

    L'output è simile al seguente:

    +--------------------------------------------+----------------------------+------+
    | 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            |                            |      |
    +--------------------------------------------+----------------------------+------+
    

Elimina il progetto

  1. Nella Google Cloud console, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare e fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID progetto e fai clic su Chiudi per eliminare il progetto.

Elimina singole risorse

Se vuoi riutilizzare il progetto, elimina le risorse che hai creato per il tutorial.

Eliminazione del set di dati

Console

Elimina l'intero set di dati bqml_tutorial e tutti i relativi contenuti eseguendo il seguente comando SQL:

DROP SCHEMA IF EXISTS `bqml_tutorial` CASCADE;

bq

Elimina l'intero set di dati bqml_tutorial e tutti i relativi contenuti:

bq rm -r bqml_tutorial

Elimina la prenotazione

Console

Se hai creato una prenotazione BigQuery nell'ambito di questo tutorial, devi rimuoverla per evitare addebiti continui per gli slot.

  1. Nella Google Cloud console, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel menu di navigazione, fai clic su Gestione della capacità.

  3. Nella tabella Prenotazioni slot, individua bqml-tutorial-reservation.

  4. Fai clic su Visualizza azioni > Elimina.

bq

Se hai creato una prenotazione BigQuery denominata bqml-tutorial-reservation nella località us, utilizza il seguente comando per rimuoverla:

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

Elimina la connessione

Console

  1. Nella Google Cloud console, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro a sinistra, fai clic su Esplora, individua il progetto e poi fai clic su Connessioni.

  3. Nella tabella, individua la connessione.

  4. Fai clic su Visualizza azioni > Elimina.

bq

Elimina la connessione:

bq rm --connection --location=us CONNECTION_ID

Sostituisci CONNECTION_ID con l'ID effettivo della connessione.

Passaggi successivi