TensorFlow Lite für Mikrocontroller

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:

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:

Workflow

Die folgenden Schritte sind erforderlich, um ein TensorFlow-Modell auf einem Mikrocontroller bereitzustellen und auszuführen:

  1. 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.
  2. 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