Analyser des images
Ce tutoriel 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éer un modèle distant BigQuery ML qui cible le modèle
gemini-2.5-flashde Gemini Enterprise Agent Platform. - 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 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 avez besoin 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 Agent Platform.
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.
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). - 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.
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 Google Cloud console, accédez à la page BigQuery.
Dans le menu de navigation, cliquez sur Gestion des charges de travail.
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 États-Unis (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 Google Cloud console, accédez à la page BigQuery.
Dans le menu de navigation, cliquez sur Gestion des charges de travail.
Dans le tableau Réservations d'emplacements, recherchez la réservation que vous souhaitez attribuer à votre projet.
Cliquez sur Afficher les actions > Créer une attribution.
Dans Créer une attribution , cliquez sur Parcourir , puis 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 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 d'emplacement, sélectionnez Multirégional, puis sélectionnez US.
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 Cloud Storage bucket. La table d'objets vous 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 d'Agent Platform :
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 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 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
Pour faciliter la lecture des données de titre et d'année du film, mettez en forme les données renvoyées par le modèle.
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 | | | +--------------------------------------------+----------------------------+------+
Supprimer le projet
- Dans la Google Cloud console, accédez à la page Gérer les ressources.
- Dans la liste des projets, sélectionnez celui que vous souhaitez supprimer, puis cliquez sur Supprimer.
- Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez 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'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'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'emplacements.
Dans la Google Cloud console, accédez à la page BigQuery.
Dans le menu de navigation, cliquez sur Gestion des charges de travail.
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 Google Cloud console, 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.
Étape suivante
- En savoir plus sur les fonctions d'IA générative dans BigQuery.
- Découvrez comment ajuster 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.