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

1. Introduction

Les progrès récents du machine learning ont rendu relativement facile pour les ordinateurs la reconnaissance d'objets dans des images. Dans cet atelier de programmation, nous allons vous expliquer de bout en bout la création d'un modèle de classification d'images capable de reconnaître différents types d'objets, puis de déployer le modèle dans l'application Android et iOS. ML Kit et AutoML vous permettent de créer et de déployer le modèle à grande échelle, sans aucune expérience en machine learning.

Qu'est-ce que ML Kit ?

ML Kit est un SDK pour mobile qui permet d'appliquer l'expertise de Google en machine learning aux applications Android et iOS dans un package à la fois puissant et simple d'utilisation. Que vous débutiez ou que vous ayez de l'expérience en machine learning, vous pouvez facilement implémenter la fonctionnalité dont vous avez besoin en quelques lignes de code. Plusieurs API pouvant reconnaître du texte, des visages, etc. sont prêtes à l'emploi. Toutefois, si vous avez besoin de reconnaître des objets non compatibles avec les API, tels que la reconnaissance de 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, en tirant parti de l'apprentissage par transfert avancé de Google et de la technologie Neural Architecture Search.

Dans cet atelier de programmation, nous allons utiliser AutoML Vision Edge de ML Kit pour entraîner un modèle de classification de fleurs. Le modèle est entraîné dans le cloud, puis 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
  • 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 (version 3.4 ou ultérieure)
  • Émulateur Android Studio avec le Play Store ou un appareil Android physique (version 5.0 ou ultérieure)
  • Vous disposez de connaissances de base en développement Android en Kotlin.

Pour l'application iOS

  • Une version récente de XCode (v10.2+)
  • Simulateur iOS ou appareil iOS physique (version 9.0 ou ultérieure)
  • CocoaPods
  • Connaissances de base du développement iOS avec 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 Créer un projet et nommez votre projet "Atelier de programmation ML Kit".

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 du bundle iOS: com.google.firebase.codelab.mlkit.automl
  2. Téléchargez le fichier de configuration GoogleService-Info.plist, puis suivez les instructions pour le transférer dans l'application iOS sur 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 empaqueté dans un fichier ZIP appelé 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 constaterez que l'ensemble de données contient des images de cinq types de fleurs: pissenlit, marguerite, tulipes, tournesols et roses, organisées en dossiers portant le nom de ces fleurs. C'est un moyen pratique de créer un ensemble de données d'entraînement pour alimenter AutoML et 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 le nombre d'images d'entraînement est important, plus les modèles sont 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. Des écrans de bienvenue peuvent s'afficher. Sélectionnez Commencer le cas échéant.
  1. Une fois la configuration terminée, sélectionnez Add dataset (Ajouter un ensemble de données) et nommez-le "Flowers".
  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 "Flower".
  5. Attendez quelques minutes que la tâche d'importation se termine.
  6. Vous pouvez maintenant vérifier que l'ensemble de données est correctement importé.
  7. Comme toutes les images de l'ensemble de données d'entraînement ont été étiquetées, vous pouvez entraîner le modèle.

cdb18b61f890934f.png

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

Étant donné que notre modèle fonctionnera sur un appareil mobile dont la puissance de calcul et l'espace de stockage sont limités, nous devons être attentifs non seulement à la précision du modèle, mais également à sa taille et à sa vitesse. Il existe toujours un compromis entre la justesse, 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 grand et prend plus de temps à classer une image.

AutoML vous propose plusieurs options: vous pouvez choisir d'optimiser la justesse, d'optimiser la latence et la taille du modèle, ou d'équilibrer les deux. Vous pouvez également choisir la durée pendant laquelle vous autorisez le modèle à être entraîné. L'entraînement des ensembles de données volumineux doit durer plus longtemps.

dd6b7eaa2dd5a9de.png

Voici la procédure à 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 1 heure de calcul pour la durée d'entraînement.
  3. Patientez un certain temps (probablement plusieurs heures) jusqu'à la fin de la tâche d'entraînement.
  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 les applications mobiles

Préparation

  • Cet atelier de programmation contient des applications exemples 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 présentent des fonctionnalités similaires. Vous pouvez choisir la plate-forme que vous connaissez le mieux.
  • Avant de continuer, assurez-vous d'avoir téléchargé les applications exemples et de les avoir configurées à l'étape 2.
  • Assurez-vous également que votre environnement local est configuré pour vous permettre de créer des applications pour la plate-forme que vous avez choisie (Android/iOS).

Télécharger le 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 applications exemples

Il vous suffit d'ajouter le modèle aux applications exemples pour qu'elles fonctionnent 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 explorer le fonctionnement des applications.

Vous disposez de deux options pour déployer le modèle: en local et à distance.

  • Le modèle local est principalement utilisé pour regrouper le modèle de classification d'images dans le binaire de votre application, même s'il peut également fournir un modèle enregistré dans un stockage local. Avec les offres groupées, le modèle est disponible immédiatement pour vos utilisateurs après qu'ils ont téléchargé votre application sur l'App Store ou le Play Store, et il fonctionne sans connexion Internet.
  • Le modèle distant signifie que le modèle est hébergé sur Firebase et n'est téléchargé sur l'appareil de l'utilisateur que lorsque vous en avez besoin pour la première fois. Ensuite, 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 à présent sur "Run" (Exécuter) (c8b8a080b7ead886.png) dans la barre d'outils d'Android Studio et vérifiez qu'il est capable de 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 Exécuter ( 16629f86bbeb4208.png) dans la barre d'outils Xcode, puis vérifiez que vous pouvez reconnaître différents types de fleurs.

65172c3f35336d4e.png

6. (Facultatif) Utiliser le modèle distant

Le modèle distant de ML Kit vous permet de ne pas inclure de modèles TensorFlow Lite dans le binaire de votre application, mais de le télécharger à la demande depuis Firebase si nécessaire. Les modèles distants 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

Au cours de cette étape, nous allons publier un modèle distant et l'utiliser dans les applications exemples. Assurez-vous d'avoir fini 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 l'atelier de programmation AutoML ML Kit. que vous avez créé précédemment.
  3. Sélectionnez ML Kit > AutoML.
  4. Sélectionnez "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 distant s'il est disponible. Après avoir publié le modèle distant, il vous suffit d'exécuter à nouveau les applications pour déclencher le téléchargement du modèle. Vous pouvez vérifier que l'application utilise le modèle distant en consultant la colonne "Source". dans le pied de page de l'écran de l'application. Consultez la section "Dépannage" ci-dessous si elle ne fonctionne pas.

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, puis 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 au nom du modèle que vous avez publié précédemment via la console Firebase.
  2. Cliquez à présent sur "Run" (Exécuter) (c8b8a080b7ead886.png) dans la barre d'outils d'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 au nom du modèle que vous avez publié précédemment via la console Firebase
  2. À présent, cliquez sur "Run" (Exécuter) (16629f86bbeb4208.png) dans la barre d'outils Xcode pour réexécuter l'application.

7. Félicitations !

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

Veuillez consulter notre documentation pour découvrir comment intégrer AutoML Vision Edge de ML Kit à votre propre application.

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

Exemples Android

Exemples iOS