HomeBlogContact me

Du Machine Learning sur iOS avec CoreML et React-Native: partie 1, créer un modèle

17 March, 2018 - 4 min read

Si vous êtes comme moi, et que vous avez toujours rêvé de développer une application capable de différencier un hotdog du teckel de votre voisine, ce tutoriel est pour vous.

Les solutions de Machine Learning sont depuis longtemps disponibles dans le cloud via des API, mais elles demandaient une connexion internet et leur temps de traitement pouvait s'avérer long et coûteux à la fois.

Avec la sortie d'iOS 11, Apple a mis à disposition des développeurs sa librairie de Machine Learning, CoreML. Désormais, il n'est plus nécessaire d'avoir un serveur puissant pour traiter les reqûetes ou faire appel à une API tierce. CoreML s'occupe de tout avec la puissance de calcul de votre smartphone.

Vous êtes curieux de savoir comment l'intégrer dans vos applications ? C'est plus simple que ce que vous pourriez penser.

Prenons comme exemple, la célèbre application parodique Not Hotdog, découverte dans la série Silicon Valley, qui, lorsque l'utilisateur pointe son smartphone vers un objet, lui dit instantanément si ce dernier regarde un hotdog ou non.

Not hotdog

Ce que vous allez apprendre dans cette partie

  • Installer votre environnement
  • Collecter des données
  • Créer votre modèle de classification d'image avec Turi Create

Les prérequis

  • macOS 10.12+
  • ou Linux (avec glibc 2.12+)
  • ou Windows 10 (via WSL)
  • Python 2.7, 3.5 ou 3.6
  • une architecture x86_64

Qu'est-ce que Turi Create ?

Il s'agit d'un outil qui « simplifie le développement de modèles de machine learning personnalisés », pouvant être ensuite exploités dans des applications utilisant la librairie CoreML. Turi Create se base sur le framework de Deep Learning MXNet d'Apache

Turi Create met à disposition des développeurs une technologie souple pour classifier des images, détecter des objets, concevoir des systèmes de recommandations, ... L'outil est extrêmement simple d'utilisation, flexible, et rapide.

Son installation

Comme pour beaucoup d'outils de Machine Learning, python est le langage utilisé. Mais ne vous en faites pas, le code est très simple à comprendre.

Il est recommandé d'utiliser un environnement virtuel, virtualenv, en entrant la commande

pip install virtualenv

Si vous n'avez pas pip, le gestionnaire de paquets de Python, vous pouvez l'installer grâce à Homebrew en entrant la commande

brew install pip

Puis,

// Créer un environnement virtuel Python
cd ~
virtualenv venv

// Activer votre environnement virtuel
source ~/venv/bin/activate

// Installer Turi Create
pip install -U turicreate

Collecter des données

Avant de pouvoir entraîner un modèle, il nous faut des données.

Ces données, on peut les trouver sur le site ImageNet qui est une très large base de données d'images, avec plus de 14 millions de résultats.

Pour notre projet, nous avons besoin de deux catégories d'images: Hotdog et... Not Hotdog.

Voici le lien pour la première: http://www.image-net.org/synset?wnid=n07697537.

So many hotdogs

On peut également récupérer tous les liens en utilisant l'API publique, via le bouton Download dans l'onglet Downloads

download button

http://www.image-net.org/api/text/imagenet.synset.geturls?wnid=n07697537

Vous pourrez retrouver sur le repository turicreate-easy-scripts un ensemble de scripts qui vous faciliteront la vie

Ainsi, après avoir installé les dépendances, en entrant la commande

cd download-images
npm install

node imagenet-downloader.js http://www.image-net.org/api/text/imagenet.synset.geturls?wnid=n07697537 hotdog

nous obtiendrons un dossier rempli d'images de hotdogs.

Il ne reste plus qu'à faire la même chose pour Not Hotdog. Choisissez donc la/les catégories qui vous plaisent le plus et catégorisez-les comme not-hotdog

node imagenet-downloader.js http://image-net.org/api/text/imagenet.synset.geturls?wnid=n00021939 not-hotdog

Entraîner le modèle

Une fois les images téléchargées et catégorisées, il ne reste plus qu'à entraîner le modèle de classification.

Pour ce faire, vous pouvez utiliser le script python mis à disposition dans le repository téléchargé précédemment

cd train-model
python train-model.py

Turi Create GUI

Vous obtiendrez au bout d'une dizaine de minutes, ou plus selon le nombre d'images à traiter, un fichier Classifier.mlmodel que l'on utilisera dans la seconde partie de ce tutoriel.

Merci de m'avoir lu et, si l'article vous a plu, n'hésitez pas à le partager sur les réseaux sociaux.