TFL2uC - TensorFlow Lite to Microcontroller

„TensorFlow Lite to microcontroller“ (TFL2uC) ist ein Tool, welches ermöglicht, TensorFlow Modelle auf Mikrocontrollern auszuführen. Die Portierungsschritte, um ein TensorFlow Modell auf einem Mikrocontroller laufen zu lassen, werden traditionell manuell durchgeführt. TFL2uC führt diese Schritte automatisiert durch, sodass das Modell in ein C++ Projekt integriert werden kann. Zudem ist es möglich, die Optimierungsalgorithmen Pruning und Quantisierung auf das Modell anzuwenden, um den benötigten Speicherplatz des Modells zu verringern.

Abbildung 1: TFL2uC Workflow

Durch das Tool TFL2uC wird das Einbinden von maschinellem Lernen (ML), in Form von neuronalen Netzen, auf Mikrocontrollern vereinfacht. Die Ausführung von TensorFlow Modellen auf Mikrocontrollern wird mit geringem Programmieraufwand und ohne großes Vorwissen im Framework, für maschinelles Lernen, TensorFlow ermöglicht.

Die Ausführung von neuronalen Netzen, die mit TensorFlow erstellt wurden, ist nicht ohne weiteres für Mikrocontroller gegeben. Dadurch lassen sich neuronale Netze nicht direkt auf diesen ausführen. Es muss das TensorFlow Modell konvertiert werden, damit dieses vom Mikrocontroller ausgeführt werden kann. Außerdem müssen die notwendigen Dateien bereitgestellt werden, um das Modell zu laden und ausführen zu können. Diese Schritte wurden in dem Tool automatisiert.

Für eine einfachere Bedienung des Tools, beinhaltet dieses eine grafische Benutzeroberfläche. In dieser können die benötigten Daten über Schaltflächen und Eingabefelder übergeben werden.

Die Speicherkapazität von Mikrocontrollern liegt lediglich im Kilobyte bis Megabyte-Bereich, wodurch keine großen neuronalen Netze auf Mikrocontrollern implementiert werden können. Aufgrund dessen muss bei der Implementierung von neuronalen Netzen, darauf geachtet werden, diese so klein wie möglich zu halten. Um den Speicherbedarf eines Modells zu verringern, können im Tool die Optimierungsalgorithmen Pruning und Quantisierung angewendet werden. Beim Pruning werden einzelne Neuronen oder Filter aus neuronalen Netzen gelöscht und dadurch verkleinert. Bei der Quantisierung werden die Netzparameter eines neuronalen Netzes von 32-Bit Floatwerten auf 8-Bit Integerwerte konvertiert, wodurch ebenfalls der Speicherbedarf des Modells verringert wird.

In Abbildung 1 ist die grundlegende Pipeline von TFL2uC zu sehen. Zu Beginn wird auf einem Computer ein TensorFlow Modell trainiert. Das fertig trainierte Modell wird anschließend dem Tool übergeben. Im nächsten Schritt kann das neuronale Netz durch Pruning oder Quantisierung optimiert werden. Ist dies der Fall muss das Modell nochmals, mit zuvor übergebenen Trainingsdaten, nachtrainiert werden. Als nächstes wird das (optimierte) TensorFlow Modell konvertiert. Es wird ein Projektordner erstellt, welcher das konvertierte Modell, die Dateien, um das Modell zu laden und auszuführen sowie die TensorFlow Lite Bibliothek enthält. Diese können anschließend in C++ Projekte eingebunden und auf einem Mikrocontroller ausgeführt werden.

Durch die automatisierte Unterstützung bei der Portierung von TensorFlow Modelle auf Mikrocontrollern wird eine Reihe von Anwendungsdomänen unterstützt. Sowohl in der Automotive-Domäne als auch in der Robotik finden TensorFlow Lite Modelle Anwendung. Im Rahmen von CC-KING wurde das Framework anhand unterschiedlicher Netze evaluiert.