Annoter des images avec la fonction ML.ANNOTATE_IMAGE

Ce tutoriel explique comment utiliser la fonction ML.ANNOTATE_IMAGE pour extraire des insights à partir de données d'image non structurées. Lorsque vous travaillez avec de grands dépôts d'images, vous devrez peut-être catégoriser automatiquement les fichiers, détecter des objets spécifiques ou extraire les propriétés des images pour rendre l'ensemble de données consultable. En créant un modèle distant BigQuery ML qui se connecte à l'API Cloud Vision, vous pouvez effectuer ces tâches d'analyse d'images directement sur une table d'objets BigQuery à l'aide du langage SQL standard. Vous n'avez ainsi pas besoin de déplacer des fichiers ni de créer des pipelines de données complexes.

Objectifs

  • Créez un ensemble de données et une connexion de ressource.
  • Créez une table d'objets pour les fichiers image stockés dans Cloud Storage.
  • Créez un modèle distant qui se connecte à l'API Cloud Vision.
  • Annotez des images à l'aide de la fonction ML.ANNOTATE_IMAGE.

Coûts

Dans ce document, vous utilisez les composants facturables suivants de Cloud de Confiance by S3NS :

Avant de commencer

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Cloud de Confiance project.

  3. Enable the BigQuery, BigQuery Connection API, and Cloud Vision API APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

Rôles requis

Pour obtenir les autorisations nécessaires pour suivre ce tutoriel, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet :

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

Créer un ensemble de données

Pour créer un ensemble de données BigQuery, sélectionnez l'une des options suivantes :

Console

  1. Dans la console Cloud de Confiance , accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans le volet de gauche, cliquez sur Explorateur :

    Bouton du volet Explorateur mis en évidence.

    Si le volet de gauche ne s'affiche pas, cliquez sur Développer le volet de gauche pour l'ouvrir.

  3. Dans l'explorateur, développez votre projet, puis cliquez sur Ensembles de données.

  4. Sur la page Ensembles de données, cliquez sur Créer un ensemble de données.

  5. Dans le volet 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 Emplacement des données, sélectionnez US.

    Ne modifiez pas les autres paramètres par défaut.

  6. Cliquez sur Créer un ensemble de données.

bq

Pour créer un ensemble de données, utilisez la commande bq mk --dataset.

  1. Créez un ensemble de données nommé bqml_tutorial avec l'emplacement des données défini sur US :

    bq mk --dataset \
      --location=US \
      --description "BigQuery ML tutorial dataset." \
      bqml_tutorial
  2. 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 une table d'objets

Créez une table d'objets nommée my_object_table contenant des images. La table d'objets permet d'analyser les images sans les déplacer depuis Cloud Storage.

Le bucket Cloud Storage utilisé par la table d'objets doit se trouver dans le même projet que celui dans lequel vous prévoyez de créer le modèle et d'appeler la fonction ML.ANNOTATE_IMAGE. Si vous souhaitez appeler la fonction ML.ANNOTATE_IMAGE dans un projet différent de celui qui contient le bucket Cloud Storage utilisé par la table d'objets, vous devez attribuer le rôle d'Administrateur de l'espace de stockage au niveau du bucket.

Créer un modèle

Créez un modèle distant nommé my_model avec un REMOTE_SERVICE_TYPE de valeur CLOUD_AI_VISION_V1 :

CREATE OR REPLACE MODEL
`PROJECT_ID.bqml_tutorial.my_model`
REMOTE WITH CONNECTION DEFAULT
OPTIONS (REMOTE_SERVICE_TYPE = 'CLOUD_AI_VISION_V1');

Remplacez PROJECT_ID par l'ID du projet.

Annoter des images

Utilisez la fonction ML.ANNOTATE_IMAGE avec vos caractéristiques préférées pour annoter les images de la table d'objets.

  1. Pour étiqueter les éléments affichés dans les images, utilisez la fonction ML.ANNOTATE_IMAGE avec la fonctionnalité label_detection :

    SELECT *
    FROM ML.ANNOTATE_IMAGE(
    MODEL `PROJECT_ID.bqml_tutorial.my_model`,
    TABLE `PROJECT_ID.bqml_tutorial.my_object_table`,
    STRUCT(['label_detection'] AS vision_features)
    );

    Remplacez PROJECT_ID par l'ID du projet.

  2. Pour détecter les visages affichés sur les images et renvoyer des attributs d'image, tels que les couleurs dominantes, utilisez la fonction ML.ANNOTATE_IMAGE avec les fonctionnalités face_detection et image_properties :

    SELECT *
    FROM ML.ANNOTATE_IMAGE(
    MODEL `PROJECT_ID.bqml_tutorial.my_model`,
    TABLE `PROJECT_ID.bqml_tutorial.my_object_table`,
    STRUCT(['face_detection', 'image_properties'] AS vision_features)
    );

    Remplacez PROJECT_ID par l'ID du projet.

Effectuer un nettoyage

Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.

Supprimer le projet

Console

  1. Dans la console Cloud de Confiance , accédez à la page Gérer les ressources.

    Accéder à la page "Gérer les ressources"

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

gcloud

    Supprimer un projet Cloud de Confiance  :

    gcloud projects delete PROJECT_ID

Supprimer des ressources individuelles

Si vous prévoyez de conserver le projet que vous avez utilisé pour ce tutoriel, vous pouvez éviter des frais supplémentaires en supprimant les ressources individuelles que vous avez créées :

  1. Supprimez l'ensemble de données : la suppression de l'ensemble de données supprime également le modèle distant et la table d'objets que vous avez créés à l'intérieur.

    • Dans la console Cloud de Confiance , accédez à BigQuery Studio.
    • Dans le volet Explorateur, développez votre projet et sélectionnez l'ensemble de données que vous avez créé.
    • Cliquez sur Afficher les actions, puis sur Supprimer.
    • Dans la boîte de dialogue, saisissez delete, puis cliquez sur Supprimer.
  2. Supprimez la connexion :

    • Dans le volet Explorateur, développez le nom de votre projet, puis cliquez sur Connexions.
    • Cliquez sur l'icône Afficher les actions à côté de la connexion que vous avez créée, puis sélectionnez Supprimer.
    • Dans la boîte de dialogue, cliquez sur Supprimer pour confirmer.

Étapes suivantes