Analyser des images avec un modèle Gemini
Ce tutoriel explique comment créer un modèle distant BigQuery ML
basé sur le
gemini-2.5-flash modèle,
puis comment utiliser ce modèle avec la fonction
AI.GENERATE_TEXT
pour analyser un ensemble d'images d'affiches de films.
Ce tutoriel couvre les tâches suivantes :
- Créer une table d'objets BigQuery sur des données d'image dans un bucket Cloud Storage.
- Créer un modèle distant BigQuery ML qui cible le modèle
gemini-2.5-flashde Vertex AI. - Utiliser le modèle distant avec la fonction
AI.GENERATE_TEXTpour identifier les films associés à un ensemble d'affiches de film.
Les données sur les affiches de films sont disponibles dans le bucket Cloud Storage public gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters.
Rôles requis
Pour exécuter ce tutoriel, vous devez disposer des rôles Identity and Access Management (IAM) suivants :
- Créer et utiliser des ensembles de données, des connexions et des modèles BigQuery : administrateur BigQuery (
roles/bigquery.admin) - Accorder des autorisations au compte de service de la connexion : administrateur IAM du projet (
roles/resourcemanager.projectIamAdmin)
Ces rôles prédéfinis contiennent les autorisations requises pour effectuer les tâches décrites dans ce document. Pour afficher les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
- Créer un ensemble de données :
bigquery.datasets.create - Créer, déléguer et utiliser une connexion :
bigquery.connections.* - Définir la connexion par défaut :
bigquery.config.* - Définir les autorisations du compte de service :
resourcemanager.projects.getIamPolicyetresourcemanager.projects.setIamPolicy - Créer une table d'objets :
bigquery.tables.createetbigquery.tables.update - Créer un modèle et exécuter une inférence :
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateDatabigquery.models.updateMetadata
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Coûts
Dans ce document, vous utilisez les composants facturables suivants de 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.
Obtenez une estimation des coûts en fonction de votre utilisation prévue,
utilisez le simulateur de coût.
Pour en savoir plus sur les tarifs de BigQuery, consultez la page Tarifs de BigQuery dans la documentation BigQuery.
Pour en savoir plus sur les tarifs de l'IA générative Vertex AI, consultez la page Tarifs de Vertex AI.
Avant de commencer
-
Dans la Google Cloud console, sur la page de sélection du projet, sélectionnez ou créez un Google Cloud projet.
Rôles requis pour sélectionner ou créer un projet
- Sélectionner un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
-
Créer un projet : pour créer un projet, vous devez disposer du rôle Créateur de projet
(
roles/resourcemanager.projectCreator), qui contient l'autorisationresourcemanager.projects.create. Découvrez comment attribuer des rôles.
-
Vérifiez que la facturation est activée pour votre Google Cloud projet.
-
Activez les API BigQuery, BigQuery Connection et Vertex AI.
Rôles requis pour activer les API
Pour activer les API, vous avez besoin du rôle IAM Administrateur d'utilisation du service (
roles/serviceusage.serviceUsageAdmin), qui contient l'autorisationserviceusage.services.enable. Découvrez comment attribuer des rôles.
Créer un ensemble de données
Créez un ensemble de données BigQuery pour stocker votre modèle ML.
Console
Dans la Google Cloud console, accédez à la page BigQuery.
Dans le volet Explorateur, cliquez sur le nom de votre projet.
Cliquez sur Afficher les actions > Créer un ensemble de données
Sur la page Créer un ensemble de données, procédez comme suit :
Dans le champ ID de l'ensemble de données, saisissez
bqml_tutorial.Pour Type de zone géographique, sélectionnez Multirégion, puis sélectionnez États-Unis.
Conservez les autres paramètres par défaut, puis cliquez sur Créer un ensemble de données.
bq
Pour créer un ensemble de données, utilisez la
bq mk --dataset commande.
Créez un ensemble de données nommé
bqml_tutorialavec l'emplacement des données défini surUS.bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Vérifiez que l'ensemble de données a été créé :
bq ls
API
Appelez la datasets.insert
méthode avec une ressource d'ensemble de données définie.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
Créer la table d'objets
Créez une table d'objets sur les images de l'affiche de film dans le bucket public de Cloud Storage. La table d'objets permet d'analyser les images sans les déplacer depuis Cloud Storage.
Dans la Google Cloud console, accédez à la page BigQuery.
Dans l'éditeur de requêtes, exécutez la requête suivante pour créer la table d'objets :
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/*']);
Créer le modèle distant
Créez un modèle distant représentant un modèle gemini-2.5-flash de Vertex AI :
Dans la Google Cloud console, accédez à la page BigQuery.
Dans l'éditeur de requête, exécutez la requête suivante pour créer un modèle distant :
CREATE OR REPLACE MODEL `bqml_tutorial.gemini-vision` REMOTE WITH CONNECTION DEFAULT OPTIONS (ENDPOINT = 'gemini-2.5-flash');
L'exécution de la requête prend plusieurs secondes, après quoi le modèle
gemini-visionapparaît dans l'ensemble de donnéesbqml_tutorialdans le volet Explorateur. Étant donné que la requête utilise une instructionCREATE MODELpour créer un modèle, il n'y a aucun résultat de requête.
Analyser les affiches de films
Utilisez le modèle distant pour analyser les affiches de film et déterminer le film qu'elles représentent, puis écrivez ces données dans un tableau.
Dans la Google Cloud console, accédez à la page BigQuery.
Dans l'éditeur de requêtes, exécutez la requête suivante pour analyser les images d'affiches de films :
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)));
Dans l'éditeur de requêtes, exécutez l'instruction suivante pour afficher les données de la table :
SELECT * FROM `bqml_tutorial.movie_posters_results`;
Le résultat ressemble à ce qui suit :
+--------------------------------------------+----------------------------------+ | 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 | | | } | | || +--------------------------------------------+----------------------------------+
Mettre en forme la sortie du modèle
Mettez en forme les données d'analyse de film renvoyées par le modèle pour rendre le titre et l'année du film plus lisibles.
Dans la Google Cloud console, accédez à la page BigQuery.
Dans l'éditeur de requêtes, exécutez la requête suivante pour mettre en forme les données :
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 );
Dans l'éditeur de requêtes, exécutez l'instruction suivante pour afficher les données de la table :
SELECT * FROM `bqml_tutorial.movie_posters_results_formatted`;
Le résultat ressemble à ce qui suit :
+--------------------------------------------+----------------------------+------+ | 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 | | | +--------------------------------------------+----------------------------+------+
Effectuer un nettoyage
- Dans la Google Cloud console, accédez à la page Gérer les ressources.
- Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
- Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.