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-flashdi Vertex AI. - Utilizza il modello remoto con la funzione
AI.GENERATE_TEXTper 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
-
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.createautorizzazione. Scopri come concedere i ruoli.
-
Verifica che la fatturazione sia abilitata per il tuo Google Cloud progetto.
-
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'autorizzazioneserviceusage.services.enable. Scopri come concedere i ruoli.
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.getIamPolicyeresourcemanager.projects.setIamPolicy - Crea una tabella di oggetti:
bigquery.tables.createebigquery.tables.update - Crea un modello ed esegui l'inferenza:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateDatabigquery.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
Nella Google Cloud console, vai alla pagina BigQuery.
Nel menu di navigazione, fai clic su Gestione della capacità.
Fai clic su Crea prenotazione.
Nella pagina Crea prenotazione:
- In Nome prenotazione, inserisci
bqml-tutorial-reservation. - In Località, seleziona Stati Uniti (più regioni negli Stati Uniti).
- Lascia invariate le impostazioni predefinite rimanenti e fai clic su Salva.
- In Nome prenotazione, inserisci
Assegna la prenotazione
Nella Google Cloud console, vai alla pagina BigQuery.
Nel menu di navigazione, fai clic su Gestione della capacità.
Nella tabella Prenotazioni slot, individua la prenotazione che vuoi assegnare al tuo progetto.
Fai clic su Visualizza azioni > Crea assegnazione.
In Crea un'assegnazione, fai clic su Sfoglia e seleziona il tuo progetto.
In Tipo di prestazione, seleziona QUERY. Questa selezione garantisce che le query SQL utilizzino gli slot di questa prenotazione.
Fai clic su Crea.
Crea un set di dati
Crea un set di dati BigQuery per archiviare il tuo modello ML.
Console
Nella Google Cloud console, vai alla pagina BigQuery.
Nel riquadro Explorer, fai clic sul nome del progetto.
Fai clic su Visualizza azioni > Crea set di dati.
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.
Crea un set di dati denominato
bqml_tutorialcon la località dei dati impostata suUS.bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
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.
Nella Google Cloud console, vai alla pagina BigQuery.
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:
Nella Google Cloud console, vai alla pagina BigQuery.
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-visionverrà visualizzato nel set di datibqml_tutorialnel riquadro Explorer. Poiché la query utilizza un'istruzioneCREATE MODELper 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.
Nella Google Cloud console, vai alla pagina BigQuery.
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)));
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.
Nella Google Cloud console, vai alla pagina BigQuery.
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 );
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
- Nella Google Cloud console, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare e fai clic su Elimina.
- 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.
Nella Google Cloud console, vai alla pagina BigQuery.
Nel menu di navigazione, fai clic su Gestione della capacità.
Nella tabella Prenotazioni slot, individua
bqml-tutorial-reservation.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
Nella Google Cloud console, vai alla pagina BigQuery.
Nel riquadro a sinistra, fai clic su Esplora, individua il progetto e poi fai clic su Connessioni.
Nella tabella, individua la connessione.
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
- Scopri di più sulle funzioni di AI generativa in BigQuery.
- Scopri come ottimizzare un modello utilizzando i tuoi dati.
- Esplora architetture, diagrammi e best practice di riferimento su Google Cloud. Consulta il nostro Cloud Architecture Center.