Analiza las imágenes
En este instructivo, se muestra cómo obtener estadísticas de datos de imágenes no estructurados mediante la integración de BigQuery ML con Gemini. En el instructivo, creas un modelo remoto basado en gemini-2.5-flash y usas la función para extraer automáticamente metadatos, como títulos y años de lanzamiento, de una colección de pósteres de películas.AI.GENERATE_TEXT
Objetivos
- Crear una tabla de objetos de BigQuery sobre datos de imágenes en un bucket de Cloud Storage.
- Crear un modelo remoto de BigQuery ML que se oriente al modelo
gemini-2.5-flashde Vertex AI. - Usar el modelo remoto con la función
AI.GENERATE_TEXTpara identificar las películas asociadas con un conjunto de pósteres de películas.
Costos
En este instructivo, se usan los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Cuando completes las tareas que se describen en este documento, podrás borrar los recursos que creaste para evitar que se te siga facturando. Para obtener más información, consulta Realiza una limpieza.
Antes de comenzar
-
En la Google Cloud consola de, en la página del selector de proyectos, selecciona o crea un Google Cloud proyecto.
Roles necesarios para seleccionar o crear un proyecto
- Seleccionar un proyecto: Para seleccionar un proyecto, no se requiere un rol de IAM específico. Puedes seleccionar cualquier proyecto en el que se te haya otorgado un rol.
-
Crear un proyecto: Para crear un proyecto, necesitas el rol de creador de proyectos
(
roles/resourcemanager.projectCreator), que contiene elresourcemanager.projects.createpermiso. Obtén más información para otorgar roles.
-
Verifica que la facturación esté habilitada para tu Google Cloud proyecto.
-
Habilita las APIs de BigQuery, BigQuery Connection y Vertex AI.
Roles necesarios para habilitar las APIs
Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (
roles/serviceusage.serviceUsageAdmin), que contiene el permisoserviceusage.services.enable. Obtén más información para otorgar roles.
Roles obligatorios
Para ejecutar este instructivo, necesitas los siguientes roles de Identity and Access Management (IAM):
- Crear y usar conjuntos de datos, conexiones y modelos de BigQuery: Administrador de BigQuery (
roles/bigquery.admin). - Otorgar permisos a la cuenta de servicio de la conexión: Administrador de IAM del proyecto (
roles/resourcemanager.projectIamAdmin).
Estos roles predefinidos contienen los permisos necesarios para realizar las tareas de este documento. Para ver los permisos exactos que son necesarios, expande la sección Permisos necesarios:
Permisos necesarios
- Crear un conjunto de datos:
bigquery.datasets.create - Crear, delegar y usar una conexión:
bigquery.connections.* - Establecer la conexión predeterminada:
bigquery.config.* - Establecer permisos de cuenta de servicio:
resourcemanager.projects.getIamPolicyyresourcemanager.projects.setIamPolicy - Crear una tabla de objetos:
bigquery.tables.createybigquery.tables.update - Crear un modelo y ejecutar la inferencia:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateDatabigquery.models.updateMetadata
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Prepare el entorno
Para realizar la inferencia de BigQuery ML en tablas de objetos con gemini-2.5-flash, debes asignar una reserva de BigQuery a tu proyecto. Si ya hay una reserva asignada a tu proyecto, puedes omitir este paso.
Crea una reserva
En la Google Cloud consola de, ve a la página BigQuery.
En el menú de navegación, haz clic en Administración de la capacidad.
Haz clic en Crear reserva.
En la página Crear reserva, haz lo siguiente:
- En Nombre de reserva, ingresa
bqml-tutorial-reservation. - En Ubicación, selecciona US (múltiples regiones en Estados Unidos).
- Deja la configuración predeterminada restante como está y haz clic en Guardar.
- En Nombre de reserva, ingresa
Asigna la reserva
En la Google Cloud consola de, ve a la página BigQuery.
En el menú de navegación, haz clic en Administración de la capacidad.
En la tabla Reservas de ranuras, busca la reserva que deseas asignar a tu proyecto.
Haz clic en Ver acciones > Crear asignación.
En Crear una asignación, haz clic en Explorar y selecciona tu proyecto.
En Tipo de trabajo, selecciona QUERY. Esta selección garantiza que tus consultas de SQL usen las ranuras de esta reserva.
Haz clic en Crear.
Crea un conjunto de datos
Crea un conjunto de datos de BigQuery para almacenar tu modelo de AA.
Console
En la Google Cloud consola de, ve a la página BigQuery.
En el panel Explorador, haz clic en el nombre de tu proyecto.
Haz clic en Ver acciones > Crear conjunto de datos.
En la página Crear conjunto de datos, haz lo siguiente:
En ID del conjunto de datos, ingresa
bqml_tutorial.En Tipo de ubicación, selecciona Multirregión y, luego, selecciona US.
Deja la configuración predeterminada restante como está y haz clic en Crear conjunto de datos.
bq
Para crear un conjunto de datos nuevo, usa el
bq mk --dataset comando.
Crea un conjunto de datos llamado
bqml_tutorialcon la ubicación de datos establecida enUS.bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Confirma que se creó el conjunto de datos:
bq ls
API
Llama al datasets.insert
método con un recurso de conjunto de datos definido.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
Crea la tabla de objetos
Crea una tabla de objetos sobre las imágenes de pósteres de películas en el bucket público de Cloud Storage . La tabla de objetos te permite analizar las imágenes sin transferirlas desde Cloud Storage.
En la Google Cloud consola de, ve a la página BigQuery.
En el editor de consultas, ejecuta la siguiente consulta para crear la tabla 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/*']);
Crea el modelo remoto
Crea un modelo remoto que represente un modelo gemini-2.5-flash de Vertex AI:
En la Google Cloud consola de, ve a la página BigQuery.
En el editor de consultas, ejecuta la siguiente consulta para crear el modelo remoto:
CREATE OR REPLACE MODEL `bqml_tutorial.gemini-vision` REMOTE WITH CONNECTION DEFAULT OPTIONS (ENDPOINT = 'gemini-2.5-flash');
La consulta puede tardar unos minutos en completarse. Después de eso, el modelo
gemini-visionaparecerá en el conjunto de datosbqml_tutorialen el panel Explorador. Debido a que la consulta usa una declaraciónCREATE MODELpara crear un modelo, no hay resultados de consultas.
Analiza los pósteres de películas
Usa el modelo remoto para analizar los pósteres de películas y determinar qué película representa cada uno de ellos. Luego, escribe estos datos en una tabla.
En la Google Cloud consola de, ve a la página BigQuery.
En el editor de consultas, ejecuta la siguiente consulta para analizar las imágenes de pósteres de películas:
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)));
En el editor de consultas, ejecuta la siguiente declaración para ver los datos de la tabla:
SELECT * FROM `bqml_tutorial.movie_posters_results`;
El resultado es similar al siguiente:
+--------------------------------------------+----------------------------------+ | 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 | | | } | | || +--------------------------------------------+----------------------------------+
Da formato al resultado del modelo
Para que el título de la película y los datos de años sean más fáciles de leer, da formato a los datos que muestra el modelo.
En la Google Cloud consola de, ve a la página BigQuery.
En el editor de consultas, ejecuta la siguiente consulta para dar formato a los datos:
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 );
En el editor de consultas, ejecuta la siguiente declaración para ver los datos de la tabla:
SELECT * FROM `bqml_tutorial.movie_posters_results_formatted`;
El resultado es similar al siguiente:
+--------------------------------------------+----------------------------+------+ | 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 | | | +--------------------------------------------+----------------------------+------+
Borra el proyecto
- En la Google Cloud consola, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que tú quieres borrar y haz clic en Borrar.
- En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.
Borra los recursos individuales
Si deseas volver a usar el proyecto, borra los recursos que creaste para el instructivo.
Borra el conjunto de datos
Console
Para borrar todo el conjunto de datos bqml_tutorial y todo su contenido, ejecuta el siguiente comando SQL:
DROP SCHEMA IF EXISTS `bqml_tutorial` CASCADE;
bq
Borra todo el conjunto de datos bqml_tutorial y todo su contenido:
bq rm -r bqml_tutorial
Borra la reserva
Console
Si creaste una reserva de BigQuery como parte de este instructivo, debes quitarla para evitar cargos continuos por ranuras.
En la Google Cloud consola de, ve a la página BigQuery.
En el menú de navegación, haz clic en Administración de la capacidad.
En la tabla Reservas de ranuras, busca
bqml-tutorial-reservation.Haz clic en Ver acciones > Borrar.
bq
Si creaste una reserva de BigQuery llamada bqml-tutorial-reservation en la ubicación us, usa el siguiente comando para quitarla:
bq rm --reservation --location=us bqml-tutorial-reservation
Borra la conexión
Console
En la Google Cloud consola de, ve a la página BigQuery.
En el panel izquierdo, haz clic en Explorador, busca tu proyecto y, luego, haz clic en Conexiones.
En la tabla, busca tu conexión.
Haz clic en Ver acciones > Borrar.
bq
Borra la conexión:
bq rm --connection --location=us CONNECTION_ID
Reemplaza CONNECTION_ID por el ID real de tu conexión.
¿Qué sigue?
- Obtén más información sobre las funciones de IA generativa en BigQuery.
- Aprende a ajustar un modelo con tus datos.
- Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.