Machine Learning für Maker
TinyML-Tools für Maker
Um mit dem Machine Learning auf Mikrocontrollern zu starten, gibt es verschiedene Tools und Anbieter, die unterschiedlichen Anforderungen gerecht werden. Einige bieten Tools mit Pipelines für den gesamten Entwicklungsprozess von der Datenaufnahme bis zur fertigen Firmware an, andere können bestehende Modelle in C/C++-Bibliotheken konvertieren. In diesem Beitrag geben wir einen Überblick über aktuelle Tools, die Sie kostenlos nutzen können.
Wenn Sie sich dafür interessieren, was man unter TinyML versteht, schauen Sie sich diesen Einführungsbeitrag an.
Werkzeugtypen im Überblick
Je nach Erfahrung und Wissensstand zu den Themen Machine Learning, C-Programmierung und Data Science haben Maker besondere Ansprüche an Werkzeuge zur Erstellung von Modellen. Gerade für die ersten Schritte sollte die Bedienung intuitiv und das Tool kostenlos sein. Idealerweise ist das erstellte Modell auch auf bereits vorhandener Hardware lauffähig. Weniger wichtig sind für Privatpersonen Eigenschaften wie die Integrierbarkeit in Produktionsprozesse.
Die aktuellen Tools lassen sich grob in folgende Gruppen gliedern:
- Konverter: Bereits erstellte Modelle können in C/C++-Bibliotheken konvertiert werden. Meist geht damit auch eine Optimierung des Speicherverbrauchs einher. Für die im Voraus nötige Erstellung der Modelle sind meist Kenntnisse im Bereich Machine Learning und Datenverarbeitung notwendig.
- AutoML: Der gesamte Prozess von der Aufnahme der Daten bis zur fertigen Bibliothek wird in einer Anwendung abgewickelt. Diese Tools erfordern häufig nur wenig oder gar keine Programmiererfahrung und leiten durch den Entwicklungsprozess.
- Sonstige Tools (Bibliotheken, Frameworks und Zoos): Es werden vortrainierte Modelle, optimierte Bibliotheken oder Frameworks angeboten, deren Integration meist Kenntnisse im Machine-Learning-Bereich voraussetzen.
Modellkonverter
Haben Sie bereits ein kleines Modell erstellt, können Sie es mit einem passenden Konverter in C/C++-Bibliotheken überführen und es auf Ihrem Mikrocontroller ausführen.
emlearn ist eine Open-Source-Bibliothek zur Ausführung klassischer Machine-Learning-Modelle und neuronaler Netze auf Mikrocontrollern und anderen ressourcenbeschränkten Geräten. Sie konvertiert Modelle aus Frameworks wie scikit-learn und Keras in C99-kompatiblen Code, der ohne Betriebssystem, dynamische Speicherverwaltung oder externe Bibliotheken auskommt.
Modelltypen: scikit-learn (Entscheidungsbäume, Random Forests, Naive Bayes, Gaussian Mixture Model), Keras (einfache Multilayer-Perzeptronen-Modelle)
Stärken:
- Open Source
- keine Laufzeitabhängigkeiten
- CLI-Tool verfügbar
- Unterstützung verschiedener Plattformen (z. B. STM32, ESP32, Arduino, AVR)
- gut dokumentiert
Schwächen:
- keine Optimierung oder Quantisierung
Die Pythonbibliothek everywhereml ist dazu gedacht, einige Standardmodelle und Vorverarbeitungsschritte der Pythonbibliothek scikit-learn zu konvertieren. Die Modelle können in C++, JavaSkript, PHP, TinyGo und MicroPython konvertiert werden. Die Ausgabe erfolgt allerdings nicht als Bibliothek, sondern als Funktion in der jeweiligen Programmiersprache.
Modelltypen (sklearn): Random Forest, Logistische Regression, Gaussian Naive Bayes, Entscheidungsbaum, XGBoost
Stärken:
- keine Anmeldung notwendig
- konvertiert in verschiedene Programmiersprachen
Schwächen:
- nur wenige Modelltypen
- wenig dokumentiert
- keine Optimierung und Quantisierung
LiteRT for Microcontrollers ist die speziell für Mikrocontroller optimierte Variante des LiteRT Frameworks von Google. Es wurde als Nachfolger von TensorFlow Lite for Microcontrollers (TFLM) entwickelt. Es ist ein Tool zur Konvertierung von vortrainierten neuronalen Netzen, das kleine TensorFlow-Modelle in ein C-Array konvertiert.
Stärken:
- maximale Kontrolle über Integration und Anpassung
- keine Laufzeitabhängigkeiten
Schwächen:
- erfordert Vorwissen im Bereich Embedded-Entwicklung
Die ST Edge AI Developer Cloud kann dazu genutzt werden, bestehende Modelle in C-Bibliotheken für ST-Controller zu konvertieren und diese hinsichtlich der Ressourcennutzung zu optimieren. Die Anwendung kann über eine Web-GUI oder eine REST API genutzt werden.
Modelltypen: Keras, TensorFlow, PyTorch, MATLAB (über ONNX), scikit-learn (über ONNX)
Stärken:
- auch klassische ML-Modelle konvertierbar
- keine Programmiererfahrung notwendig
- Quantisierungsstufen wählbar
- echte Messung der Inferenzzeit durch Messung auf der „STM32 Boards Farm“
- Zugriff auf STM32 Model Zoo
Schwächen:
- nur für ST-Produkte
X-CUBE-AI ist ein STM32Cube-Erweiterungsmodul, das lokal auf dem PC läuft. Es kann über die Anwendung STM32CubeMX oder als CLI verwendet werden. Wie die ST Edge AI Developer Cloud dient es zur Konvertierung von Modellen in für ST-Produkte optimierte C-Bibliotheken.
Modelltypen: Keras, Tensorflow, PyTorch, MATLAB (über ONNX), scikit-learn (über ONNX)
Stärken:
- auch klassische ML-Modelle konvertierbar
- keine Programmiererfahrung notwendig
- Quantisierungsstufen wählbar
- offline verfügbar
Schwächen:
- nur für ST-Produkte
AutoML
Wenn Sie nach einem Tool suchen, das Sie beim gesamten Prozess von der Datenvorverarbeitung bis zur Erstellung passender Bibliotheken unterstützt, sind AutoML-Tools eine gute Wahl. Einige unterstützen auch bei der Aufnahme der Daten und in der Regel sind für die ersten Schritte keine Programmiererfahrungen nötig.
Edge Impulse ist ein sehr umfangreiches AutoML-Tool, das mit sogenannten Impulsen arbeitet. Dabei besteht ein Impuls aus einem Eingabeblock wie z. B. Zeitreihen, einem oder mehreren Verarbeitungsblöcken und einem oder mehreren Lernblöcken. Am Ende steht ein Ausgabeblock, der z. B. bei einer Klassifikation die Klassenwahrscheinlichkeit ausgibt. Dieser gesamte Impuls kann später exportiert werden.
Edge Impulse bietet Signalverarbeitung für Zeitreihen, vorverarbeitete Messwerte und auch Bilder an. Es werden Klassifikations-, Regressions- und Anomalie-Erkennungsalgorithmen unterstützt. Im Bereich der Bildverarbeitung werden Objekterkennung und Anomalieerkennung unterstützt. In der kostenlosen Variante können Neuronale Netze auf Basis des Keras Frameworks erstellt werden. Klassische Machine-Learning-Modelle wie Entscheidungsbäume oder SVMs können aktuell nur in der Enterprise- oder Professional-Variante verwendet werden. Edge Impulse bietet darüber hinaus mit dem EON Tuner eine Möglichkeit, systematisch verschiedene Modellarchitekturen zu testen und hinsichtlich Genauigkeit, Speicherbedarf und Inferenzgeschwindigkeit zu bewerten. Die Plattform unterstützt Live-Inferenz direkt im Browser oder über USB, sodass Modelle getestet werden können, bevor sie auf die Zielhardware übertragen werden. Für die Datenerfassung steht neben der Web-Oberfläche auch eine mobile App zur Verfügung, mit der Sensordaten direkt aufgenommen und in Projekte integriert werden können.
Zahlreiche Zielhardware von unterschiedlichen Herstellern wird direkt unterstützt, sodass darauf optimierte Bibliotheken exportiert werden können. Für einzelne Entwicklungsboards können sogar fertige Firmwares heruntergeladen werden. Außerdem können generische C++-Bibliotheken für den Einsatz auf noch nicht direkt unterstützter Hardware exportiert werden. Für bestimmte IDEs wie die Arduino IDE oder die STM32CubeIDE lassen sich auch direkt einbindbare Bibliotheken erstellen.
Stärken:
- keine Programmiererfahrung notwendig
- umschaltbar auf Expertenmodus (Netzarchitektur selbst programmierbar)
- einfacher Einstieg trotz sehr umfangreicher Möglichkeiten
- Unterstützung beim Datenloggen
- halbautomatische Modellsuche mit EON Tuner möglich
- auch als Konverter für eigene neuronale Netze nutzbar
- eigene Blöcke konfigurierbar für individuelle Anpassungen
- CLI kostenlos verfügbar
- Datenaugmentation – Erstellung künstlicher Daten
- für Mikrocontroller optimierte Modelle mit EON Tuner (weniger Speicher als LiteRT benötigt)
- Live-Tests im Browser möglich
- breite Geräteunterstützung
- Versionierungsoptionen
- schnelle Ergebnisse
- viele Tutorials
- Communityprojekte
Schwächen:
- in kostenloser Version nur drei private Projekte und zehn Impulse pro Projekt möglich
- klassisches ML nur in Bezahlversion
- individuelle Signalvorverarbeitung nur mit größerem Aufwand
- limitierte Modellanpassung für Fortgeschrittene
- keine statistische Analyse der Trainingsdaten – Muster oder Rauschen können übersehen werden
Dieses AutoML-Tool fokussiert sich auf die automatisierte Erstellung von AI-Bibliotheken für STM-Mikrocontroller. Der Export erfolgt als C-Bibliothek, die auf die Controllertypen angepasst ist. Es werden die Projektarten Anomalieerkennung, 1-Klassen- und n-Klassen-Klassifikation sowie Extrapolation (Vorhersage kontinuierlicher Werte) unterstützt. Eine besondere Eigenschaft ist die Anomalieerkennung mit On-Device Learning, also der Möglichkeit, auf dem Controller zu lernen.
Im fünfstufigen Workflow werden zunächst Angaben zur Zielhardware und den verwendeten Sensoren gemacht. Anschließend können Signal entweder importiert oder über einen seriellen Datenlogger aufgenommen werden. Es wird ein Bericht über Eigenschaften im Zeit- und Frequenzbereich ausgegeben. Im dritten Schritt werden beim Benchmarking verschiedene mögliche Kombinationen von Vorverarbeitung und Modellen oder Algorithmen getestet und die Ergebnisse aufbereitet dargestellt. Unter Validierung können die getesteten Verarbeitungspipelines gegen neue Daten getestet werden. Vor der Portierung auf dem Controller kann eine Live-Inferenz über einen Emulator durchgeführt werden, der die Bedingungen auf dem angegebenen Controller nachstellt. Je nach gewählter Hardware und Projektart können für den Export noch Einstellungen vorgenommen werden.
Stärken:
- On-Device Learning für Anomalieerkennung möglich
- keine Programmierkenntnisse oder Machine-Learning-Kenntnisse nötig
- einsteigerfreundliche Oberfläche
- lokale Installation, offline nutzbar
- Unterstützung beim Finden der optimalen Abtastrate
- Bereitstellung anpassbarer Datenlogger für einige Experimentierboards
- Unterstützung beim Finden relevanter Features
- synthetische Daten für Anomalieerkennung mit Beschleunigungssensoren nutzbar
- viel Dokumentation und viele Tutorials
- Emulator ermöglicht Live-Tests
- CLI-Anwendung möglich
Schwächen:
- für Nicht-STM-Controller kostenpflichtig
- keine Bildverarbeitung
- umständliches Format für Import von Datensätzen
- kein direkter Einfluss auf die Auswahl der Algorithmen
- intransparente Signalverarbeitung und Modellstruktur
Neuton AI ist eine No-Code-AutoML-Plattform, die zu Nordic Semiconductors gehört, und basiert nach eigenen Angaben auf einem eigenen, patentierten neuronalen Netzwerk-Framework. Sie ist auf die Erstellung extrem speicheroptimierter neuronaler Netze für Cortex M0, M4 und M33 Controller sowie für die ISPU von STMicroelectronics und der Mikrochip-8-Serie ausgelegt. Damit lassen sich die Aufgaben Klassifikation, Regression und Anomalieerkennung realisieren.
Das Framework basiert auf dem Ansatz eines selbstorganisierenden neuronalen Netzes. Grob zusammengefasst bedeutet das: Das Netz wird Neuron für Neuron gesetzt. Daher ist es nicht möglich, Einfluss auf die Architektur zu nehmen. Lediglich nach dem Training kann zwischen verschiedenen Modellen gewählt werden, die sich hinsichtlich der Genauigkeit und dem Speicherbedarf unterscheiden. Der Export erfolgt als C-Bibliothek.
Stärken:
- einsteigerfreundliche Oberfläche
- keine Programmierkenntnisse oder Machine-Learning-Kenntnisse nötig
- alle Funktionen kostenlos
- Unterstützung unterschiedlicher Quantisierungsstufen
- extrem kleine Modelle
- anpassbare Signalvorverarbeitung im Zeit- und Frequenzbereich
- umfangreiche Analyse des fertigen Modells
- Simulation des Netzes zur Validierung auf PC möglich
- Unterstützung für 8-, 16- und 32-Bit-Controller
Schwächen:
- keine Datenloggerfunktion
- nur eingeschränkte Analyse der Eingabedaten möglich – Muster oder Rauschen können übersehen werden
- keine klassischen ML-Algorithmen
- keine Bildverarbeitung
- kaum Kontrolle über Modellarchitektur oder Auswahl zwischen verschiedenen Modellen
- kein iterativer Prozess – nachträgliche Anpassungen nur mit Erstellung eines neuen Projekts möglich
- intransparente Modellarchitektur
Sonstige
Wenn Ihre Anforderungen an die Modelle oder die Vorverarbeitung über das hinaus geht, was Sie mit den AutoML-Tools erreichen können, lohnt es sich, sich mit diesen Frameworks und Tools auseinanderzusetzen.
CMSIS-NN ist eine optimierte C-Bibliothek von Arm für die Ausführung von neuronalen Netzen auf Arm-Cortex-M-Controllern, die .tflite-Modelle unterstützt. Diese Bibliothek stellt optimierte Funktionen für die Operationen in einem neuronalen Netz auf Arm-Cortex-M-Controllern bereit. Da es sich um eine Bibliothek und nicht um ein Framework handelt, kann hiermit kein Modell trainiert werden. Diese Bibliothek kann also nur in Kombination mit bereits trainierten und kompatiblen Modellen genutzt werden.
Stärken:
- Quantisierung
- auf Prozessorebene, daher für alle Arm-Cortex-M-Prozessoren unabhängig vom Controller-Hersteller geeignet
- kompatibel mit TensorFlow Lite for Microcontrollers (TFLM) und LiteRT
- nach eigenen Angaben bessere Performance als mit Standard-TFLM-Kerneln
- Open Source und gut dokumentiert
Schwächen:
- nur Ausführung (Inferenz), kein Training
- nur Standard-Layer-Typen
- nur neuronale Netze, kein klassisches Machine Learning
- manuelle Integration nötig (aufwendiger als andere Tools)
Diese vier Machine Learning Frameworks sind nicht direkt auf die Anwendung im Embedded-Bereich ausgelegt, sollen aber dennoch nicht unerwähnt bleiben. Sie wurden eher für leistungsfähigere Rechnerumgebungen entwickelt und bieten umfangreiche Funktionen im Bereich Feature Engineering, Training und Evaluation. Während scikit-learn klassische Machine-Learning-Algorithmen wie Entscheidungsbäume bietet, konzentrieren sich Frameworks wie Keras, TensorFlow und PyTorch vor allem auf Deep Learning mit neuronalen Netzen.
Die entstehenden Modelle sind häufig zu ressourcenintensiv oder benötigen Umgebungen, die auf Mikrocontrollern nicht verfügbar sind, um direkt auf diesen verwendet zu werden. Wer die Architektur der Modelle und die Vorverarbeitung der Signale vollständig in der Hand haben möchte, kann diese Frameworks jedoch trotzdem nutzen. Denn im vorherigen Abschnitt wurden Konverter vorgestellt, die es ermöglichen, kleine Modelle, die mit diesen Frameworks erstellt wurden, in für Mikrocontroller optimierten C/C++-Code zu konvertieren.
Stärken:
- maximale Kontrolle über Architektur und Vorverarbeitung
- zahlreiche Konverter vor allem für besonders für TensorFlow-Modelle
Schwächen:
- Kenntnisse in der Programmierung und im Machine Learning nötig
- nicht primär für Einsatz auf Mikrocontrollern entwickelt
- sehr große oder komplexe Modelle eventuell nicht konvertiertbar
STMicroelectronics bietet in der ST Edge AI Suite eine Sammlung von Anwendungen für den Bereich Embedded Machine Learning für ST-Produkte. In der Suite werden das AutoML Tool NanoEdge AI Studio und die ST Edge AI Developer Cloud mit Tools zum Datenloggen, Benchmarking und Training sowie schon fertig erstelle Modelle bereitgestellt.
Stärken:
- ausführliche Dokumentation
- Optimierung für ST-Produkte
- Übersicht über Edge-AI-Tools von ST
Schwächen:
- nur für ST-Produkte
Fazit
Wer eine Idee ausprobieren möchte und noch nicht viel Erfahrung im Bereich Embedded AI hat, wird mit Edge Impulse schnell zu Ergebnissen kommen, ohne sich lange einarbeiten zu müssen. Das Tool ist aber nicht nur einsteigerfreundlich sondern, bietet auch viele Optionen zur Erweiterung der Funktionen. Dennoch lohnt es sich, auch auf andere Anbieter zu schauen, da diese zum Teil kleinere Modelle erstellen können oder auch klassisches Machine Learning anbieten. Wer die maximale Kontrolle über die Datenvorverarbeitung und die Modellbildung haben möchte, kann mit bekannten Frameworks wie TensorFlow oder scikit-learn eigene Modelle erstellen und diese über diverse Konverter in C/C++-Bibliotheken konvertieren.
Die Welt der TinyML-Tools ist vielfältig und wächst stetig. Da sich dieser Beitrag auf eine praxisnahe Auswahl mit unterschiedlichen Stärken konzentriert, haben wir nicht alle Lösungen im Detail behandelt. Wenn Sie ein Tool kennen, das hier fehlt und Ihrer Meinung nach unbedingt erwähnt werden sollte, freuen wir uns über Ihre Hinweise in den Kommentaren!