Objectifs du tutoriel
Dans ce tutoriel, vous allez télécharger un modèle Core ML personnalisé et exporté .mlmodel
. Vous exécuterez ensuite une application iOS préconfigurée permettant d'identifier des images de fleurs à l'aide de ce modèle.

Objectifs
Dans ce tutoriel de présentation détaillé, vous allez utiliser du code pour effectuer les opérations suivantes :
- Exécuter un modèle Core ML pré-entraîné dans une application iOS
Présentation
Le framework Core ML vous permet d'utiliser un modèle de machine learning entraîné pour classer des données d'entrée. Le framework Vision utilise Core ML pour appliquer des modèles de classification à des images et pour prétraiter celles-ci afin de rendre les tâches de machine learning plus simples et plus faibles.
Avant de commencer
Télécharger un modèle Edge général
Téléchargez un dossier contenant un modèle Core ML pré-entraîné. Vous utiliserez ce modèle dans ce tutoriel.
Décompressez le fichier ZIP téléchargé.
Avant de commencer le tutoriel, accédez au répertoire racine du projet :
cd ClassifyingImagesWithVisionAndCoreML
Vous exécuterez tous les exemples de code suivants à partir de ce répertoire.
Entraîner et exporter un modèle Edge personnalisé
Avant de continuer, suivez le guide de démarrage rapide des modèles des appareils Edge en appliquant les modifications suivantes :
- Utilisez l'ensemble de données Flowers fourni ou votre propre ensemble de données.
- À l'étape Entraîner le modèle, cochez la case d'option Edge.
- À l'étape Exporter le modèle, suivez les instructions permettant d'exporter un modèle Core ML.
Vous utiliserez le fichier de fleurs Core ML model.mlmodel
obtenu pour exécuter une version personnalisée de l'application iOS existante.
Configurer l'application iOS
L'application de démonstration iOS nécessite plusieurs outils supplémentaires :
- Xcode
- Outils de ligne de commande Xcode
Télécharger Xcode
Utilisez ce lien pour télécharger Xcode sur votre ordinateur.
Installer les outils de ligne de commande Xcode
Exécutez la commande suivante dans la ligne de commande pour installer les outils de ligne de commande Xcode :
xcode-select --install
Ouvrir le projet
Ouvrez le projet avec Xcode. Vous pouvez ouvrir le projet via la ligne de commande ou à l'aide de la console Google Cloud Platform. Pour ouvrir le projet en utilisant la ligne de commande, exécutez la commande suivante :
open ./Vision+ML\ Example.xcodeproj
Exécuter l'application d'origine
Pour lancer l'application dans le simulateur et obtenir des annotations d'image, procédez comme suit :
- Pour lancer l'application, sélectionnez le bouton de lecture
dans l'angle supérieur gauche de la fenêtre Xcode.
- Fournissez une image de prédiction à l'application. Vous pouvez fournir une image de deux façons :
- Prendre une photo avec l'appareil photo de l'appareil
- Ajouter des photos à la photothèque de l'appareil en faisant un glisser-déposer dans la fenêtre du simulateur
L'application affiche les deux premières catégories de classification en fonction du score de confiance attribué par le modèle à chacune d'entre elles.
Le résultat doit afficher des annotations semblables à ce qui suit :
Exécuter l'application personnalisée
L'application d'origine utilise un modèle Core ML qui classe des images dans l'une des 1 000 classes ImageNet génériques (animaux, fruits, meubles, plantes, etc.) à l'aide de la version standard de MobileNet.
Modifiez l'application de sorte qu'elle utilise votre modèle réentraîné avec les catégories d'image de fleurs personnalisées suivantes :
- Marguerites
- Pissenlits
- Roses
- Tournesols
- Tulipes
Ajouter les fichiers de modèle au projet
Téléchargez le modèle de fleurs personnalisé (
model.mlmodel
Core ML exporté) que vous obtenez en suivant le guide de démarrage rapide des modèles des appareils Edge. Les fichiersmodel.mlmodel
etdict.txt
issus de l'exportation du modèle Core ML se trouvent dans l'emplacement Google Cloud Storage que vous avez spécifié.Remplacez le nom du modèle personnalisé par
AutoML.mlmodel
.Supprimez le modèle existant du projet (
MobileNet.mlmodel
).Ajoutez le modèle personnalisé au projet dans le dossier
Vision+ML Example
.Modifiez la ligne 30 dans
ImageClassificationViewController
. Supprimez ce qui suit :let model = try VNCoreMLModel(for: MobileNet().model)
Remplacez cette ligne par :
let model = try VNCoreMLModel(for: AutoML().model)
Exécuter votre application de modèle personnalisé
Pour relancer l'application dans le simulateur, sélectionnez le bouton de lecture dans l'angle supérieur gauche de la fenêtre Xcode.
Pour tester les modifications, ajoutez des fichiers image à partir du répertoire flower_photos/
et obtenez des prédictions.
Les résultats doivent ressembler à ce qui suit :

Pour tester le modèle, vous pouvez ajouter les images des données d'entraînement que vous avez téléchargées précédemment ou effectuer une recherche Google et télécharger les images obtenues afin de les utiliser pour la prédiction.
Fonctionnement
Maintenant que l'application est en cours d'exécution, examinez le code propre à Core ML et au framework Vision.
Configurer Vision avec un modèle Core ML
Core ML génère automatiquement une classe Swift qui permet d'accéder facilement à votre modèle de ML.
Dans cet exemple, Core ML génère automatiquement la classe MobileNet à partir de MobileNetmodel
.
Obtenez l'instance de modèle avec le code suivant :
let model = try VNCoreMLModel(for: MobileNet().model)
Créez la requête Vision avec le modèle et le gestionnaire d'achèvement ci-dessus. Le gestionnaire d'achèvement traite la réponse de prédiction du modèle.
La console Google Cloud Platform doit être mise à jour dans le thread principal :
let request = VNCoreMLRequest(model: model, completionHandler: { [weak self] request, error in DispatchQueue.main.async { guard let results = request.results else { self.classificationLabel.text = "Unable to classify image.\n\(error!.localizedDescription)" return }
La valeur results
sera toujours définie sur VNClassificationObservation
, comme spécifié par le modèle Core ML de ce projet.
let classifications = results as! [VNClassificationObservation] })
Le gestionnaire d'achèvement de la requête Vision indique si celle-ci a réussi ou si elle a généré une erreur. En cas de réussite, sa propriété "results" contient des objets VNClassificationObservation
décrivant les classifications possibles identifiées par le modèle de ML.
Un modèle de ML traite les images d'entrée dans un format fixe, mais celles-ci peuvent avoir un format arbitraire. Vision doit donc adapter ou recadrer les images en conséquence. Pour de meilleurs résultats, définissez la propriété
imageCropAndScaleOption
de la requête de sorte qu'elle corresponde aux options d'image ayant servi pour l'entraînement du modèle.request.imageCropAndScaleOption = .centerCrop
Créez le
VisionRequestHandler
avec l'image d'entrée à l'aide du code suivant :let handler = VNImageRequestHandler(ciImage: ciImage, orientation: orientation)
Appelez la fonction "perform" du gestionnaire en transmettant l'objet de la requête.
do { try handler.perform([self.classificationRequest]) } catch {
Ce gestionnaire détecte les erreurs générales de traitement d'image. Le gestionnaire d'achèvement
processClassifications(_:error:)
declassificationRequest
détecte les erreurs propres au traitement de cette requête.print("Failed to perform classification.\n\(error.localizedDescription)") }
Étapes suivantes
Vous avez à présent terminé cette procédure d'utilisation d'un modèle Core ML exporté depuis AutoML Vision Edge pour une application iOS de classification de fleurs. Vous avez utilisé un modèle Core ML entraîné pour tester une application de classification d'images, vous avez modifié cette application, puis vous avez obtenu des exemples d'annotations de fleurs personnalisées. Vous avez ensuite examiné le code propre à Core ML afin d'en comprendre les fonctionnalités sous-jacentes.
Pour continuer à découvrir les modèles Core ML et AutoML Vision Edge, consultez les ressources suivantes :
- Pour en savoir plus sur Core ML, consultez la documentation officielle et le dépôt de code.
- Testez la version pour appareil photo de cette application de démonstration, qui utilise une version quantifiée du modèle. Vous bénéficiez ainsi de la même puissance, dans un package plus petit et plus efficace.
- Testez d'autres modèles pour TFLite, tels qu'un détecteur vocal de mots clés ou une version avec Réponse suggérée intégrée directement sur l'appareil.