Entraîner et déployer un modèle de classification d'images sur l'appareil avec AutoML Vision dans ML Kit

1. Introduction

Grâce aux récents progrès du machine learning, les ordinateurs peuvent désormais reconnaître relativement facilement les objets dans les images. Dans cet atelier de programmation, nous vous guiderons tout au long du processus de création d'un modèle de classification d'images capable de reconnaître différents types d'objets, puis de déploiement du modèle sur une application Android et iOS. ML Kit et AutoML vous permettent de créer et de déployer le modèle à grande échelle sans aucune expertise en apprentissage automatique.

Qu'est-ce que ML Kit ?

ML Kit est un SDK mobile qui intègre l'expertise de Google en matière de machine learning dans les applications Android et iOS, le tout dans un package puissant et simple d'utilisation. Que vous soyez débutant ou expérimenté en machine learning, vous pouvez facilement implémenter la fonctionnalité dont vous avez besoin en quelques lignes de code. Il existe plusieurs API qui peuvent reconnaître du texte, des visages, etc. et que vous pouvez utiliser prêtes à l'emploi. Toutefois, si vous devez reconnaître des objets qui ne sont pas compatibles avec les API, comme différents types de fleurs à partir d'une image, vous devez entraîner votre propre modèle. C'est là qu'AutoML peut vous aider.

Qu'est-ce qu'AutoML ?

Cloud AutoML est une suite de produits de machine learning qui permet aux développeurs peu expérimentés dans ce domaine d'entraîner des modèles de haute qualité répondant aux besoins spécifiques de leur entreprise. Pour ce faire, elle exploite les technologies de pointe de Google en matière d'apprentissage par transfert et de recherche d'architecture neuronale.

Dans cet atelier de programmation, nous allons utiliser AutoML Vision Edge dans ML Kit pour entraîner un modèle de classification de fleurs. Le modèle est entraîné dans le cloud, mais il est ensuite regroupé ou téléchargé par l'application pour exécuter des inférences entièrement sur l'appareil.

93f21fd287496e4e.png

Points abordés

  • Entraîner un modèle de classification d'images à l'aide d'AutoML Vision Edge dans ML Kit
  • Découvrez comment l'exécuter dans un exemple d'application Android ou iOS à l'aide du SDK ML Kit.

Prérequis

Pour l'application Android

  • Une version récente d'Android Studio (v3.4 ou version ultérieure)
  • Un émulateur Android Studio avec le Play Store ou un appareil Android physique (version 5.0 ou ultérieure)
  • Connaissances de base du développement Android en Kotlin

Pour l'application iOS

  • Une version récente de Xcode (v10.2 ou ultérieure)
  • Simulateur iOS ou appareil iOS physique (version 9.0 ou ultérieure)
  • CocoaPods
  • Connaissances de base du développement iOS en Swift

2. Configuration

Télécharger le code et l'ensemble de données d'entraînement

Téléchargez une archive ZIP contenant le code source de cet atelier de programmation et un ensemble de données d'entraînement. Extrayez l'archive sur votre ordinateur local.

Télécharger le fichier ZIP

Créer un projet dans la console Firebase

  1. Accédez à la console Firebase.
  2. Sélectionnez Create New Project (Créer un projet), puis nommez votre projet "ML Kit Codelab".

Configurer l'application Android

  1. Ajoutez notre application Android au projet Firebase. Nom du package Android : com.google.firebase.codelab.mlkit.automl
  2. Téléchargez le fichier de configuration google-services.json et placez-le dans l'application Android à l'emplacement android/mlkit-automl/app/google-services.json.

Configurer l'application iOS

  1. Ajoutez notre application iOS au projet Firebase. ID de bundle iOS : com.google.firebase.codelab.mlkit.automl
  2. Téléchargez le fichier de configuration GoogleService-Info.plist et suivez les instructions pour le placer dans l'application iOS à l'emplacement ios/mlkit-automl/GoogleService-Info.plist.

3. Préparer l'ensemble de données d'entraînement

Pour entraîner un modèle à reconnaître différents types d'objets, vous devez préparer un ensemble d'images et étiqueter chacune d'elles. Nous avons créé une archive de photos de fleurs sous licence Creative Commons que vous pouvez utiliser dans cet atelier de programmation.

L'ensemble de données est compressé dans un fichier ZIP nommé flower_photos.zip, qui est inclus dans l'archive ZIP que vous avez téléchargée à l'étape précédente.

Explorer l'ensemble de données

Si vous extrayez le fichier flower_photos.zip, vous verrez que l'ensemble de données contient des images de cinq types de fleurs (pissenlits, marguerites, tulipes, tournesols et roses) organisées dans des dossiers portant le nom des fleurs. Il s'agit d'un moyen pratique de créer un ensemble de données d'entraînement à fournir à AutoML pour entraîner un modèle de classification d'images.

Cet ensemble de données d'entraînement contient 200 images pour chaque type de fleur. Vous n'avez besoin que d'au moins 10 images par classe pour entraîner un modèle. Toutefois, plus vous fournissez d'images d'entraînement, plus vos modèles seront performants.

e5772b6527a6048d.png 6c4443d31cd5653e.png

4. Entraîner un modèle

Importer l'ensemble de données d'entraînement

  1. Dans la console Firebase, ouvrez le projet que vous venez de créer.
  2. Sélectionnez ML Kit > AutoML.
  3. Il est possible que des écrans de bienvenue s'affichent. Sélectionnez Commencer, le cas échéant.
  1. Une fois la configuration terminée, sélectionnez Ajouter un ensemble de données et nommez-le "Flowers" (Fleurs).
  2. Dans Objectif du modèle, sélectionnez Classification à étiquette unique,car les données d'entraînement ne contiennent qu'une seule étiquette par image.
  3. Sélectionnez Créer.
  4. Importez le fichier flower_photos.zip que vous avez téléchargé à l'étape précédente pour importer l'ensemble de données d'entraînement sur les fleurs.
  5. Patientez quelques minutes que l'importation soit terminée.
  6. Vous pouvez maintenant vérifier que l'ensemble de données a bien été importé.
  7. Comme toutes les images de l'ensemble de données d'entraînement ont été étiquetées, vous pouvez passer à l'entraînement d'un modèle.

cdb18b61f890934f.png

Entraîner un modèle de classification d'images

Comme notre modèle s'exécutera sur un appareil mobile dont la puissance de calcul et le stockage sont limités, nous devons tenir compte non seulement de la précision du modèle, mais aussi de sa taille et de sa vitesse. Il existe toujours un compromis entre la précision du modèle, la latence (c'est-à-dire le temps nécessaire pour classer une image) et la taille du modèle. En général, un modèle plus précis est également plus volumineux et prend plus de temps à classer une image.

AutoML vous propose plusieurs options : vous pouvez choisir d'optimiser la précision, la latence et la taille du modèle, ou de trouver un équilibre entre ces trois critères. Vous pouvez également choisir la durée d'entraînement du modèle. Les ensembles de données plus volumineux doivent être entraînés plus longtemps.

dd6b7eaa2dd5a9de.png

Voici les étapes à suivre si vous souhaitez entraîner le modèle vous-même.

  1. Sélectionnez Entraîner le modèle.
  2. Sélectionnez l'option Usage général et une durée d'entraînement de 1 heure de calcul.
  3. Attendez un certain temps (probablement plusieurs heures) que la tâche d'entraînement se termine.
  4. Une fois la tâche d'entraînement terminée, vous verrez des métriques d'évaluation sur les performances du modèle entraîné.

73f98fbed5ae5ee5.png

5. Utiliser le modèle dans des applications mobiles

Préparation

  • Cet atelier de programmation contient des exemples d'applications Android et iOS qui montrent comment utiliser le modèle de classification d'images que nous avons entraîné précédemment dans une application mobile. Les deux applications ont des fonctionnalités similaires. Vous pouvez choisir la plate-forme avec laquelle vous êtes le plus à l'aise.
  • Avant de continuer, assurez-vous d'avoir téléchargé les applications exemples et de les avoir configurées à l'étape 2.
  • Veuillez également vous assurer que votre environnement local a été configuré pour pouvoir créer des applications pour la plate-forme que vous avez choisie (Android/iOS).

Télécharger un modèle de classification d'images

  • Si vous avez entraîné un modèle à l'étape précédente, sélectionnez Télécharger pour l'obtenir.
  • Si vous n'avez pas entraîné de modèle ou si votre tâche d'entraînement n'est pas encore terminée, vous pouvez utiliser le modèle inclus dans les applications exemples.

Ajouter le modèle aux exemples d'applications

Il vous suffit d'ajouter le modèle aux applications exemples pour qu'il fonctionne immédiatement. Pour obtenir un guide complet sur l'intégration de ML Kit AutoML à votre application, veuillez consulter notre documentation ( Android, iOS). Le code qui interagit avec le SDK ML Kit se trouve respectivement dans les fichiers ImageClassifier.kt et ImageClassifier.swift. Vous pouvez donc commencer par là pour découvrir comment fonctionnent les applications.

Deux options s'offrent à vous pour déployer le modèle : localement ou à distance.

  • Le modèle local est principalement utilisé pour regrouper le modèle de classification d'images dans le binaire de votre application, bien qu'il soit également possible de fournir un modèle enregistré dans le stockage local. Avec le regroupement, le modèle est immédiatement disponible pour vos utilisateurs après le téléchargement de votre application depuis l'App Store ou le Play Store, et il fonctionnera sans connexion Internet.
  • Un modèle distant signifie qu'il est hébergé sur Firebase et qu'il ne sera téléchargé sur l'appareil de votre utilisateur que lorsqu'il sera nécessaire pour la première fois. Le modèle fonctionnera également hors connexion.

2e71ed2c7cb8757c.png

Application Android

  1. Ouvrez Android Studio.
  2. Importez l'application Android sous android/mlkit-automl/.
  3. (Facultatif) Extrayez le modèle que vous avez téléchargé et copiez son contenu sur le modèle inclus dans l'application exemple. 10cf6b1e0f34de29.png
  4. Cliquez maintenant sur Run ( Exécuter) c8b8a080b7ead886.png dans la barre d'outils Android Studio et vérifiez que vous pouvez reconnaître différents types de fleurs.

2e71ed2c7cb8757c.png

Application iOS

  1. Ouvrez le terminal et accédez au dossier ios/mlkit-automl/.
  2. Exécutez pod install pour télécharger les dépendances via Cocoapods.
  3. Exécutez open MLVisionExample.xcworkspace/ pour ouvrir l'espace de travail du projet dans Xcode.
  4. (Facultatif) Extrayez le modèle que vous avez téléchargé et copiez son contenu sur le modèle inclus dans l'application exemple sous ios/ml-automl/Resources/automl/cd291fe04bcdc6ee.png.
  5. Cliquez maintenant sur Run ( 16629f86bbeb4208.png) dans la barre d'outils Xcode et vérifiez que vous pouvez reconnaître différents types de fleurs.

65172c3f35336d4e.png

6. (Facultatif) Utiliser un modèle distant

Le modèle à distance de ML Kit vous permet de ne pas inclure les modèles TensorFlow Lite dans le binaire de votre application, mais de les télécharger à la demande depuis Firebase lorsque vous en avez besoin. Les modèles à distance présentent plusieurs avantages par rapport aux modèles locaux :

  • Binaire d'application plus petit
  • Possibilité de mettre à jour les modèles sans mettre à jour l'application
  • Tests A/B avec plusieurs versions d'un modèle

Dans cette étape, nous allons publier un modèle à distance et l'utiliser dans les applications exemples. Veuillez vous assurer d'avoir terminé d'entraîner votre modèle à l'étape 4 de cet atelier de programmation.

Publier le modèle

  1. Accédez à la console Firebase.
  2. Sélectionnez le projet "ML Kit AutoML Codelab" que vous avez créé précédemment.
  3. Sélectionnez ML Kit > AutoML.
  4. Sélectionnez l'ensemble de données "Flowers" (Fleurs) que vous avez créé précédemment.
  5. Vérifiez que la tâche d'entraînement est terminée, puis sélectionnez le modèle.
  6. Sélectionnez Publier et nommez-le "mlkit_flowers". b63a58b83e814acd.png

Reconnaître des fleurs avec le modèle distant

Les applications exemples sont configurées pour utiliser le modèle à distance s'il est disponible. Une fois le modèle à distance publié, il vous suffit de réexécuter les applications pour déclencher le téléchargement du modèle. Vous pouvez vérifier que l'application utilise le modèle à distance en examinant la valeur "Source" dans le pied de page de l'écran de l'application. Si cela ne fonctionne pas, consultez la section "Dépannage" ci-dessous.

7c8292293fd858ad.png de359886ccecef2.png

Dépannage

Si l'application exemple utilise toujours le modèle local, veuillez vérifier que le nom du modèle distant est correctement défini dans le code.

Application Android

  1. Accédez à ImageClassifier.kt et recherchez ce bloc.
val remoteModel = FirebaseRemoteModel.Builder(REMOTE_MODEL_NAME).build()
  1. Vérifiez que le nom du modèle défini dans le code correspond à celui que vous avez publié précédemment dans la console Firebase.
  2. Cliquez ensuite sur Run ( Exécuter) c8b8a080b7ead886.png dans la barre d'outils Android Studio pour réexécuter l'application.

Application iOS

  1. Accédez à ImageClassifier.swift et recherchez ce bloc :
return RemoteModel(
  name: Constant.remoteAutoMLModelName,
  allowsModelUpdates: true,
  initialConditions: initialConditions,
  updateConditions: updateConditions
)
  1. Vérifiez que le nom du modèle défini dans le code correspond à celui que vous avez publié précédemment via la console Firebase.
  2. Cliquez ensuite sur Exécuter ( 16629f86bbeb4208.png) dans la barre d'outils Xcode pour réexécuter l'application.

7. Félicitations !

Vous avez suivi un parcours complet d'entraînement d'un modèle de classification d'images avec vos propres données d'entraînement à l'aide d'AutoML, puis vous avez utilisé le modèle dans une application mobile avec ML Kit.

Consultez notre documentation pour savoir comment intégrer AutoML Vision Edge dans le kit ML à votre propre application.

Vous pouvez également essayer nos exemples d'applications ML Kit pour découvrir d'autres fonctionnalités de Firebase ML Kit.

Exemples Android

Exemples iOS