Benjamin Cabé, Principal Program Manager pour Microsoft Azure IoT, a développé un projet de nez artificiel connecté open source et open hardware qui utilise le concept TinyML (ou apprentissage automatique sur ressources contraintes). Il décrit pour L’Embarqué son retour d’expérience sur cette technologie récente d’intelligence artificielle embarquée qui suscite beaucoup d’intérêt. ...
Vous avez récemment mis en ligne sur GitHub un projet de nez artificiel entièrement open source et open hardware qui utilise le concept dit TinyML pour réaliser de la détection d’odeurs. Un projet qui a suscité un très grand intérêt non seulement de la part de la communauté open source mais aussi d’industriels. Quelle est la genèse de ce projet ?
BENJAMIN CABÉ Ce projet est parti il y a environ un an d’une initiative personnelle, démarrée suite à la réception d’un Wio Terminal envoyé par Seeed Studio, une société spécialisée dans l’open hardware qui me demandait de le tester. (Le Wio Terminal est un petit dispositif embarqué propulsé par un simple microcontrôleur Arm Cortex-M4, en l’occurrence l’ATSAMD51 de Microchip.) Au même moment, je m’intéressais à la technologie du machine learning (ML), mais sans vraiment savoir comment me lancer concrètement sur ce sujet.
Or, en utilisant une approche TinyML et donc des équipements et des capteurs tout ce qu'il y a de plus concrets, je me suis rendu compte qu’en quelques heures seulement, il m'était facile de comprendre comment cela fonctionnait. Ainsi, en associant le Wio Terminal à un capteur de gaz classique, il m'a été possible, notamment en utilisant les outils TinyML de la société Edge Impulse, de rendre l’objet plus intelligent en lui donnant la capacité de reconnaître des odeurs. Et ce sans véritablement d’impact sur la consommation et en se satisfaisant d’un simple microcontrôleur.
Dans ce cadre, on se rend compte que l’on est confronté aux mêmes problématiques que celles de l’Internet des objets. J’ai d’ailleurs récemment ajouté au projet l’aspect IoT en permettant de connecter le nez via la technologie Wi-Fi à la plate-forme Azure IoT. On a donc une bonne base de départ pour créer des cas d’usage intéressants et montrer à des développeurs ce qu’il est possible de faire en ajoutant de la communication avec Azure IoT. Une fois le nez artificiel connecté, on peut par exemple disposer d’un jumeau numérique du capteur, de la pièce où il est déployé, du bâtiment. Il est alors possible de relier les informations récupérées dans un graphe complet de l’entreprise concernée.
Comment vous êtes-vous rendu compte de la popularité de ce projet ?
BENJAMIN CABÉ Avant de mettre
le projet sur GitHub, j’en avais fait la préannonce sur le réseau social LinkedIn et, en l’espace de quelques jours, l’annonce a cumulé des centaines de milliers de vues. Les applications du principe d’un tel nez artificiel sont nombreuses, de l’assistance aux personnes souffrant d’anosmie (notamment à cause du Covid-19), au
building management (quand il faut « repérer » que les toilettes doivent être nettoyées…) en passant par l’industrie alimentaire.
L’une des raisons de la popularité du projet est probablement liée au fait que le scénario mis en avant est applicable à un grand nombre de domaines. Par ailleurs, son caractère DIY (Do-It-Yourself) et le fait que le projet utilise des capteurs tout à fait grand public rendent - à mon sens - l’aspect intelligence artificielle particulièrement tangible. Au-delà de l'aspect étonnant et impressionnant d'arriver à reconnaître des odeurs (café, confiture de fraise, whisky dans le projet tel que publié sur GitHub), ce projet n'en reste pas moins de la « low tech ».
Le capteur de gaz sélectionné est tout à fait basique et bon marché, mais il est parfaitement envisageable de le remplacer par un modèle plus performant tout en retenant la même architecture, rendant ainsi possible une reconnaissance d’odeurs beaucoup plus sophistiquée (pour mesurer la qualité et la richesse organoleptique de différents cafés par exemple). Le projet illustre aussi le fait que l’écosystème des technologies ML pour équipements embarqués a énormément mûri au cours des derniers douze à dix-huit mois.
Pouvez-vous décrire les outils TinyML que vous avez utilisés dans le cadre de ce projet de nez artificiel ?
BENJAMIN CABE La première étape de tout projet impliquant de l’apprentissage automatique consiste en la collecte d’échantillons de données représentatifs. En utilisant les outils de la société Edge Impulse, j’ai pu connecter mon équipement embarqué à leur infrastructure dans le cloud afin de procéder à l’étiquetage des échantillons en question, en l'occurrence pour chaque odeur, une capture de quelques secondes des mesures rapportées par le capteur de gaz. On est ensuite guidé par les mêmes outils afin de créer en quelques minutes un modèle qui donne des résultats satisfaisants, et pour lequel on peut générer dans la foulée le code embarqué optimisé compatible Arduino correspondant.
Dans le cas précis du nez artificiel, le modèle tient dans 2 Ko de flash auxquels il faut ajouter 20 Ko pour le framework TensorFlow Lite et 2 Ko de mémoire RAM. Bien que cela puisse paraître anecdotique, il est bon de noter que dans un contexte TinyML, il est intéressant voire indispensable de mettre en place une détection (même basique) d’anomalies, afin d’identifier des prédictions potentiellement erronées du modèle dans le cas où les caractéristiques des données présentées en entrée seraient trop différentes de celles des données utilisées lors de la phase d’apprentissage.
En tout état de cause, en cours de développement et en cherchant à simplifier le modèle, il se peut aussi que l’on se rende compte que l’on n’a besoin ni de TinyML ni d’un réseau de neurones, l’apprentissage automatique ayant, dans ce contexte-là, tout de même permis de donner un « coup de pouce » pour l’identification des caractéristiques clés de la chose mesurée.
Propos recueillis par Pierrick Arlot