TensorFlow Lite für Mikrocontroller wurde entwickelt, um Modelle für maschinelles Lernen auf Mikrocontrollern und anderen Geräten mit nur wenigen Kilobyte Arbeitsspeicher auszuführen. Die Kernlaufzeit passt auf eine Arm Cortex M3 mit 16 KB und kann viele Basismodelle ausführen. Er erfordert keine Betriebssystemunterstützung, standardmäßige C- oder C++-Bibliotheken oder dynamische Arbeitsspeicherzuweisung.
Warum Mikrocontroller wichtig sind
Mikrocontroller sind in der Regel kleine Rechengeräte mit geringer Leistung, die in Hardware eingebettet sind, die einfache Rechenleistung erfordert. Indem wir maschinelles Lernen auf winzigen Mikrocontrollern zur Verfügung stellen, können wir die Intelligenz von Milliarden von Geräten verbessern, die wir in unserem Leben nutzen, einschließlich Haushaltsgeräten und Geräten für das Internet der Dinge, ohne auf teure Hardware oder zuverlässige Internetverbindungen angewiesen zu sein, die oft Bandbreiten- und Energiebeschränkungen ausgesetzt sind und zu einer hohen Latenz führen. Dies kann auch zur Wahrung der Privatsphäre beitragen, da keine Daten das Gerät verlassen. Stellen Sie sich intelligente Geräte vor, die sich an Ihren Tagesablauf anpassen, intelligente industrielle Sensoren, die den Unterschied zwischen Problemen und normalem Betrieb erkennen, und magisches Spielzeug, mit dem Kinder auf unterhaltsame und angenehme Weise lernen können.
Unterstützte Plattformen
TensorFlow Lite for Microcontrollers ist in C++ 17 geschrieben und erfordert eine 32-Bit-Plattform. Er wurde ausgiebig mit vielen Prozessoren getestet, die auf der Architektur der Arm Cortex-M-Serie basieren, und in andere Architekturen wie ESP32 übertragen. Das Framework ist als Arduino-Bibliothek erhältlich. Es kann auch Projekte für Entwicklungsumgebungen wie Mbed erstellen. Es ist Open Source und kann in jedes C++ 17-Projekt aufgenommen werden.
Die folgenden Entwicklungs-Boards werden unterstützt:
- Arduino Nano 33 BLE Sense
- SparkFun Edge
- STM32F746 Discovery-Kit
- Adafruit Edge-Abzeichen
- Adafruit TensorFlow Lite for Microcontrollers Kit
- Adafruit Circuit Playground Bluefruit
- Espressif ESP32-DevKitC
- Espressif-ESP-EYE
- Wio-Terminal: ATSAMD51
- Himax WE-I Plus EVB Endpoint AI Development Board
- Softwareentwicklungsplattform ARC EM von Synopsys DesignWare
- Sony Spresense
Beispiele ansehen
Jede Beispielanwendung befindet sich auf GitHub und hat eine README.md
-Datei, in der erläutert wird, wie sie auf den unterstützten Plattformen bereitgestellt werden kann. Einige Beispiele enthalten auch End-to-End-Anleitungen, die eine bestimmte Plattform verwenden, wie unten dargestellt:
- Hello World – zeigt die absoluten Grundlagen der Verwendung von TensorFlow Lite für Mikrocontroller
- Mikrosprache: Nimmt Audio über ein Mikrofon auf, um die Wörter „Ja“ und „Nein“ zu erkennen.
- Personenentdeckung: Erfasst Kameradaten mit einem Bildsensor, um die Anwesenheit oder Abwesenheit einer Person zu erkennen.
Workflow
Die folgenden Schritte sind erforderlich, um ein TensorFlow-Modell auf einem Mikrocontroller bereitzustellen und auszuführen:
- Modell trainieren:
- Generieren Sie ein kleines TensorFlow-Modell, das für Ihr Zielgerät geeignet ist und unterstützte Vorgänge enthält.
- Konvertieren Sie das Modell in ein TensorFlow Lite-Modell mit dem TensorFlow Lite-Converter.
- Konvertieren Sie die Daten in ein C-Byte-Array mithilfe von Standardtools, um sie in einem schreibgeschützten Programmspeicher auf dem Gerät zu speichern.
- Führen Sie Inferenzen auf dem Gerät mithilfe der C++-Bibliothek aus und verarbeiten Sie die Ergebnisse.
Beschränkungen
TensorFlow Lite für Mikrocontroller wurde für die spezifischen Einschränkungen der Mikrocontrollerentwicklung entwickelt. Wenn Sie an leistungsstärkeren Geräten arbeiten (z. B. einem eingebetteten Linux-Gerät wie Raspberry Pi), ist das standardmäßige TensorFlow Lite-Framework möglicherweise einfacher zu integrieren.
Dabei gelten die folgenden Einschränkungen:
- Unterstützung für eine begrenzte Teilmenge von TensorFlow-Vorgängen
- Unterstützung für eine begrenzte Anzahl von Geräten
- Low-Level C++ API, für die eine manuelle Speicherverwaltung erforderlich ist
- On-Device-Training wird nicht unterstützt
Nächste Schritte
- Erste Schritte mit Mikrocontrollern, um die Beispielanwendung auszuprobieren und zu lernen, wie die API verwendet wird
- Mache dich mit der C++-Bibliothek vertraut und erfahre, wie du sie in deinem eigenen Projekt verwenden kannst.
- Modelle erstellen und umwandeln zum Trainieren und Konvertieren von Modellen für die Bereitstellung auf Mikrocontrollern