TensorFlow Lite für Mikrocontroller wurde entwickelt, um Machine-Learning-Modelle auf Mikrocontrollern und anderen Geräten mit nur wenigen Kilobyte Arbeitsspeicher auszuführen. Die Kernlaufzeit passt gerade mal in 16 KB auf einen Arm Cortex M3 und kann viele Basismodelle ausführen. Es erfordert keine Betriebssystemunterstützung, keine Standard-C- oder C++-Bibliotheken oder dynamische Speicherzuweisung.
Warum Mikrocontroller wichtig sind
Mikrocontroller sind in der Regel kleine Rechengeräte mit geringer Leistung, die in Hardware eingebettet sind, die eine grundlegende Berechnung erfordert. Indem wir maschinelles Lernen auf winzige Mikrocontroller übertragen, können wir die Intelligenz von Milliarden von Geräten steigern, die wir in unserem Leben verwenden, 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 Bandbreite und Leistungseinschränkungen und führt zu einer hohen Latenz. Dies kann auch dazu beitragen, die Privatsphäre zu schützen, da keine Daten das Gerät verlassen. Stellen Sie sich intelligente Geräte vor, die sich an Ihre tägliche Routine anpassen können, intelligente Industriesensoren, die den Unterschied zwischen Problemen und normalem Betrieb erkennen, und magische Spielzeuge, die Kindern beim Lernen auf unterhaltsame und unterhaltsame Weise helfen können.
Unterstützte Plattformen
TensorFlow Lite für Mikrocontroller ist in C++ 11 geschrieben und erfordert eine 32-Bit-Plattform. Es wurde auf der Grundlage der sich intensiv mit vielen Prozessoren getestet Arm Cortex-M - Serie - Architektur und hat sich auf andere Architekturen einschließlich portiert ESP32 . Das Framework ist als Arduino-Bibliothek verfügbar. Es kann auch Projekte für Entwicklungsumgebungen wie Mbed generieren. Es ist Open Source und kann in jedes C++ 11-Projekt eingebunden werden.
Die folgenden Entwicklungsboards werden unterstützt:
- Arduino Nano 33 BLE Sense
- SparkFun Edge
- STM32F746 Discovery-Kit
- Adafruit EdgeBadge
- Adafruit TensorFlow Lite für Mikrocontroller-Kit
- Adafruit Circuit Spielplatz Bluefruit
- Espressif ESP32-DevKitC
- Espressif ESP-EYE
- Wio-Terminal: ATSAMD51
- Himax WE-I Plus EVB Endpunkt-KI-Entwicklungsboard
- Synopsys DesignWare ARC EM-Softwareentwicklungsplattform
- Sony Spresse
Entdecken Sie die Beispiele
Jede Beispiel - Anwendung ist auf Github und hat eine README.md
Datei , die erklärt , wie es zu seinen unterstützten Plattformen eingesetzt werden. Einige Beispiele enthalten auch End-to-End-Tutorials, die eine bestimmte Plattform verwenden, wie unten angegeben:
- Hallo Welt - Demonstriert die absoluten Grundlagen der Verwendung TensorFlow Lite für Mikrocontroller
- Micro Rede - Captures Audio mit einem Mikrofon die Worte „ja“ und „nein“ erkennen
- Zauberstab - Captures Beschleunigungssensordaten drei verschiedene Gesten zu klassifizieren
- Personenerkennung - Captures Kameradaten mit einem Bildsensor das Vorhandensein oder die Abwesenheit einer Person zu erfassen ,
Arbeitsablauf
Die folgenden Schritte sind erforderlich, um ein TensorFlow-Modell auf einem Mikrocontroller bereitzustellen und auszuführen:
- Trainieren Sie ein Modell:
- Generieren Sie ein kleines TensorFlow Modell , das Zielgerät passen und enthält unterstützte Operationen .
- Konvertieren in ein TensorFlow Lite Modell der Verwendung von TensorFlow Lite - Wandler .
- Umwandeln in einem Byte - Array C unter Verwendung von Standardwerkzeugen , es zu speichern , in einem Nur - Lese-Programmspeicher auf dem Gerät.
- Führen Sie Inferenz auf dem Gerät mit der C ++ Bibliothek und die Ergebnisse verarbeiten.
Einschränkungen
TensorFlow Lite für Mikrocontroller wurde für die spezifischen Einschränkungen der Mikrocontroller-Entwicklung entwickelt. Wenn Sie an leistungsstärkeren Geräten arbeiten (z. B. einem Embedded-Linux-Gerät wie dem Raspberry Pi), ist das standardmäßige TensorFlow Lite-Framework möglicherweise einfacher zu integrieren.
Die folgenden Einschränkungen sollten berücksichtigt werden:
- Unterstützung für eine begrenzte Teilmenge von TensorFlow Operationen
- Unterstützung für eine begrenzte Anzahl von Geräten
- Low-Level-C++-API, die eine manuelle Speicherverwaltung erfordert
- Das Training auf dem Gerät wird nicht unterstützt
Nächste Schritte
- Lassen Sie sich mit Mikrocontrollern beginnen die Beispielanwendung , um zu versuchen und zu lernen , wie man die API verwenden.
- Verstehen Sie die C ++ Bibliothek zu lernen , wie die Bibliothek in Ihrem eigenen Projekt zu verwenden.
- Build and convert Modelle mehr über die Ausbildung und Konvertieren von Modellen für den Einsatz auf Mikrocontrollern zu lernen.