Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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

Pour entraîner un modèle d'étiquetage d'images, vous fournissez à 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 l'étiquetage d'images sur l'appareil dans votre application. (Voir la vue d' ensemble des informations générales sur cette fonction.)

AutoML Vision bord est un service Google Cloud. L' utilisation du service est soumise à l' accord de licence Google Cloud Platform et services Conditions spécifiques , et facturé en conséquence. Pour plus d' informations de facturation, consultez la AutoML Prix page.

Avant que tu commences

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

Tout d'abord, vous devez créer un ensemble de données d'apprentissage d'images étiquetées. Gardez les directives suivantes à l'esprit :

  • Les images doivent être dans l'un des formats suivants : JPEG, PNG, GIF, BMP, ICO.

  • Chaque image doit faire 30 Mo ou moins. Notez qu'AutoML Vision Edge réduit la plupart des images lors du prétraitement. Il n'y a donc généralement aucun avantage en termes de précision à fournir des images à très haute résolution.

  • Incluez au moins 10, et de préférence 100 ou plus, exemples de 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 doivent être faites. Par exemple, si votre cas d'utilisation implique des images floues et à faible résolution (comme celles d'une caméra de sécurité), vos données d'entraînement doivent être composées d'images floues et à faible 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. Ils peuvent ne pas fonctionner correctement pour les radiographies, les dessins à la main, les documents numérisés, les reçus, etc.

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

Lorsque vos images d'entraînement sont prêtes, préparez-les à les importer dans Firebase. Vous avez trois options :

Option 1 : archive zip structurée

Organisez vos images d'entraînement dans des répertoires, chacun nommé d'après une étiquette et contenant des images qui sont des exemples de cette étiquette. Ensuite, compressez la structure du répertoire dans une archive zip.

Les noms de répertoire dans cette archive zip peut être jusqu'à 32 caractères ASCII long et peuvent contenir que des caractères alphanumériques et le caractère underscore ( _ ).

Par 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 index CSV

Envoyez vos images de formation à Google Cloud Storage et préparer un fichier CSV répertoriant les URL de chaque image, et, le cas échéant, les étiquettes correctes 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.

Voir Préparation de vos données de formation dans la documentation cloud AutoML Vision pour plus d' informations sur la préparation du fichier CSV.

Option 3 : images non étiquetées

Étiquetez vos images d'entraînement dans la console Firebase après les avoir téléchargées, individuellement ou dans un fichier zip non structuré. Voir la prochaine étape.

2. Entraînez votre modèle

Ensuite, entraînez un modèle à l'aide de vos images :

  1. Ouvrez la Vision datasets page dans le Google Cloud Console. Sélectionnez votre projet lorsque vous y êtes invité.

  2. Cliquez sur Nouveau jeu de données, indiquez un nom pour l'ensemble de données, sélectionnez le type de modèle que vous souhaitez former et cliquez sur Créer un ensemble de données.

  3. Sur votre onglet Importer ensemble de données, soit télécharger une archive zip de vos images de formation ou d' un fichier CSV contenant les emplacements de stockage Cloud vous les mises en ligne sur. Voir Assemblez vos données d'entraînement .

  4. Après la finalise la tâche d'importation, utilisez l'onglet Images pour vérifier les données de formation et d' étiqueter les images non marquées.

  5. Dans l'onglet Train, cliquez sur Démarrer la formation.

    1. Nom du 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... La configuration du modèle à utiliser. Vous pouvez entraîner des modèles plus rapides et plus petits lorsqu'une faible latence ou une petite taille de package sont importants, ou des modèles plus lents et plus grands lorsque la précision est la plus importante.
      Budget d'heures de nœud

      Temps maximal, en heures de calcul, à consacrer à l'entraînement du modèle. Plus de temps de formation se traduit généralement par un modèle plus précis.

      Notez que la formation peut être achevée en moins de temps que spécifié si le système détermine que le modèle est optimisé et qu'une formation supplémentaire n'améliorerait pas la précision. Vous n'êtes facturé que pour les heures réellement utilisées.

      Temps d'entraînement typiques
      Très petits ensembles 1 heure
      500 images 2 heures
      1 000 images 3 heures
      5 000 images 6 heures
      10 000 images 7 heures
      50 000 images 11 heures
      100 000 images 13 heures
      1 000 000 d'images 18 heures

3. Évaluez votre modèle

Lorsque la formation est terminée, vous pouvez cliquer sur l'onglet pour voir Évaluer les mesures de performance pour le modèle.

Une utilisation importante de cette page est de déterminer le seuil de confiance qui fonctionne le mieux pour votre modèle. Le seuil de confiance est la confiance minimale que le modèle doit avoir pour attribuer une étiquette à une image. En déplaçant le curseur de seuil de confiance, vous pouvez voir comment les différents seuils affectent la performance du modèle. La performance modèle est mesurée à l' aide de deux paramètres: précision et de rappel.

Dans le contexte de la classification de l' image, la précision est le rapport entre le nombre d'images qui ont été correctement étiquetés au nombre d'images du modèle marqué compte tenu du seuil choisi. Lorsqu'un modèle a une haute précision, il attribue moins souvent des étiquettes incorrectes (moins de faux positifs).

Le rappel est le rapport du nombre d'images qui ont été correctement étiquetés au nombre d'images qui avaient contenu le modèle aurait pu étiqueter. Lorsqu'un modèle a un rappel élevé, il ne parvient pas à attribuer une étiquette moins souvent (moins de faux négatifs).

Que vous optimisiez pour la précision ou le rappel dépendra de votre cas d'utilisation. Voir le Guide d' initiation AutoML Vision et le Guide inclus ML - AutoML pour plus d' informations.

Lorsque vous trouvez un seuil de confiance qui produit des métriques avec lesquelles vous êtes à l'aise, notez-le ; vous utiliserez le seuil de confiance pour configurer le modèle dans votre application. (Vous pouvez utiliser cet outil à tout moment pour obtenir une valeur seuil appropriée.)

4. Publiez ou téléchargez votre modèle

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

Déployer le modèle

Sous l'onglet Test et utilisation de votre ensemble de données, vous pouvez déployer votre modèle de prévision en ligne, qui exécute votre modèle dans le nuage. Cette option est couverte dans les docs - Cloud AutoML . Les documents sur ce site traitent des deux options restantes.

Publier le modèle

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

Si vous choisissez de ne fournir le modèle qu'en l'hébergeant avec Firebase et de ne pas l'associer à votre application, vous pouvez réduire la taille de téléchargement initiale de votre application. Gardez à l'esprit, cependant, que si le modèle n'est pas fourni avec votre application, aucune fonctionnalité liée au modèle ne sera disponible jusqu'à ce que votre application télécharge 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écharger le TF modèle Lite à partir de votre page de test et de l' utilisation de l'ensemble de données dans Google Cloud Console, puis télécharger le modèle sur le modèle personnalisé page de la console Firebase. C'est généralement le moyen le plus simple de publier un seul modèle.
  • Publiez le modèle directement depuis votre projet Google Cloud vers Firebase à l'aide du SDK Admin. Vous pouvez utiliser cette méthode pour publier par lots plusieurs modèles ou pour aider à créer des pipelines de publication automatisés.

Pour publier le modèle avec le Admin SDK API de gestion du modèle :

  1. Installer et initialiser le SDK .

  2. Publier le modèle.

    Vous devrez spécifier l'identifiant de ressource du modèle, qui est une chaîne qui ressemble à l'exemple suivant :

    projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID
    PROJECT_NUMBER Numéro de projet du bucket Cloud Storage qui contient le modèle. Il peut s'agir de votre projet Firebase ou d'un autre projet Google Cloud. Vous pouvez trouver cette valeur sur la page Paramètres de la console Firebase ou du tableau de bord Google Cloud Console.
    MODEL_ID L'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échargez et regroupez 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 fonctionnent toujours lorsque le modèle hébergé par Firebase n'est pas disponible.

Si vous publiez à la fois le modèle et le regroupez avec votre application, l'application utilisera la dernière version disponible.

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

Prochaines étapes

Maintenant que vous avez publié ou téléchargé le modèle, apprendre à utiliser le modèle dans votre iOS et Android applications.