L’intelligence artificielle (IA), le machine learning, le deep learning voici des termes qui reviennent régulièrement sur le devant de la scène. Netflix a d’ailleurs consacré un documentaire sur AlphaGo, le premier programme ayant battu le champion du monde du jeu de Go ; jeu reconnu bien plus complexe que les échecs à cause des très nombreuses de combinaisons possibles. Au moment où j’écris cet article le buzz est un programme ayant prédit la victoire de l’Angleterre pour l’euro 2020 et celle-ci est en finale contre l’Italie. Coup de chance ? Affaire à suivre…

Pour créer son modèle d’apprentissage, il existe plusieurs solutions techniques reconnues telles que : TensorFlow, PyTorch, Keras… Souvent les solutions demandent aux développeurs de maitriser le langage Python, des notions mathématiques avancées ainsi que d’autres connaissances telles que : les perceptrons, les fonctions d’activations, les convolutions, les descentes de gradient, les dense layer, la normalisation des données et bien plus encore.

Je pense que vous l’avez compris, créer son premier modèle n’est pas chose aisée. C’est pour cela que Google a développé Teachable Machine avec la promesse suivante :

Un moyen rapide et simple de créer des modèles de machine learning pour vos sites, applis et plus encore… Sans aucune expérience, ni connaissances en programmation.

Teachable machine

Teachable Machine est un outil web permettant de créer des modèles de classifications. Les étapes sont les suivantes :

  • Collecter des données locales ou dans le cloud (Google Drive) à classifier.
  • Entrainer les données
  • Tester depuis l’interface la qualité du modèle
  • Exporter celui-ci selon la plateforme de son choix

Passons en revue les différentes étapes pour créer son premier modèle.

Création du modèle

Teachable Machine permet de créer 3 types de modèles :

  • Image permettant de reconnaître des formes, des couleurs, des personnages, des personnes…
  • Audio pour reconnaître des types de sons.
  • Posture pour reconnaître des positions, des gestes de la tête, des mains, du corps…

Une fois le type de projet sélectionné ( dans mon cas Projet Images ), l’interface Web demande le type de modèle à exporter selon la plateforme cible : desktop, site web, application mobile, microcontrôleur.

L’outil exporte des modèles TensorFlow. Un modèle standard aura une taille moyenne de 5 Mo tandis qu’un format optimisé pour les microcontrôleurs tel que Coral, Arduino, Raspberry Pi sera compressé pour atteindre environ 500 Ko. Cette compression est due à une diminution de la précision du modèle à la vue de la puissance du hardware cible.

La préparation du modèle s’effectue sur cette interface. Une classification regroupe des données (photos, images, sons) au sein d’une même classe. Par exemple pour détecter un chien, il suffit de créer une classe “chien” et d’y ajouter différentes photos de chien dans différentes positions, tailles, couleurs…

Maintenant il ne reste plus qu’à trouver un type de modèle à entraîner. Étant fan de manga plusieurs possibilités s’offraient à moi : One Piece, Naruto, Kimetsu No Yaiba, Shingeki no Kyijin, Jujutsu Kaisen… J’ai décidé de prendre un classique de mon enfance Dragon Ball !

De plus, il existe quelques datasets sur Kaggle me permettant de bénéficier d’un ensemble d’images pour commencer mon modèle. Je vous conseille fortement de vous y rendre !

Pour cet article, le modèle va reconnaître uniquement 4 personnages du manga correspondant donc à 4 classes à créer :

  • Goku ( 422 images )
  • Gohan ( 57 images )
  • Vegeta ( 380 images )
  • Krilin ( 77 images )

Les différentes images ont été uploadées depuis mon poste de travail, mais il est possible de les récupérer depuis Google Drive.

Une fois les classes terminées, il suffit d’entraîner le modèle en cliquant sur “Entrainer le modèle intégré” :

Le mode avancé permet de modifier le nombre d’époques, le batch size (taille du lot), et le taux d’apprentissage (attention à la modification de cette valeur qui est très sensible) :

25 secondes plus tard l’entraînement est terminé ! C’est rapide ? Nous allons en discuter un peu plus tard.

L’interface propose de vérifier la qualité du modèle avant l’export. La vérification peut s’effectuer par transfert d’image (locale ou depuis Google Drive) ou en utilisant sa webcam :

L’image est vérifiée pour renvoyer un pourcentage pour chacune des classes créées :

Nous constatons que la classe Goku obtient un résultat de 0.98 (98%) et Krilin 0.02 (2%). Les autres classes obtiennent un score de 0. La somme de l’ensemble est toujours égale à 1. C’est ce qu’on appelle une fonction d’activation de type Softmax. C’est à dire que la fonction va prendre la pré-activation de chaque neurone de sortie (nos 4 classes Goku, Gohan Vegata, Krilin) pour obtenir une somme égale à 1.

Si lors de vos tests vous constatez que le modèle est mauvais, alors il se peut que les problèmes soient les suivants :

  • Vos classes ne contiennent pas assez de médias pour l’apprentissage
  • Les images ne sont pas assez diversifiées
  • Les paramètres avancés ne sont pas corrects

Exporter le modèle

La colonne Aperçu contient un bouton Exporter le modèle qui permet de sélectionner de type d’export selon la plateforme:

Dans cette popup, vous aurez la possibilité de télécharger le modèle accompagné d’un snippet de code pour vous aider. La correspondance des modèles est la suivante :

  • Tensorflow (Desktop)
  • Tensorflow js (Web)
  • Tensorflow Lite / Lite for Microcontrôleur (Mobile / Microcontrôleur Coral, Raspberry Pi, Arduino)

Sécurité des données

Lors de l’entraînement, le modèle a mis moins de 30 secondes pour se construire. C’est parce que la solution fonctionne directement depuis votre poste et pas sur un serveur distant.

C’est-à-dire qu’il est possible d’entrainer un modèle en utilisant des données locales et en n’utilisant aucune connexion internet. C’est d’ailleurs ce que j’ai effectué pour l’écriture de cet article.

Conclusion

Teachable Machine est un très bon moyen de créer des modèles pour vos projets DIY ou prototyper un modèle très rapidement. De plus il est complément gratuit grâce à son exécution locale.

Pour une utilisation plus professionnelle avec des volumes de données plus conséquent, je vous recommanderais d’utiliser d’autres outils No code comme Cloud AutoML Vision. Celui-ci permet de bénéficier d’architecture spécialisée pour l’entrainement de vos modèles et de faire évoluer vos modèles plus facilement dans le temps.

Je conclue cet article avec une démonstration du modèle chargé dans une application Flutter :