Tutoriel Swift : Introduction au machine learning avec Core ML

Voici le premier d’une série d’articles traitant du machine learning et des réseaux de neurones… tout un programme !


A moins que vous ne viviez au fin fond d’une grotte en Antarctique, il y a peu de chance pour que vous soyez passé à coté de la « déferlante machine learning ». Même si ce terme à parfois tout du buzzword à la mode, le machine learning (ML) permet quand même de réaliser des choses inimaginables il y a encore 10 ans (prédiction de cancers, reconnaissance d’images…) !

Autant dire qu’en tant que développeur.se, nous avons là un terrain de jeu fantastique !

Tout d’abord, une petite définition du ML : L’apprentissage automatique (machine learning) est un champ d’étude de l’intelligence artificielle qui se fonde sur des approches statistiques pour donner aux ordinateurs la capacité d’apprendre à partir de données. Les ordinateurs deviennent alors capable d’améliorer leurs performances à résoudre des tâches sans être explicitement programmés pour chacune. Voir Wikipedia.

Apprendre le ML consiste principalement (à notre niveau), à apprendre à entraîner des réseaux neuronaux (modèles).

Et pour notre plus grand plaisir 🙂 , Apple à introduit lors de la WWDC 2017 Core ML, une manière simple d’utiliser des modèles pré-entrainés dans une application iOS ou MacOS avec aussi peu de code que possible.

Donc, après cette (trop) longue introduction, voici la démo…

Nous allons de manière très simple (dans un Playground), créer un programme de ML capable de reconnaitre des pommes ou des bananes !

Tout d’abord, et comme le dit souvent le Dr Laurent Alexandre, la base du ML, c’est la data. Il vaut mieux un mauvais algorithme et beaucoup de datas que l’inverse…

Commencez donc par télécharger le dossier d’images ici.

Lorsque vous ouvrez ce dossier, vous découvrez 2 sous dossiers : Training Data et Testing Data.

Chaque dossier contient des images de pommes et de bananes.

Testing Datas contient environ 20 images de chaque, et Training Data en contient 80.

En général, on prend 80% des datas pour l’entrainement du modèle, et 20% pour le tester. Si cela vous rappelle quelque chose, c’est normal, puisque 80 – 20, c’est aussi le principe de Pareto…

Maintenant, ouvrez Xcode et cliquez sur « Get started with a Playground », puis, dans la nouvelle fenêtre qui s’affiche, choisissez le template « Blank » dans macOS :

Attention à bien sélectionner macOS et non iOS, car CreateML n’est pas supporté par les Playgrounds iOS.

Nommez votre Playground comme bon vous semble…

Entrez ce code :

Et c’est tout ! Assurez vous d’avoir enclenché la fonctionnalité « Live View » dans Xcode Playgrounds, et vous devriez voir ceci :

Dans la live view, vous avez un emplacement pour déposer des images.

Nous allons maintenant entrainer notre modèle. Pour cela , glissez-déposez le dossier « Training Data » dans l’emplacement.

Vous verrez alors le playground démarrer l’entrainement de notre classificateur d’images !

Après un temps variable en fonction des performances de votre machine, vous devriez arriver à ceci :

Pendant l’entraînement, Xcode distribue les données en 80 – 20. L’entrainement se fait sur 80 % des données, et Xcode test le modèle sur les 20 % restant. Le pourcentage de validation se réfère donc au pourcentage d’images correctement reconnues par le modèle lors de ce test. Celui-ci est variable en fonction de la répartition des données faites par Xcode. Dans mon cas, je suis à 88 %. Evaluation n’est pas rempli car nous n’avons pas encore fourni de données de test. Faisons-le maintenant !

Comme pour les données d’entraînement, glissez-déposez le dossier « Testing Data » dans l’application. Maintenant, vous devriez obtenir ceci ;

Ici, 100% des images de test ont été reconnues !

Nous pouvons alors sauvegarder ce modèle pour l’utiliser dans nos applications (nous verrons cela dans un prochain article) :

Ou jouer avec : essayez de lui donner une photo de pomme ou de banane et voyez le résultat (pour ne pas « tricher », évitez de nommer l’image « Apple » ou « Banana », et prenez la au hasard sur le web) :

Magique !

Pour creuser un peu le sujet, je ne peux que vous encourager à suivre la formation de Google au ML et à Tensorflow ici : https://developers.google.com/machine-learning

Voilà, j’espère vous avoir donné envie d’en savoir un peu plus sur le ML à la sauce Apple !

Dans un prochain article, je vous montrerai comment utiliser un modèle de ML dans une « vraie » application…

En attendant, si vous avez des questions, suggestions… commentez 🙂

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.