Baguette magique IA avec TensorFlow Lite pour microcontrôleurs et Arduino

1. Introduction

Objectifs de l'atelier

Dans cet atelier de programmation, nous allons apprendre à exécuter un modèle de deep learning sur Arduino Nano 33 BLE à l'aide de TensorFlow Lite For Microcontrollers. Le microcontrôleur est transformé en "baguette magique" numérique. de lancer différents sortilèges. Lorsque l'utilisateur déplace la baguette, ces données complexes et multidimensionnelles du capteur, qui ne sont pas lisibles pour un être humain, sont transmises en tant qu'entrées au modèle, qui génère une classification simple qui nous avertit si un mouvement s'est produit.

9208eb1207211349.gif

Machine learning sur des microcontrôleurs

Le machine learning peut servir à créer des outils intelligents qui améliorent l'expérience comme l'Assistant Google. Mais souvent, ces expériences nécessitent beaucoup de calculs ou de ressources, comme un serveur cloud puissant ou un ordinateur de bureau. Toutefois, il est désormais possible d'exécuter des inférences de machine learning sur du matériel minuscule et peu puissant, comme des microcontrôleurs.

Les microcontrôleurs sont extrêmement courants, bon marché, nécessitent très peu d'énergie et sont très fiables. Ils font partie de toutes sortes d'appareils ménagers: appareils électroménagers, voitures, jouets, etc. Dans les faits, on produit environ 30 milliards d'appareils équipés de microcontrôleurs chaque année.

1914a419dfacf0b5.jpeg

En appliquant le machine learning à de minuscules microcontrôleurs, nous pouvons renforcer l'intelligence des milliards d'appareils que nous utilisons dans notre vie, sans dépendre de matériel coûteux ni de connexions Internet fiables. Imaginez des appareils électroménagers intelligents capables de s'adapter à votre quotidien, des capteurs industriels intelligents qui comprennent la différence entre les problèmes et un fonctionnement normal, et des jouets magiques qui aident les enfants à apprendre de manière amusante et agréable.

TensorFlow Lite pour microcontrôleurs (logiciel)

864114d0c2b4c919.png

TensorFlow est le framework de machine learning Open Source de Google qui permet d'entraîner et d'exécuter des modèles. TensorFlow Lite est un framework logiciel, une version optimisée de TensorFlow, conçue pour exécuter des modèles TensorFlow sur de petits appareils relativement peu puissants, tels que les téléphones mobiles.

TensorFlow Lite For Microcontrollers est un framework logiciel, une version optimisée de TensorFlow, conçue pour exécuter des modèles TensorFlow sur du matériel minuscule et de faible puissance, tel que des microcontrôleurs. Il respecte les contraintes requises dans ces environnements intégrés : sa taille binaire est petite, il ne nécessite aucune compatibilité avec le système d'exploitation, aucune bibliothèque C ou C++ standard, aucune allocation de mémoire dynamique, etc.

Arduino Nano 33 BLE (matériel)

bcd452d4d660efa9.jpeg

Arduino est une plate-forme Open Source populaire pour créer des projets électroniques. Il se compose des éléments suivants:

  1. Un circuit imprimé physique programmable (souvent un microcontrôleur) comme l'Arduino Nano 33 BLE utilisé dans cet atelier de programmation.
  2. L'IDE (environnement de développement intégré) Arduino, qui permet d'écrire et d'importer du code informatique sur la carte physique.

Arduino Nano 33 BLE est une plate-forme basée sur un microcontrôleur: un petit ordinateur sur un seul circuit imprimé. Il est doté d'un processeur, d'une mémoire et d'un matériel d'E/S qui lui permet d'envoyer et de recevoir des signaux numériques vers d'autres appareils. Contrairement à un ordinateur, un microcontrôleur n'est pas puissant et n'exécute généralement pas un système d'exploitation. Au lieu de cela, ils disposent de petits processeurs, de peu de mémoire et les programmes que vous écrivez s'exécutent directement sur le matériel. Mais comme ils sont conçus pour être aussi simples que possible, un microcontrôleur peut utiliser très peu d'énergie.

Objectifs de l'atelier

  • Configurer le microcontrôleur Arduino Nano 33 BLE et le transformer en "baguette magique" numérique
  • Configurez l'IDE Arduino et installez les bibliothèques requises
  • Déployer le programme sur l'appareil
  • Lancez différents sorts en agitant la baguette magique et affichez les prédictions

Prérequis

  • Ordinateur portable Linux, macOS ou Windows
  • Arduino Nano BLE Sense 33 (sans en-têtes)
  • Câble micro USB (si vous utilisez un ordinateur portable USB-C, munissez-vous d'un câble USB-C vers micro USB)
  • (Facultatif) Spatule d'environ 30 cm de long
  • (Facultatif) Adhésif adhésif

2. Configurer le microcontrôleur Arduino

Déballez votre Arduino

Retirez-la de la boîte et retirez-la de la mousse d'emballage. Il est conducteur, et peut causer des problèmes dans le cas contraire !

6ed84a651c871a58.jpeg

Branchez-le sur votre ordinateur portable

  • Branchez le câble micro USB dans la prise de la puce.
  • Branchez l'autre extrémité du câble sur une prise USB de votre ordinateur portable.
  • La LED en bas à gauche de l'Arduino (en haut à gauche sur l'image ci-dessous) devrait s'allumer.

c6936696f9659104.jpeg

Se familiariser avec le workflow

99852afbed7e78b0.png

Comme le montre le schéma ci-dessus, l'interpréteur TFLite sur l'Arduino exécute régulièrement des inférences sur le modèle. Le modèle utilise les données traitées de l'accéléromètre comme entrée et génère une prédiction suggérant le geste qui s'est probablement produit. De plus, la sortie souhaitée serait imprimée et les voyants de droite s'allumeraient.

3. Configurer l'IDE Arduino

1. Télécharger l'IDE Arduino

Pour déployer le programme sur le microcontrôleur Arduino, nous utilisons l'IDE Arduino.

Après l'avoir téléchargée, installez et ouvrez l'IDE Arduino en cliquant sur l'application dont l'icône ressemble à ceci: 75717f13527f36b9.png

La page de destination initiale s'ouvre comme suit:

933c91e6e1997c61.png

2. Configurez le Board Manager

  1. Dans le menu Arduino, sélectionnez Tools -> Board: "Arduino .." —> Boards Manager.
  2. Recherchez "Arduino Nano 33 BLE" et installez Arduino nRF528x Boards (Mbed OS). Le microcontrôleur BLE Arduino Nano 33 sera ainsi compatible avec l'IDE Arduino. 817c63346152eda9.png
  1. Dans le menu Arduino, sélectionnez Tools -> Board: "Arduino .." -> "Arduino Nano 33 BLE".

9357691e1a1348eb.png

  1. Enfin, vérifiez que la carte sélectionnée est bien "Arduino Nano 33 BLE" en bas à droite de l'IDE.

aa08706bb84fa9b2.png

3. Configurez le port

Dans le menu Arduino, sélectionnez Tools -> Port: "/.../" -> /dev/... (Arduino Nano 33 BLE). Le résultat doit ressembler à ceci :

8c25990d0c6fb6f8.png

4. Vérifiez la connexion de la carte

Dans le menu Arduino, sélectionnez Tools -> Get Board Info. Le résultat doit ressembler à ceci :

ccd8f5305be6cf59.png

4. Installer des bibliothèques

1. bibliothèque TensorFlow Arduino

Cette bibliothèque contient tous les exemples de TensorFlow Lite for Microcontroller, y compris le code source de la baguette magique requis pour cet atelier de programmation.

  1. Dans le menu Arduino, sélectionnez Sketch -> Include Library -> Add .ZIP Library....
  2. Ajoutez la bibliothèque TensorFlow Arduino .zip que vous avez téléchargée.

2. Bibliothèque LSM9DS1 Arduino

Cette bibliothèque vous permet de lire les valeurs de l'accéléromètre, du magnétomètre et du gyroscope de l'IMU LSM9DS1 sur votre Arduino Nano 33 BLE Sense.

  1. Dans le menu Arduino, sélectionnez Sketch -> Include -> Manage Libraries....
  2. Recherchez et installez "Arduino_LSM9DS1". ac2f78a737c5f233.png

5. Charger et compiler l'exemple

1. Charger l'exemple

Dans le menu Arduino, sélectionnez File -> Examples -> Arduino_TensorFlowLite -> magic_wand pour charger l'exemple de code.

de349f2d3cb49b98.png

Le code source de la baguette magique est chargé.

cda8c35a597b0798.png

2. Créer l'exemple

Cliquez sur le bouton Upload dans la fenêtre de dessin.

71cb1474d5e14669.png

Après quelques minutes, vous devriez voir un texte rouge indiquant que le clignotement est terminé. Le voyant de droite doit clignoter, puis s'éteindre une fois l'importation terminée.

3df1d0858c6e40a4.png

6. Démo

La baguette magique peut actuellement détecter trois gestes, comme illustré ci-dessous: 99a607da66af9fc8.png

  1. Wing: commencez par l'angle supérieur gauche et tracez soigneusement la lettre "W" pendant deux secondes.
  2. Bague: partez à la verticale et tournez la baguette dans le sens des aiguilles d'une montre pendant une seconde.
  3. Inclinaison: commencez par tenir la baguette vers le haut, les voyants vers vous. Déplacez la baguette vers le bas selon une pente vers la gauche, puis horizontalement vers la droite pendant une seconde.

L'image suivante illustre deux gestes. d'abord une pente, puis une aile (utilisez-la comme référence pour votre démonstration).

9208eb1207211349.gif

Pour exécuter la démonstration, suivez les instructions ci-dessous:

  1. Branchez le câble USB, puis sélectionnez Tools -> Serial Monitor dans le menu Arduino. Elle ouvre initialement un écran vide sans sortie.

38e8d53652eb28f2.png

  1. Déplacez le microcontrôleur Arduino pour tracer soigneusement chacune des formes ci-dessus et vérifier si le moniteur série détecte le geste.

60b8a0017bcae419.png

  1. D'après la sortie de l'écran série, la baguette magique a effectivement détecté toutes les formes. Vous remarquerez également que le voyant de droite s'allume.

7. Étapes suivantes

Félicitations, vous venez de créer votre premier geste de reconnaissance de "baguette magique" sur un microcontrôleur Arduino !

Nous espérons que cette brève introduction au développement avec TensorFlow Lite for Microcontrollers vous a plu. L'idée du deep learning sur les microcontrôleurs est nouvelle et passionnante, et nous vous encourageons à l'expérimenter.

Documents de référence

647c3ef0dc103804.png

Merci et amusez-vous bien !