Analysez des images
Ce tutoriel vous explique comment obtenir des insights à partir de données d'image non structurées en intégrant BigQuery ML à Gemini. Dans ce tutoriel, vous allez créer un modèle distant basé sur gemini-2.5-flash et utiliser la fonction AI.GENERATE_TEXT pour extraire automatiquement des métadonnées, telles que les titres et les années de sortie, à partir d'une collection d'affiches de films.
Objectifs
- Créer une table d'objets BigQuery sur des données d'image dans un bucket Cloud Storage.
- Créez un modèle BigQuery ML distant 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.
Coûts
Ce tutoriel utilise les composants facturables suivants de Google Cloud :
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Une fois que vous avez terminé les tâches décrites dans ce document, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Avant de commencer
-
Dans la console Google Cloud , sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud .
Rôles requis pour sélectionner ou créer un projet
- Sélectionnez 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 projet Google Cloud .
-
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 Service Usage (
roles/serviceusage.serviceUsageAdmin), qui contient l'autorisationserviceusage.services.enable. Découvrez comment attribuer des rôles.
Rôles requis
Pour exécuter ce tutoriel, vous devez disposer des rôles IAM (Identity and Access Management) suivants :
- Créer et utiliser des ensembles de données, des connexions et des modèles BigQuery : administrateur BigQuery (
roles/bigquery.admin). - Accordez 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éez un ensemble de données :
bigquery.datasets.create - Créer, déléguer et utiliser une connexion :
bigquery.connections.* - Définissez la connexion par défaut :
bigquery.config.* - Définissez les autorisations du compte de service :
resourcemanager.projects.getIamPolicyetresourcemanager.projects.setIamPolicy. - Créez une table d'objets :
bigquery.tables.createetbigquery.tables.update - Créez un modèle et exécutez l'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.
Préparer l'environnement
Pour effectuer une inférence BigQuery ML sur des tables d'objets à l'aide de gemini-2.5-flash, vous devez attribuer une réservation BigQuery à votre projet. Si une réservation est déjà attribuée à votre projet, vous pouvez ignorer cette étape.
Créer une réservation
Dans la console Google Cloud , accédez à la page BigQuery.
Dans le menu de navigation, cliquez sur Gestion de la capacité.
Cliquez sur Créer une réservation.
Sur la page Créer une réservation, procédez comme suit :
- Dans le champ Nom de la réservation, saisissez
bqml-tutorial-reservation. - Pour Emplacement, sélectionnez us (plusieurs régions aux États-Unis).
- Conservez les autres paramètres par défaut, puis cliquez sur Enregistrer.
- Dans le champ Nom de la réservation, saisissez
Attribuer la réservation
Dans la console Google Cloud , accédez à la page BigQuery.
Dans le menu de navigation, cliquez sur Gestion de la capacité.
Dans le tableau Réservations d'emplacements, recherchez la réservation que vous souhaitez attribuer à votre projet.
Cliquez sur Afficher les actions > Créer un devoir.
Dans Créer une attribution, cliquez sur Parcourir et sélectionnez votre projet.
Dans le champ Type de job, sélectionnez QUERY. Cette sélection garantit que vos requêtes SQL utilisent les emplacements de cette réservation.
Cliquez sur Créer.
Créer un ensemble de données
Créez un ensemble de données BigQuery pour stocker votre modèle de ML.
Console
Dans la console Google Cloud , 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 d'emplacement, sélectionnez Multirégional, puis É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 commande bq mk --dataset.
Créez un ensemble de données nommé
bqml_tutorialet définissez l'emplacement des données 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 méthode datasets.insert 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 vous permet d'analyser les images sans les déplacer depuis Cloud Storage.
Dans la console Google Cloud , 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 Vertex AI gemini-2.5-flash hébergé :
Dans la console Google Cloud , 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 peut prendre quelques minutes. Le modèle
gemini-visionapparaît ensuite dans l'ensemble de donnéesbqml_tutorialdu 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 console Google Cloud , 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
Pour rendre le titre et l'année du film plus lisibles, mettez en forme les données renvoyées par le modèle.
Dans la console Google Cloud , 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 | | | +--------------------------------------------+----------------------------+------+
Supprimer le projet
- Dans la console Google Cloud , 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.
Supprimer des ressources individuelles
Si vous souhaitez réutiliser le projet, supprimez les ressources que vous avez créées pour le tutoriel.
Supprimer l'ensemble de données
Console
Supprimez l'intégralité de l'ensemble de données bqml_tutorial et tout son contenu en exécutant la commande SQL suivante :
DROP SCHEMA IF EXISTS `bqml_tutorial` CASCADE;
bq
Supprimez l'intégralité de l'ensemble de données bqml_tutorial et tout son contenu :
bq rm -r bqml_tutorial
Supprimer la réservation
Console
Si vous avez créé une réservation BigQuery dans le cadre de ce tutoriel, vous devez la supprimer pour éviter de continuer à payer des frais d'emplacement.
Dans la console Google Cloud , accédez à la page BigQuery.
Dans le menu de navigation, cliquez sur Gestion de la capacité.
Dans le tableau Réservations d'emplacements, recherchez
bqml-tutorial-reservation.Cliquez sur Afficher les actions > Supprimer.
bq
Si vous avez créé une réservation BigQuery nommée bqml-tutorial-reservation dans l'emplacement us, utilisez la commande suivante pour la supprimer :
bq rm --reservation --location=us bqml-tutorial-reservation
Supprimer la connexion
Console
Dans la console Google Cloud , accédez à la page BigQuery.
Dans le volet de gauche, cliquez sur Explorateur, recherchez votre projet, puis cliquez sur Connexions.
Dans le tableau, recherchez votre connexion.
Cliquez sur Afficher les actions > Supprimer.
bq
Supprimez la connexion :
bq rm --connection --location=us CONNECTION_ID
Remplacez CONNECTION_ID par l'ID réel de votre connexion.
Étapes suivantes
- En savoir plus sur les fonctions d'IA générative dans BigQuery
- Découvrez comment régler un modèle à l'aide de vos données.
- Découvrez des architectures de référence, des schémas et des bonnes pratiques concernant Google Cloud. Consultez notre Cloud Architecture Center.