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

1. Einführung

Inhalt

In diesem Codelab lernen Sie, wie Sie mit TensorFlow Lite für Mikrocontroller ein Deep-Learning-Modell auf Arduino Nano 33 BLE ausführen. Der Mikrocontroller wird in einen digitalen Zauberstab verwandelt. der Nutzer winkt und verschiedene Zaubersprüche ausgibt. Wenn der Nutzer den Stab bewegt, werden diese komplexen, mehrdimensionalen Sensordaten, die für einen Menschen unlesbar wären, als Eingabe an das Modell übergeben. Das Modell gibt eine einfache Klassifizierung aus, die uns benachrichtigt, wenn eine von mehreren Bewegungen stattgefunden hat.

9208eb1207211349.gif

Maschinelles Lernen auf Mikrocontrollern

Mit Machine Learning können Sie intelligente Tools entwickeln, den Alltag zu erleichtern, wie Google Assistant. Oft erfordern diese Anwendungen jedoch einen hohen Rechen- oder Ressourcenaufwand, beispielsweise mit einem leistungsstarken Cloud-Server oder einem Desktop-Computer. Es ist jedoch jetzt möglich, Inferenzen für maschinelles Lernen auf winziger, schwächerer Hardware wie Mikrocontrollern auszuführen.

Mikrocontroller sind äußerst gängig, kostengünstig, benötigen sehr wenig Energie und sind sehr zuverlässig. Sie gehören zu den verschiedensten Haushaltsgeräten: beispielsweise Haushaltsgeräte, Autos und Spielzeug. Jedes Jahr werden rund 30 Milliarden mikrocontrollerbasierte Geräte hergestellt.

1914a419dfacf0b5.jpeg

Durch die Einführung von maschinellem Lernen in winzigen Mikrocontrollern können wir die Intelligenz von Milliarden von Geräten verbessern, die wir täglich nutzen, ohne auf teure Hardware oder zuverlässige Internetverbindungen angewiesen zu sein. Stellen Sie sich intelligente Geräte vor, die sich Ihrem Tagesablauf anpassen, intelligente Industriesensoren, die den Unterschied zwischen Problemen und dem normalen Betrieb erkennen, und magisches Spielzeug, das Kindern auf unterhaltsame und unterhaltsame Weise beim Lernen helfen kann.

TensorFlow Lite für Mikrocontroller (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 darauf abzielt, Tensorflow-Modelle auf kleinen Geräten mit relativ geringer Leistung wie Smartphones auszuführen.

TensorFlow Lite For Microcontrollers ist ein Software-Framework, eine optimierte Version von TensorFlow, mit der Tensorflow-Modelle auf winziger, schwächerer Hardware wie Mikrocontrollern ausgeführt werden können. Es hält die in diesen eingebetteten Umgebungen erforderlichen Beschränkungen ein, d. h., es hat eine geringe Binärgröße, benötigt keine Betriebssystemunterstützung, Standard-C- oder C++-Bibliotheken, dynamische Speicherzuweisung usw.

Arduino Nano 33 BLE (Hardware)

bcd452d4d660efa9.jpeg

Arduino ist eine beliebte Open-Source-Plattform für die Entwicklung elektronischer Projekte. Sie besteht aus:

  1. Eine physische programmierbare Leiterplatte (oft ein Mikrocontroller) wie das in diesem Codelab verwendete Arduino Nano 33 BLE.
  2. Die Arduino-IDE (Integrated Development Environment), Software zum Schreiben und Hochladen von Computercode auf die physische Leiterplatte.

Arduino Nano 33 BLE ist eine auf Mikrocontrollern basierende Plattform: ein winziger Computer auf einer einzigen Leiterplatte. Er hat einen Prozessor, Arbeitsspeicher und eine E/A-Hardware, mit der er digitale Signale an andere Geräte senden und von diesen empfangen kann. Im Gegensatz zu einem Computer ist ein Mikrocontroller nicht leistungsstark und führt normalerweise kein Betriebssystem aus. Stattdessen haben sie kleine Prozessoren, wenig Arbeitsspeicher und die Programme, die Sie schreiben, werden direkt auf der Hardware ausgeführt. Da sie jedoch so einfach wie möglich konzipiert sind, verbraucht ein Mikrocontroller nur wenig Energie.

Aufgabe

  • Richten Sie den Arduino Nano 33 BLE-Mikrocontroller ein und verwandeln Sie ihn in einen digitalen Zauberstab.
  • Richten Sie die Arduino-IDE ein und installieren Sie die erforderlichen Bibliotheken.
  • Programm auf dem Gerät bereitstellen
  • Wirf eine Vielzahl von Zaubersprüchen, indem du mit dem Zauberstab schwingst, und sieh dir die Vorhersagen an

Voraussetzungen

2. Arduino-Mikrocontroller einrichten

Entpacke dein Arduino

Nehmen Sie ihn aus der Verpackung und ziehen Sie ihn aus dem Packungsschaum. Es ist leitfähig und kann sonst Probleme verursachen!

6ed84a651c871a58.jpeg

Schließe ihn an deinen Laptop an

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

c6936696f9659104.jpeg

Mit dem Workflow vertraut machen

99852afbed7e78b0.png

Wie im obigen Diagramm dargestellt, führt der TFLite-Interpreter auf Arduino regelmäßig Inferenzen für das Modell aus. Das Modell verwendet die verarbeiteten Daten des Beschleunigungsmessers 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.

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

Die ursprüngliche Landingpage wird dann wie folgt geöffnet:

933c91e6e1997c61.png

2. Board Manager einrichten

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

9357691e1a1348eb.png

  1. Prüfen Sie abschließend, ob das ausgewählte Board „Arduino Nano 33 BLE“ ist. unten rechts in der IDE.

aa08706bb84fa9b2.png

3. Port einrichten

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

8c25990d0c6fb6f8.png

4. Platinenverbindung prüfen

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

ccd8f5305be6cf59.png

4. Bibliotheken installieren

1. TensorFlow Arduino-Bibliothek

Diese Bibliothek enthält alle Beispiele von TensorFlow Lite für Mikrocontroller, einschließlich des für dieses Codelab erforderlichen Quellcodes des Zauberstabs.

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

2. LSM9DS1 – Arduino-Bibliothek

Mit dieser Bibliothek können Sie die Werte von Beschleunigungsmesser, Magnetometer und Gyroskop der IMU LSM9DS1 auf Ihrer Arduino Nano 33 BLE Sense abrufen.

  1. Wähle im Arduino-Menü Sketch -> Include -> Manage Libraries... aus.
  2. "Arduino_LSM9DS1" suchen und installieren. 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 des Zauberstabs geladen.

cda8c35a597b0798.png

2. Beispiel erstellen

Klicken Sie im Skizzenfenster auf die Schaltfläche Upload.

71cb1474d5e14669.png

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

3df1d0858c6e40a4.png

6. Demo

Der Zauberstab kann derzeit drei Gesten erkennen: 99a607da66af9fc8.png

  1. Flügel: Beginne an der oberen linken Ecke und zeichne sorgfältig den Buchstaben „W“ nach. zwei Sekunden lang.
  2. Klingeln lassen: Beginnen Sie aufrecht und bewegen Sie den Stab eine Sekunde lang im Uhrzeigersinn.
  3. Steigung: Halten Sie den Zauberstab zuerst nach oben, wobei die LEDs zu Ihnen zeigen. Bewege den Stab an einer Steigung nach links und dann eine Sekunde lang horizontal nach rechts.

In der folgenden Abbildung sind zwei Gesten dargestellt. Zuerst eine Steigung und dann ein Flügel (nutze dies als Referenz für deine Demo).

9208eb1207211349.gif

Gehen Sie wie folgt vor, um die Demo auszuführen:

  1. Schließen Sie das USB-Gerät an und wählen Sie im Arduino-Menü die Option „Tools -> Serial Monitor“ aus. Anfänglich wird ein leerer Bildschirm ohne Ausgabe geöffnet.

38e8d53652eb28f2.png

  1. Bewegen Sie den Arduino-Mikrocontroller, um jede der obigen Formen sorgfältig nachzuzeichnen, und prüfen Sie, ob der serielle Monitor die Geste erkennt.

60b8a0017bcae419.png

  1. Der Ausgabe des seriellen Monitors lässt sich entnehmen, dass der Zauberstab tatsächlich alle Formen erkannt hat. Außerdem leuchtet die rechte LED auf.

7. Nächste Schritte

Herzlichen Glückwunsch, du hast deinen ersten „Zauberstab“ zur Gestenerkennung erstellt mit einem Arduino-Mikrocontroller.

Wir hoffen, dass Ihnen diese kurze Einführung in die Entwicklung mit TensorFlow Lite für Mikrocontroller gefallen hat. Die Idee von Deep Learning auf Mikrocontrollern ist neu und spannend und wir ermutigen Sie, zu experimentieren.

Referenzdokumente

647c3ef0dc103804.png

Vielen Dank und viel Spaß beim Entwickeln!