Entraîner un modèle d'étiquetage d'image avec AutoML Vision Edge

Pour entraîner un modèle de balisage d'images, vous devez fournir à AutoML Vision Edge un ensemble d'images et les étiquettes correspondantes. AutoML Vision Edge utilise cet ensemble de données pour entraîner un nouveau modèle dans le cloud, que vous pouvez utiliser pour étiqueter les images de votre application sur l'appareil. (Consultez la présentation pour obtenir des informations générales sur cette fonctionnalité.)

AutoML Vision Edge est un service Google Cloud. L'utilisation du service est soumise au Contrat de licence de Google Cloud Platform et aux Conditions spécifiques au service, et facturée en conséquence. Pour en savoir plus sur la facturation, consultez la page Tarifs d'AutoML.

Avant de commencer

1. Assembler vos données d'entraînement

Tout d'abord, vous devez constituer un ensemble de données d'entraînement composé d'images étiquetées. Tenez compte des consignes suivantes:

  • Les images doivent être au format JPEG, PNG, GIF, BMP ou ICO.

  • Chaque image doit être inférieure ou égale à 30 Mo. Notez qu'AutoML Vision Edge réduit la plupart des images pendant le prétraitement. Fournir des images à très haute résolution n'offre donc généralement aucun avantage en termes de précision.

  • Incluez au moins 10 exemples, et de préférence 100 ou plus, pour chaque étiquette.

  • Incluez plusieurs angles, résolutions et arrière-plans pour chaque étiquette.

  • Les données d'entraînement doivent être aussi proches que possible des données sur lesquelles les prédictions sont fondées. Par exemple, si votre cas pratique implique des images floues en basse résolution (comme celles d'une caméra de sécurité), vos données d'entraînement doivent être composées d'images floues à basse résolution.

  • Les modèles générés par AutoML Vision Edge sont optimisés pour les photographies d'objets dans le monde réel. Les documents tels que radiographies, dessins à la main, numérisations, reçus, etc. ne sont pas adaptés.

    De plus, les modèles ne sont généralement pas capables de prédire les étiquettes qu'un humain ne s saurait pas attribuer. Ainsi, si un humain ne peut pas attribuer d'étiquettes en regardant l'image pendant 1 à 2 secondes, le modèle ne pourra probablement pas être entraîné à le faire non plus.

Lorsque vos images d'entraînement sont prêtes, préparez-les à être importées dans Firebase. Vous avez trois possibilités :

Option 1: Archive ZIP structurée

Organisez vos images d'entraînement dans des répertoires, chacun nommé d'après un libellé et contenant des images qui sont des exemples de ce libellé. Ensuite, compressez la structure de répertoires dans une archive ZIP.

Les noms de répertoires de cette archive ZIP peuvent comporter jusqu'à 32 caractères ASCII et ne peuvent contenir que des caractères alphanumériques et le trait de soulignement (_).

Exemple :

my_training_data.zip
  |____accordion
  | |____001.jpg
  | |____002.jpg
  | |____003.jpg
  |____bass_guitar
  | |____hofner.gif
  | |____p-bass.png
  |____clavier
    |____well-tempered.jpg
    |____well-tempered (1).jpg
    |____well-tempered (2).jpg

Option 2: Cloud Storage avec l'index CSV

Importez vos images d'entraînement dans Google Cloud Storage et préparez un fichier CSV listant l'URL de chaque image et, éventuellement, les libellés appropriés pour chaque image. Cette option est utile lors de l'utilisation de très grands ensembles de données.

Par exemple, importez vos images dans Cloud Storage et préparez un fichier CSV comme suit:

gs://your-training-data-bucket/001.jpg,accordion
gs://your-training-data-bucket/002.jpg,accordion
gs://your-training-data-bucket/003.jpg,accordion
gs://your-training-data-bucket/hofner.gif,bass_guitar
gs://your-training-data-bucket/p-bass.png,bass_guitar
gs://your-training-data-bucket/well-tempered.jpg,clavier
gs://your-training-data-bucket/well-tempered%20(1).jpg,clavier
gs://your-training-data-bucket/well-tempered%20(2).jpg,clavier

Les images doivent être stockées dans un bucket faisant partie du projet Google Cloud correspondant de votre projet Firebase.

Pour en savoir plus sur la préparation du fichier CSV, consultez la section Préparer les données d'entraînement dans la documentation de Cloud AutoML Vision.

Option 3: Images sans libellé

Après avoir importé vos images d'entraînement dans la console Firebase, attribuez-leur des libellés, individuellement ou dans un fichier ZIP non structuré. Reportez-vous à l'étape suivante.

2. Entraîner le modèle

Entraînez ensuite un modèle à l'aide de vos images:

  1. Ouvrez la page Vision Datasets (Ensembles de données Vision) dans la console Google Cloud. Sélectionnez votre projet lorsque vous y êtes invité.

  2. Cliquez sur Nouvel ensemble de données, attribuez un nom à l'ensemble de données, sélectionnez le type de modèle que vous souhaitez entraîner, puis cliquez sur Créer un ensemble de données.

  3. Dans l'onglet Import (Importation) de votre ensemble de données, importez une archive ZIP de vos images d'entraînement ou un fichier CSV contenant les emplacements Cloud Storage où vous les avez importées. Consultez Rassembler vos données d'entraînement.

  4. Une fois la tâche d'importation terminée, utilisez l'onglet Images pour vérifier les données d'entraînement et ajouter des libellés aux images non libellées.

  5. Dans l'onglet Entraînement, cliquez sur Démarrer l'entraînement.

    1. Nommez le modèle et sélectionnez le type de modèle Edge.

    2. Configurez les paramètres d'entraînement suivants, qui régissent les performances du modèle généré:

      Optimiser le modèle pour : Configuration du modèle à utiliser. Vous pouvez entraîner des modèles plus rapides et plus petits lorsque la faible latence ou la petite taille de paquet sont importantes, ou des modèles plus lents et plus volumineux lorsque la précision est la plus importante.
      Budget par heure de nœud

      Durée maximale, en heures de calcul, pour entraîner le modèle. Plus le temps d'entraînement est long, plus le modèle est précis.

      Notez que l'entraînement peut être terminé en moins de temps que celui spécifié si le système détermine que le modèle est optimisé et qu'un entraînement supplémentaire n'améliorerait pas la justesse. Vous n'êtes facturé que pour les heures réellement utilisées.

      Durée d'entraînement typique
      Très petits ensembles1 heure
      500 images2 heures
      1 000 images3 heures
      5 000 images6 heures
      10 000 images7 heures
      50 000 images11 heures
      100 000 images13 heures
      1 000 000 images18 heures

3. Évaluez le modèle :

Une fois l'entraînement terminé, vous pouvez cliquer sur l'onglet Évaluer pour afficher les métriques de performances du modèle.

L'une des utilisations importantes de cette page est de déterminer le seuil de confiance le plus adapté à votre modèle. Le seuil de confiance représente le niveau de confiance minimum requis pour que le modèle attribue un libellé à une image. Vous pouvez déplacer le curseur du seuil de confiance pour voir l'effet des différents seuils sur les performances du modèle. Les performances du modèle sont mesurées à l'aide de deux métriques: la précision et le rappel.

Dans le contexte de la classification des images, la précision correspond au rapport entre le nombre d'images correctement libellées et le nombre d'images libellées par le modèle en fonction du seuil sélectionné. Lorsqu'un modèle présente une précision élevée, il attribue moins souvent des libellés de manière incorrecte (moins de faux positifs).

Le rappel correspond au rapport entre le nombre d'images correctement libellées et le nombre d'images dont le contenu aurait dû être libellé par le modèle. Lorsqu'un modèle présente un rappel élevé, il n'attribue pas d'étiquettes moins souvent (moins de faux négatifs).

Selon votre cas d'utilisation, le type d'optimisation choisi dépendra de votre cas d'utilisation : la précision ou le rappel. Pour en savoir plus, consultez le guide du débutant pour AutoML Vision et le guide sur l'inclusion dans le ML – AutoML.

Lorsque vous trouvez un seuil de confiance qui génère des métriques qui vous conviennent, prenez-en note. Vous utiliserez ce seuil pour configurer le modèle dans votre application. Vous pouvez utiliser cet outil à tout moment pour obtenir une valeur de seuil appropriée.

4. Publier ou télécharger votre modèle

Si vous êtes satisfait des performances du modèle et que vous souhaitez l'utiliser dans une application, vous avez trois options, parmi lesquelles vous pouvez choisir n'importe quelle combinaison: déployer le modèle pour la prédiction en ligne, le publier sur Firebase ou le télécharger et le regrouper avec votre application.

Déployer le modèle

Dans l'onglet Test et utilisation de votre ensemble de données, vous pouvez déployer votre modèle pour la prédiction en ligne, ce qui l'exécute dans le cloud. Cette option est décrite dans la documentation Cloud AutoML. Les documents sur ce site traitent des deux autres options.

Publier le modèle

En publiant le modèle sur Firebase, vous pouvez le mettre à jour sans publier de nouvelle version de l'application. Vous pouvez également utiliser Remote Config et A/B Testing pour diffuser dynamiquement différents modèles à différents ensembles d'utilisateurs.

Si vous choisissez de ne fournir le modèle qu'en l'hébergeant avec Firebase, et non avec votre application, vous pouvez réduire la taille de téléchargement initiale de votre application. Toutefois, n'oubliez pas que si le modèle n'est pas fourni avec votre application, aucune fonctionnalité liée au modèle ne sera disponible tant que votre application n'aura pas téléchargé le modèle pour la première fois.

Pour publier votre modèle, vous pouvez utiliser l'une des deux méthodes suivantes:

  • Téléchargez le modèle TF Lite à partir de la page Test et utilisation de votre ensemble de données dans la console Google Cloud, puis importez-le sur la page Modèle personnalisé de la console Firebase. Il s'agit généralement du moyen le plus simple de publier un seul modèle.
  • Publiez le modèle directement depuis votre projet Google Cloud sur Firebase à l'aide du SDK Admin. Cette méthode vous permet de publier plusieurs modèles par lot ou de créer des pipelines de publication automatisés.

Pour publier le modèle avec l'API de gestion des modèles du SDK Admin:

  1. Installez et initialisez le SDK.

  2. Publiez le modèle.

    Vous devez spécifier l'identifiant de ressource du modèle. Il s'agit d'une chaîne semblable à l'exemple suivant:

    projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID
    PROJECT_NUMBER Numéro de projet du bucket Cloud Storage contenant le modèle. Il peut s'agir de votre projet Firebase ou d'un autre projet Google Cloud. Vous trouverez cette valeur sur la page "Paramètres" de la console Firebase ou dans le tableau de bord de la console Google Cloud.
    MODEL_ID ID du modèle, que vous avez obtenu à partir de l'API AutoML Cloud.

    Python

    # First, import and initialize the SDK.
    
    # Get a reference to the AutoML model
    source = ml.TFLiteAutoMlSource('projects/{}/locations/us-central1/models/{}'.format(
        # See above for information on these values.
        project_number,
        model_id
    ))
    
    # Create the model object
    tflite_format = ml.TFLiteFormat(model_source=source)
    model = ml.Model(
        display_name="example_model",  # This is the name you will use from your app to load the model.
        tags=["examples"],             # Optional tags for easier management.
        model_format=tflite_format)
    
    # Add the model to your Firebase project and publish it
    new_model = ml.create_model(model)
    new_model.wait_for_unlocked()
    ml.publish_model(new_model.model_id)
    

    Node.js

    // First, import and initialize the SDK.
    
    (async () => {
      // Get a reference to the AutoML model. See above for information on these
      // values.
      const automlModel = `projects/${projectNumber}/locations/us-central1/models/${modelId}`;
    
      // Create the model object and add the model to your Firebase project.
      const model = await ml.createModel({
        displayName: 'example_model',  // This is the name you use from your app to load the model.
        tags: ['examples'],  // Optional tags for easier management.
        tfliteModel: { automlModel: automlModel },
      });
    
      // Wait for the model to be ready.
      await model.waitForUnlocked();
    
      // Publish the model.
      await ml.publishModel(model.modelId);
    
      process.exit();
    })().catch(console.error);
    

Télécharger et regrouper le modèle avec votre application

En regroupant votre modèle avec votre application, vous pouvez vous assurer que les fonctionnalités de ML de votre application continuent de fonctionner lorsque le modèle hébergé sur Firebase n'est pas disponible.

Si vous publiez le modèle et l'associez à votre application, celle-ci utilisera la dernière version disponible.

Pour télécharger votre modèle, cliquez sur TF Lite sur la page Test et utilisation de votre ensemble de données.

Étapes suivantes

Maintenant que vous avez publié ou téléchargé le modèle, découvrez comment l'utiliser dans vos applications iOS+ et Android.