Analisar imagens
Neste tutorial, mostramos como extrair insights de dados de imagem não estruturados integrando o BigQuery ML ao Gemini. No tutorial, você
cria um
modelo remoto
baseado em
gemini-2.5-flash
e usa a função
AI.GENERATE_TEXT
para extrair automaticamente metadados, como títulos e anos de lançamento,
de uma coleção de pôsteres de filmes.
Objetivos
- Criar uma tabela de objetos do BigQuery sobre dados de imagem em um bucket do Cloud Storage.
- Crie um modelo remoto do BigQuery ML que segmente o modelo
gemini-2.5-flashda Vertex AI. - Use o modelo remoto com a função
AI.GENERATE_TEXTpara identificar os filmes associados a um conjunto de pôsteres de filmes.
Custos
Neste tutorial, usamos os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Para mais informações, consulte Limpeza.
Antes de começar
-
No console do Google Cloud , na página do seletor de projetos, selecione ou crie um projeto do Google Cloud .
Funções necessárias para selecionar ou criar um projeto
- Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
-
Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos
(
roles/resourcemanager.projectCreator), que contém a permissãoresourcemanager.projects.create. Saiba como conceder papéis.
-
Verifique se o faturamento está ativado para o projeto do Google Cloud .
-
Ative as APIs BigQuery, BigQuery Connection e Vertex AI.
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (
roles/serviceusage.serviceUsageAdmin), que contém a permissãoserviceusage.services.enable. Saiba como conceder papéis.
Funções exigidas
Para seguir este tutorial, você precisa dos seguintes papéis do Identity and Access Management (IAM):
- Criar e usar conjuntos de dados, conexões e modelos do BigQuery: administrador do BigQuery (
roles/bigquery.admin). - Conceda permissões à conta de serviço da conexão: administrador do IAM do projeto (
roles/resourcemanager.projectIamAdmin).
Esses papéis predefinidos contêm as permissões necessárias para executar as tarefas neste documento. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
- Criar um conjunto de dados:
bigquery.datasets.create - Criar, delegar e usar uma conexão:
bigquery.connections.* - Defina a conexão padrão:
bigquery.config.* - Defina as permissões da conta de serviço:
resourcemanager.projects.getIamPolicyeresourcemanager.projects.setIamPolicy - Crie uma tabela de objetos:
bigquery.tables.createebigquery.tables.update - Crie um modelo e execute a inferência:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateDatabigquery.models.updateMetadata
Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.
Prepare o ambiente
Para realizar a inferência do BigQuery ML em tabelas de objetos usando o gemini-2.5-flash, é necessário atribuir uma reserva do BigQuery ao seu projeto. Se já houver uma reserva atribuída ao seu projeto, pule esta etapa.
Criar uma reserva
No console do Google Cloud , acesse a página BigQuery.
No menu de navegação, clique em Gerenciamento de capacidade.
Clique em Criar reserva.
Na página Criar reserva, siga estas etapas:
- Em Nome da reserva, insira
bqml-tutorial-reservation. - Em Localização, selecione us (várias regiões nos Estados Unidos).
- Mantenha as configurações padrão restantes e clique em Salvar.
- Em Nome da reserva, insira
Atribuir a reserva
No console do Google Cloud , acesse a página BigQuery.
No menu de navegação, clique em Gerenciamento de capacidade.
Na tabela Reservas de slots, encontre a reserva que você quer atribuir ao projeto.
Clique em Conferir ações > Criar atribuição.
Em Criar uma atribuição, clique em Procurar e selecione seu projeto.
Em Tipo de serviço, selecione QUERY. Essa seleção garante que suas consultas SQL usem os slots dessa reserva.
Clique em Criar.
crie um conjunto de dados
Crie um conjunto de dados do BigQuery para armazenar seu modelo de ML.
Console
No console do Google Cloud , acesse a página BigQuery.
No painel Explorer, clique no nome do seu projeto.
Clique em Conferir ações > Criar conjunto de dados.
Na página Criar conjunto de dados, faça o seguinte:
Para o código do conjunto de dados, insira
bqml_tutorial.Em Tipo de local, selecione Multirregião e EUA.
Mantenha as configurações padrão restantes e clique em Criar conjunto de dados.
bq
Para criar um conjunto de dados, use o
comando bq mk --dataset.
Crie um conjunto de dados chamado
bqml_tutorialcom o local dos dados definido comoUS.bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Confirme se o conjunto de dados foi criado:
bq ls
API
Chame o método datasets.insert com um recurso de conjunto de dados definido.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
Criar a tabela de objetos
Crie uma tabela de objetos sobre as imagens do pôster do filme no bucket público do Cloud Storage. Com a tabela de objetos, é possível analisar as imagens sem movê-las do Cloud Storage.
No console do Google Cloud , acesse a página BigQuery.
No editor de consultas, execute a seguinte consulta para criar a tabela de objetos:
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/*']);
Criar o modelo remoto
Crie um modelo remoto que represente um modelo
gemini-2.5-flash da Vertex AI:
No console do Google Cloud , acesse a página BigQuery.
No editor de consultas, execute a seguinte consulta para criar um modelo remoto:
CREATE OR REPLACE MODEL `bqml_tutorial.gemini-vision` REMOTE WITH CONNECTION DEFAULT OPTIONS (ENDPOINT = 'gemini-2.5-flash');
A consulta pode levar alguns minutos para ser concluída. Depois disso, o modelo
gemini-visionaparece no conjunto de dadosbqml_tutorialno painel Explorer. Como a consulta usa uma instruçãoCREATE MODELpara criar um modelo, não há resultados de consulta.
Analise os pôsteres de filmes
Use o modelo remoto para analisar os pôsteres de filmes e determinar qual filme cada posterior representa e, em seguida, gravar esses dados em uma tabela.
No console do Google Cloud , acesse a página BigQuery.
No editor de consultas, execute a seguinte consulta para analisar as imagens do pôster do filme:
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)));
No editor de consultas, execute a seguinte instrução para visualizar os dados da tabela:
SELECT * FROM `bqml_tutorial.movie_posters_results`;
O resultado será assim:
+--------------------------------------------+----------------------------------+ | 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 | | | } | | || +--------------------------------------------+----------------------------------+
Formatar a saída do modelo
Para facilitar a leitura do título e dos dados do ano do filme, formate os dados retornados pelo modelo.
No console do Google Cloud , acesse a página BigQuery.
No editor de consultas, execute a seguinte consulta para formatar os dados:
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 );
No editor de consultas, execute a seguinte instrução para visualizar os dados da tabela:
SELECT * FROM `bqml_tutorial.movie_posters_results_formatted`;
O resultado será o seguinte:
+--------------------------------------------+----------------------------+------+ | 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 | | | +--------------------------------------------+----------------------------+------+
Excluir o projeto
- No console Google Cloud , acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
- Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.
Excluir recursos individuais
Se você quiser reutilizar o projeto, exclua os recursos criados para o tutorial.
Excluir o conjunto de dados
Console
Exclua todo o conjunto de dados bqml_tutorial e todo o conteúdo dele executando o seguinte comando SQL:
DROP SCHEMA IF EXISTS `bqml_tutorial` CASCADE;
bq
Exclua todo o conjunto de dados bqml_tutorial e todo o conteúdo dele:
bq rm -r bqml_tutorial
Excluir a reserva
Console
Se você criou uma reserva do BigQuery como parte deste tutorial, remova-a para evitar cobranças contínuas de slots.
No console do Google Cloud , acesse a página BigQuery.
No menu de navegação, clique em Gerenciamento de capacidade.
Na tabela Reservas de slots, encontre
bqml-tutorial-reservation.Clique em Ver ações > Excluir.
bq
Se você criou uma reserva do BigQuery chamada
bqml-tutorial-reservation no local us, use o comando a seguir para
remover:
bq rm --reservation --location=us bqml-tutorial-reservation
Excluir a conexão
Console
No console do Google Cloud , acesse a página BigQuery.
No painel à esquerda, clique em Explorador, localize seu projeto e clique em Conexões.
Na tabela, encontre sua conexão.
Clique em Ver ações > Excluir.
bq
Exclua a conexão:
bq rm --connection --location=us CONNECTION_ID
Substitua CONNECTION_ID pelo ID real da sua conexão.
A seguir
- Saiba mais sobre as funções de IA generativa no BigQuery.
- Saiba como ajustar um modelo usando seus dados.
- Confira arquiteturas de referência, diagramas, tutoriais e práticas recomendadas do Google Cloud. Confira o Centro de arquitetura do Cloud.