KI-Zauberstab mit TensorFlow Lite für Mikrocontroller und Arduino

1. Einführung

Was Sie erstellen

In diesem Codelab lernen Sie, wie Sie mit TensorFlow Lite for Microcontrollers ein Deep-Learning-Modell auf dem Arduino Nano 33 BLE ausführen. Der Mikrocontroller wird vom Nutzer in einen digitalen „Zauberstab“ verwandelt, mit dem er verschiedene Zaubersprüche ausführen kann. Wenn der Nutzer den Zauberstab bewegt, werden diese komplexen, mehrdimensionalen Sensordaten, die für einen Menschen unleserlich wären, als Eingabe an das Modell übergeben. Das Modell gibt eine einfache Klassifizierung aus, die uns darüber informiert, ob eine von mehreren Bewegungen ausgeführt wurde.

9208eb1207211349.gif

Maschinelles Lernen auf Mikrocontrollern

Mit maschinellem Lernen lassen sich intelligente Tools wie Google Assistant erstellen, die das Leben der Nutzer erleichtern. Oft erfordern diese Tools jedoch viel Rechenleistung oder Ressourcen, z. B. einen leistungsstarken Cloud-Server oder einen Desktop-Computer. Mittlerweile ist es jedoch möglich, maschinelles Lernen auf winziger, energieeffizienter Hardware wie Mikrocontrollern auszuführen.

Mikrocontroller sind sehr verbreitet, günstig, benötigen nur sehr wenig Energie und sind sehr zuverlässig. Sie sind in allen Arten von Haushaltsgeräten zu finden, z. B. in Haushaltsgeräten, Autos und Spielzeug. Tatsächlich werden jedes Jahr rund 30 Milliarden Geräte mit Mikrocontrollern hergestellt.

1914a419dfacf0b5.jpeg

Durch die Integration von maschinellem Lernen in winzige Mikrocontroller können wir die Intelligenz von Milliarden von Geräten, die wir im Alltag verwenden, steigern, ohne auf teure Hardware oder zuverlässige Internetverbindungen angewiesen zu sein. Denken Sie an intelligente Haushaltsgeräte, die sich an Ihren Tagesablauf anpassen können, intelligente industrielle Sensoren, die zwischen Problemen und normalem Betrieb unterscheiden können, und magisches Spielzeug, mit dem Kinder auf unterhaltsame Weise lernen können.

TensorFlow Lite for Microcontrollers (Software)

864114d0c2b4c919.png

TensorFlow ist das Open-Source-Framework für maschinelles Lernen von Google zum Trainieren und Ausführen von Modellen. TensorFlow Lite ist ein Software-Framework, eine optimierte Version von TensorFlow, die für die Ausführung von TensorFlow-Modellen auf kleinen, relativ energieeffizienten Geräten wie Mobiltelefonen entwickelt wurde.

TensorFlow Lite for Microcontrollers ist ein Software-Framework, eine optimierte Version von TensorFlow, die für die Ausführung von TensorFlow-Modellen auf winziger, energieeffizienter Hardware wie Mikrocontrollern entwickelt wurde. Es erfüllt die Anforderungen, die in diesen eingebetteten Umgebungen erforderlich sind, d. h. es hat eine kleine Binärgröße, erfordert keine Betriebssystemunterstützung, keine Standard-C- oder C++-Bibliotheken und keine dynamische Speicherzuweisung usw.

Arduino Nano 33 BLE (Hardware)

bcd452d4d660efa9.jpeg

Arduino ist eine beliebte Open-Source-Plattform, die zum Erstellen elektronischer Projekte verwendet wird. Sie besteht aus:

  1. Einer physischen programmierbaren Leiterplatte (oft ein Mikrocontroller) wie dem Arduino Nano 33 BLE, der in diesem Codelab verwendet wird.
  2. Der Arduino IDE (Integrated Development Environment), einer Software, mit der Computercode geschrieben und auf die physische Leiterplatte hochgeladen wird.

Arduino Nano 33 BLE ist eine auf Mikrocontrollern basierende Plattform: ein winziger Computer auf einer einzigen Leiterplatte. Er verfügt über einen Prozessor, Arbeitsspeicher und E/A-Hardware, mit der digitale Signale an andere Geräte gesendet und von diesen empfangen werden können. Im Gegensatz zu einem Computer ist ein Mikrocontroller nicht leistungsstark und führt in der Regel kein Betriebssystem aus. Stattdessen haben sie kleine Prozessoren, wenig Arbeitsspeicher und die von Ihnen geschriebenen Programme werden direkt auf der Hardware ausgeführt. Da sie jedoch so einfach wie möglich konzipiert sind, kann ein Mikrocontroller sehr wenig Energie verbrauchen.

Aufgaben

  • Den Arduino Nano 33 BLE-Mikrocontroller einrichten und in einen digitalen „Zauberstab“ verwandeln
  • Richten Sie die Arduino IDE ein und installieren Sie die erforderlichen Bibliotheken
  • Programm auf dem Gerät bereitstellen
  • Verschiedene Zaubersprüche ausführen, indem Sie mit dem Zauberstab winken, und die Vorhersagen ansehen

Voraussetzungen

2. Arduino-Mikrocontroller einrichten

Arduino auspacken

Nehmen Sie ihn aus der Verpackung und ziehen Sie ihn aus dem Verpackungsschaumstoff. Er ist leitfähig und kann sonst Probleme verursachen.

6ed84a651c871a58.jpeg

An Laptop anschließen

  • Stecken Sie das Micro-USB-Kabel in die Buchse im Chip.
  • Stecken Sie das andere Ende des Kabels in eine USB-Buchse Ihres Laptops.
  • Die LED unten links auf dem Arduino (oben links im Bild unten) sollte aufleuchten.

c6936696f9659104.jpeg

Mit dem Workflow vertraut machen

99852afbed7e78b0.png

Wie im Diagramm oben gezeigt, führt der TFLite-Interpreter auf dem Arduino regelmäßig Inferenz auf dem Modell aus. Das Modell verwendet die verarbeiteten Beschleunigungsmesserdaten als Eingabe und gibt eine Vorhersage aus, die die wahrscheinlichste Geste vorschlägt. Außerdem wird eine gewünschte Ausgabe gedruckt und die richtigen LEDs leuchten auf.

3. Arduino IDE einrichten

1. Arduino IDE herunterladen

Um das Programm auf dem Arduino-Mikrocontroller bereitzustellen, verwenden wir die Arduino IDE.

Nach dem Herunterladen installieren und öffnen Sie die Arduino IDE, indem Sie auf die Anwendung klicken, deren Symbol so aussieht: 75717f13527f36b9.png

Die erste Landingpage wird so geöffnet:

933c91e6e1997c61.png

2. Board Manager einrichten

  1. Wählen Sie im Arduino-Menü Tools -> Board: "Arduino .." —> Boards Manager aus.
  2. Suchen Sie nach "Arduino Nano 33 BLE" und installieren Sie die Arduino nRF528x Boards (Mbed OS). Dadurch wird sichergestellt, dass unser Arduino Nano 33 BLE-Mikrocontroller von der Arduino IDE unterstützt wird. 817c63346152eda9.png
  1. Wählen Sie im Arduino-Menü Tools -> Board: "Arduino .." -> "Arduino Nano 33 BLE" aus.

9357691e1a1348eb.png

  1. Prüfen Sie abschließend, ob unten rechts in der IDE „Arduino Nano 33 BLE“ als ausgewähltes Board angezeigt wird.

aa08706bb84fa9b2.png

3. Port einrichten

Wählen Sie im Arduino-Menü Tools -> Port: "/.../" -> /dev/... (Arduino Nano 33 BLE) aus. Die Ausgabe sollte etwa so aussehen:

8c25990d0c6fb6f8.png

4. Boardverbindung prüfen

Wählen Sie im Arduino-Menü Tools -> Get Board Info aus. Die Ausgabe sollte etwa so aussehen:

ccd8f5305be6cf59.png

4. Bibliotheken installieren

1. TensorFlow Arduino Library

Diese Bibliothek enthält alle TensorFlow Lite for Microcontrollers-Beispiele, einschließlich des Quellcodes für den Zauberstab, der für dieses Codelab erforderlich ist.

  1. Wählen Sie im Arduino-Menü Sketch -> Include Library -> Add .ZIP Library... aus.
  2. Fügen Sie die heruntergeladene TensorFlow Arduino Library .zip hinzu.

2. LSM9DS1 Arduino Library

Mit dieser Bibliothek können Sie die Werte des Beschleunigungsmessers, Magnetometers und Gyroskops von der LSM9DS1 IMU auf Ihrem Arduino Nano 33 BLE Sense lesen.

  1. Wählen Sie im Arduino-Menü Sketch -> Include -> Manage Libraries... aus.
  2. Suchen Sie nach "Arduino_LSM9DS1" und installieren Sie die Bibliothek. ac2f78a737c5f233.png

5. Beispiel laden und erstellen

1. Beispiel laden

Wählen Sie im Arduino-Menü File -> Examples -> Arduino_TensorFlowLite -> magic_wand aus, um den Beispielcode zu laden.

de349f2d3cb49b98.png

Dadurch wird der Quellcode für den Zauberstab geladen.

cda8c35a597b0798.png

2. Beispiel erstellen

Klicken Sie im Sketch-Fenster auf die Schaltfläche Upload.

71cb1474d5e14669.png

Nach einigen Minuten sollte roter Text angezeigt werden, der darauf hinweist, dass das Flashing abgeschlossen ist. Während des Uploads sollte die rechte LED pulsieren und am Ende erlöschen.

3df1d0858c6e40a4.png

6. Demo

Der Zauberstab kann derzeit drei Gesten erkennen, wie unten gezeigt: 99a607da66af9fc8.png

  1. Wing: Beginnen Sie in der oberen linken Ecke und zeichnen Sie zwei Sekunden lang vorsichtig den Buchstaben „W“.
  2. Ring: Beginnen Sie aufrecht und bewegen Sie den Zauberstab eine Sekunde lang im Uhrzeigersinn.
  3. Slope: Halten Sie den Zauberstab zuerst nach oben, wobei die LEDs zu Ihnen zeigen. Bewegen Sie den Zauberstab eine Sekunde lang schräg nach links und dann horizontal nach rechts.

Das folgende Bild zeigt zwei Gesten. Zuerst eine Slope und dann ein Wing (verwenden Sie dies als Referenz für Ihre Demo).

9208eb1207211349.gif

Führen Sie die folgenden Schritte aus, um die Demo auszuführen:

  1. Wenn das USB-Kabel angeschlossen ist, wählen Sie im Arduino-Menü Tools -> Serial Monitor aus. Zuerst wird ein leerer Bildschirm ohne Ausgabe geöffnet.

38e8d53652eb28f2.png

  1. Bewegen Sie den Arduino-Mikrocontroller, um jede der oben genannten Formen vorsichtig nachzuzeichnen und zu prüfen, ob der Serial Monitor die Geste erkennt.

60b8a0017bcae419.png

  1. An der Ausgabe im Serial Monitor sehen wir, dass der Zauberstab tatsächlich alle Formen erkannt hat. Außerdem leuchtet die rechte LED auf.

7. Nächste Schritte

Herzlichen Glückwunsch! Sie haben Ihren ersten gestenerkennenden „Zauberstab“ auf einem Arduino-Mikrocontroller erstellt.

Wir hoffen, dass Ihnen diese kurze Einführung in die Entwicklung mit TensorFlow Lite for Microcontrollers gefallen hat. Die Idee des Deep Learnings auf Mikrocontrollern ist neu und spannend. Wir empfehlen Ihnen, damit zu experimentieren.

Referenzdokumente

647c3ef0dc103804.png

Viel Spaß beim Erstellen!