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.
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.
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)
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)
Arduino ist eine beliebte Open-Source-Plattform für die Entwicklung elektronischer Projekte. Sie besteht aus:
- Eine physische programmierbare Leiterplatte (oft ein Mikrocontroller) wie das in diesem Codelab verwendete Arduino Nano 33 BLE.
- 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
- Linux-, MacOS- oder Windows-Laptop
- Arduino Nano BLE Sense 33 (ohne Header)
- Micro-USB-Kabel (wenn Sie einen USB-C-Laptop verwenden, nutzen Sie stattdessen ein USB-C-auf-Micro-USB-Kabel)
- Optional: Stäbchen, ca. 30 cm lang
- Klebeband (optional)
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!
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.
Mit dem Workflow vertraut machen
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:
Die ursprüngliche Landingpage wird dann wie folgt geöffnet:
2. Board Manager einrichten
- Wähle im Arduino-Menü
Tools -> Board: "Arduino .." —> Boards Manager
aus. - Suchen Sie nach
"Arduino Nano 33 BLE"
und installieren SieArduino nRF528x Boards (Mbed OS)
. Dadurch wird sichergestellt, dass der Arduino Nano 33 BLE-Mikrocontroller von der Arduino-IDE unterstützt wird.
- Wähle im Arduino-Menü
Tools -> Board: "Arduino .." -> "Arduino Nano 33 BLE"
aus.
- Prüfen Sie abschließend, ob das ausgewählte Board „Arduino Nano 33 BLE“ ist. unten rechts in der IDE.
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:
4. Platinenverbindung prüfen
Wählen Sie im Arduino-Menü die Option Tools -> Get Board Info
aus. Die Ausgabe sollte etwa so aussehen:
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.
- Wähle im Arduino-Menü
Sketch -> Include Library -> Add .ZIP Library...
aus. - 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.
- Wähle im Arduino-Menü
Sketch -> Include -> Manage Libraries...
aus. "Arduino_LSM9DS1"
suchen und installieren.
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.
Dadurch wird der Quellcode des Zauberstabs geladen.
2. Beispiel erstellen
Klicken Sie im Skizzenfenster auf die Schaltfläche Upload
.
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.
6. Demo
Der Zauberstab kann derzeit drei Gesten erkennen:
- Flügel: Beginne an der oberen linken Ecke und zeichne sorgfältig den Buchstaben „W“ nach. zwei Sekunden lang.
- Klingeln lassen: Beginnen Sie aufrecht und bewegen Sie den Stab eine Sekunde lang im Uhrzeigersinn.
- 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).
Gehen Sie wie folgt vor, um die Demo auszuführen:
- 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.
- Bewegen Sie den Arduino-Mikrocontroller, um jede der obigen Formen sorgfältig nachzuzeichnen, und prüfen Sie, ob der serielle Monitor die Geste erkennt.
- 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
- Trainieren Sie Ihr eigenes Modell, da Sie nun Erfahrung mit dem Basisprogramm haben.
- Weitere Informationen zu TensorFlow Lite für Mikrocontroller ( Website, GitHub)
- Probieren Sie andere Beispiele aus und führen Sie sie auf Arduino aus, falls dies unterstützt wird.
- Probieren Sie das andere Codelab aus: KI auf einem Mikrocontroller mit TensorFlow Lite und SparkFun Edge.
- Lesen Sie dazu das Buch TinyML: Machine Learning with TensorFlow on Arduino and Ultra-Low Power Micro-Controllers von O'Reilly, in dem maschinelles Lernen auf winzigen Geräten vorgestellt wird und verschiedene unterhaltsame Projekte erläutert werden. Dieses Codelab basiert auf Kapitel 11 dieses Buchs.
Vielen Dank und viel Spaß beim Entwickeln!