en / de
AI
Expertisen
Methoden
Dienstleistungen
Referenzen
Jobs & Karriere
Firma
Technologie-Trends TechCast WebCast TechBlog News Events Academy

Künstliche Intelligenz auf Microcontrollern: Implementationsmöglichkeiten an einem Beispiel

Einleitung

Gefühlt geht heute nichts mehr ohne Künstliche Intelligenz. Spätestens seit LLMs wie ChatGPT in der breiten Bevölkerung angekommen ist, findet man fast täglich News und Prophezeiungen zu künstlicher Intelligenz und deren Zukunftsmöglichkeiten. Doch künstliche Intelligenz gibt es auch im Kleinformat, welche keine grossen Rechenzentren für das Anwenden benötigen. Seit Jahren sind diese auch bereits in Haushalten im Einsatz, ohne dass der Anwender sich bis anhin grosse Gedanken darüber gemacht hat. Als Beispiel kann hier unter anderem der Schrittzähler und die Gestensteuerung in Wearable- Devices genannt werden, welche mit kleinster Leistung arbeiten müssen und nicht unbedingt mit einer Cloud verbunden sind. Solche KI- Modelle müssen Speicher- und Energieeffizient arbeiten um die Spezifikationen zu erfüllen.
Dieser Blog gibt eine Einführung und Übersicht mit einem einfachen praktischen Beispiel in die Möglichkeiten der Entwicklung von KI- Modellen für Embedded- Systems mit Microcontrollern. Was gibt es für Möglichkeiten und wie wird eine Lösung umgesetzt.
Die praktische Umsetzung erfolgte mit einem STM32L010RBT Controller und Nano Edge AI Studio, Edge Impulse und Tensor Flow. Die Tensor Flow Modelle (.tflite) sind mit der X- Cube AI Erweiterung in die Applikation integriert worden.

Verwendete Hardware

Verwendete Software

Anwendungsmöglichkeiten

Praktisch jeder Hersteller von Microcontrollern bietet mit seinen Entwicklungstools Möglichkeiten KI- Modelle auf deren Plattformen zu entwickeln oder zu integrieren. Grundsätzlich bieten sich vereinfacht drei Lösungsansätze an.

  1. Automatisierte Modellentwicklung durch eine Entwicklungsumgebung mithilfe von Templates. Die Modelle werden mithilfe der Templates, welche an die Möglichkeiten der jeweiligen Controllerfamilie angepasst sind, gebildet und trainiert. Darauf aufbauend generiert die Entwicklungsumgebung den Code zur Integration in die Applikation in Form von Source- Code, statischen Libraries oder einer Modell-Datei wie .tflite (Tensor Flow). Durch die Entwicklungsumgebung ist kein vertieftes Verständnis von der Entwicklung eines KI- Modells notwendig. Ein Beispiel für diese Art von Entwicklungsumgebung ist das Nano Edge AI Studio von ST.
  2. Grafische Modellentwicklung durch eine Entwicklungsumgebung mithilfe von grafischen Funktionsblöcken, die für die Modellbildung zusammengesetzt werden. Als Beispiel dient hier Edge Impulse, welche Modelle für eine Vielzahl von Microcontrollern und Prozessoren grafisch erstellen kann. Zudem ist ebenfalls ein Model- Builder für das automatische Erstellen eines Modells verfügbar. Solche Tools eignen sich auch sehr gut, um etwas vertiefter in den Modellaufbau hineinzuschauen, ohne dass auf eine Programmiersprache für die Modell Entwicklung zurückgegriffen werden muss.
  3. Textuelle Modellentwicklung durch eine Entwicklungsumgebung mithilfe einer Programmiersprache wie Python. Als Beispiel dient hier das Open- Source Framework Tensor Flow von Google. Tensor Flow ist ein Framework, welches für das Erstellen und das Training von neuronalen Netzen verwendet wird und auf unterschiedlichen Plattformen eingesetzt werden kann. Dies reicht von leistungsstarken Rechnern zur Bildklassifikation bis zu einfacheren Signalklassifikationen auf Mikrocontrollern. Tensorflow ist ein vielseitiges Werkzeug, dass eine plattformunabhängige Modellentwicklung ermöglicht und auf Embedded Linux Systemen wie auch auf Mikrocontrollern mit einem RTOS wie Zephyr oder ohne Betriebssystem eingesetzt werden kann. Für die Modell- Entwicklung mit Tensor Flow stehen APIs für Python, C++ und Java zur Verfügung, was die Kenntnis einer dieser Programmiersprachen für die Entwicklung voraussetzt. Weiter ist ein Grundlegendes Wissen über die Entwicklung von neuronalen Netzen notwendig. Für die Integration auf Embedded Linux Systemen stehen die Runtime Tensor Flow Lite (RTLite) und für Mikrocontroller Tensor Flow Lite for Microcontroller (RTLite Micro) zur Verfügung.

 

Die folgende Tabelle zeigt eine Übersicht der vorhandenen Entwicklungsumgebungen oder Tools zur Entwicklung von KI- Modellen der jeweiligen Prozessorhersteller. Eine genaue Betrachtung der Möglichkeiten bei den jeweiligen Herstellern ist nicht durchgeführt worden. Die Liste ist nicht abschliessend.

Hersteller Entwicklungsumgebung
STM Nano Edge AI Studio
Microchip Machine Learning Development Suite (MPLAB)
Nordic Edge Impulse
Infineon Deepcraft Edge AI Studio
NXP eIQ Toolkit
ESP32 Edge Impulse

Generiert die Entwicklungsumgebung eine Modell- Datei wie .tflite oder wird das KI- Modell mit Tensor Flow erstellt ist die Integration bei den Plattformen, wie die folgende Tabelle zeigt, ebenfalls gegeben.

Hersteller Support
STM X- Cube (STM32 AI Runtime / TF Lite Micro Runtime)
Microchip MPLAB Harmony (TF Lite Micro Runtime))
Nordic Zephyr (TF Lite Micro Runtime)
Infineon Modus Toolbox (Precompiled tflite- micro lib)
NXP eIQ Toolkit (TFlite (Embd. Linux))
ESP32 TF Lite Micro Runtime (div. Bibliotheken)

 

Die Integration von Modell- Dateien wie ONNX oder von PyTorch sind teilweise auch möglich. Dies ist jedoch im aktuellen Projekt nicht spezifisch betrachtet worden.

 

Spezifikation zur Anomalieerkennung

Das Ziel der Anomalieerkennung ist es, bei einem Sinus- Signal mit definierter Frequenz, Amplitude und Offset, eine Abweichung der Parameter festzustellen. Dies dient als Grundlage für praktische Anwendungen beispielsweise in Strommessungen, Spannungsmessungen oder Auswertungen von magnetischen Wechselfeldern. Das Signal wird über den integrierten Analog- Digital- Wandler des Mikrocontrollers abgetastet und anschliessend durch das KI- Modell klassifiziert. Die Ausgabe des Modells soll 1 (bzw. 100%) bei einer Übereinstimmung sein und 0 (0%) bei einer Anomalie. Die Signale werden über einen Signalgenerator erzeugt.

 

Parameter Wert Einheit
Abtastrate ADC 500 Hz
f regulär 50 Hz
UDC regulär 1 V
Ap regulär 200 mV
f irregulär f  < 50 < f Hz
UDC irregulär UDC < 1 < UDC V
Ap irregulär Up < 200 < Up mV

 

Dataset erstellen

Ein wichtiger Entwicklungsschritt ist die Erstellung eines Datasets. Für Bild- und Audioklassifizierungen sowie Spracherkennungen sind grosse Datasets im Internet frei Verfügbar, welche für das Training eigener Modelle verwendet werden können. Bei Sensoranwendungen fehlen Solche und müssen daher, mit der Zielhardware, selbst erstellt werden.

Das Datenset besteht in diesem Projekt aus gültigen Signalen, mit den korrekten Parametereinstellungen sowie gleichvielen ungültigen Signalen. Die Parameter für die ungültigen Signale sind jeweils einzeln mit einer Abweichung von +/- 10% zu den korrekten Signalen aufgezeichnet worden. Gesamthaft rund 12000 Messwerte. Das Signal wird unverarbeitet eingelesen. Es wird keine Filterung oder Offsetkompensation durchgeführt.

Das Sensorsignal wird durch den Analog- Digital- Wandler alle 2ms abgetastet und die 16 Werte sollen als Array dem KI-Modell zur Klassifikation mitgegeben werden. Das folgende Bild zeigt die Samples in einem Diagramm zur Visualisierung.

Die gemessenen Daten des Analog- Digital- Wandlers werden über die serielle Schnittstelle an die Entwicklungsumgebung weitergebenen, gelabelt und abgespeichert. Labeln bedeutet, dem Eingangssignal ein Zielwert mitzugeben, damit das Modell beim Training bei einem gültigen Eingangssignal auf eine Ausgabe 1 und bei ungültigem Eingangssignal auf eine Ausgabe 0, trainiert wird. Die Übertragung kann direkt in die Entwicklungsumgebung erfolgen oder indirekt über ein Konsolentool mit der Speicherung in eine CSV- Datei. Die Datenausgabe muss für ein direktes Einlesen entsprechend der Tool-Vorgabe erfolgen. (Siehe folgende Abbildung)

 

Modellerstellung und Training

Bei einer automatisierten Modellerstellung sind je nach Plattform unterschiedliche Templates vorhanden. Das Nano Edge AI Studio ist primär für Sensorapplikationen gedacht. Im folgenden Bild sind die möglichen Templates, welche beim Start des Projekt ausgewählt werden, aufgezeigt.

 

Nach der Bestimmung der Hardwareplattform und dem Erzeugen oder Einlesen eines bereits erstellten Datasets, berechnet das Tool mögliche Modell- Varianten, welche je nach Spezifikation bezüglich Speicherbedarf, Genauigkeit und Reaktionszeit ausgewählt werden können.

 

 

Bei einer automatischen Modellentwicklung wird eine gesamte Modellpipeline erzeugt. Das heisst nebst dem eigentlichen Machine Learning Block mit dem neuronalen Netzwerk werden auch Preprocessing Blöcke zur Signalvorverarbeitung erzeugt.

Mithilfe von Templates und dem eingelesenen Dataset ist es je nach Hersteller möglich mit einem Model- Builder ein KI- Modell zu erstellen und daraufhin zu trainieren. Durch die Werkzeuge muss sich der Entwickler nicht mit der Struktur eines KI- Modells auseinandersetzen und braucht auch kein Vorwissen. Das Tool stellt das optimale Modell zusammen und trainiert es.

 

Entwicklungsumgebungen zur grafischen Modellentwicklung wie zum Beispiel Edge Impulse bieten nebst einem Model- Builder auch die Möglichkeit das Modell grafisch mit Funktionsblöcken zusammenzustellen. Dies erhöht die Flexibilität und eignet sich auch gut für den Einstieg und als Übung zu diesem Thema.

Im Bild unten wird nach dem Einlesen des Datasets zuerst die Grundstruktur der gesamten KI- Modell Pipeline definiert. Auch hier lassen sich vor der Klassifizierung mit dem neuronalen Netzwerk, Preprocessing Blöcke ergänzen. Im Beispiel unten werden jedoch direkt die Rohdaten zur Klassifizierung herangezogen.

 

Im nächsten Schritt muss die Funktion der Klassifikation bestimmt werden. Diese werden ebenfalls durch vordefinierte Layer durch Drag & Drop zusammengestellt. Anschliessend kann das Modell trainiert werden.

Nach erfolgreichem Training wird das Resultat und die Performance mit der voraussichtlichen Bearbeitungszeit und Speicherbedarf angezeigt.

 

Bei einer textuellen Modelleerstellung wie Tensor Flow erfordert, wie bereits erwähnt, Programmierkenntnisse in einer der unterstützten Programmiersprachen und grundlegende Kenntnisse zu den unterschiedlichen neuronalen Netzwerken. Dank der integrierten Keras-API lässt sich das KI-Modell mit nur wenigen Codezeilen programmieren und ermöglicht so einen schnellen Einstieg. TensorFlow unterstützt diesen Lernprozess umfassend durch eine Vielzahl an Dokumentationen, Tutorials und praktischen Tools.
Für die Modellerstellung und das Training wird beispielsweise ein Python-Skript verwendet, das die Daten aus den Datasets einliest, ein Modell definiert und dieses anschließend mit den eingelesenen Daten trainiert. Das folgende Bild zeigt den Aufbau des Modells in Python:

model = tf.keras.Sequential([
    tf.keras.layers.Conv1D(16, kernel_size=3, activation='relu', input_shape=(16, 1), padding="same"),
    tf.keras.layers.MaxPooling1D(pool_size=2),
    tf.keras.layers.Conv1D(32, kernel_size=3, activation='relu', padding="same"),
    tf.keras.layers.MaxPooling1D(pool_size=4),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(32, activation='relu'),
    tf.keras.layers.Dense(1, activation='sigmoid')
])

Die folgende Abbildung zeigt die Konsolenausgabe der letzten Trainingsdurchläufe sowie den anschließenden Test des Modells mit einem regulären und fünf irregulären Signalen.

 

Deployment

Nach dem Training erfolgt die Bereitstellung des Modells. Grundsätzlich sind je nach Entwicklungswerkzeug folgende Varianten möglich:

 

 

  1. Generierung einer statischen Bibliothek wie mit dem Entwicklungswerkzeug NanoEdge AI Studio von ST, wird die trainierte Modell-Pipeline in eine statische Bibliothek eingebunden. Der Zugriff erfolgt über eine automatisch erzeugte Header-Datei, die die Funktionsdeklarationen für die Implementierung in der Anwendung bereitstellt. Diese Lösung ist primär auf die unterstützte Zielhardware ausgelegt. Eventuell erforderliche Preprocessing Blöcke sind bereits in der Bibliothek integriert.
  2. Generierung von Source Code mit einem tflite Model wie dies zum Beispiel mit Edge Impulse möglich ist. Im tflite Model wird lediglich die Klassifikation mit dem trainierten neuronalen Netzwerk abgebildet. Die Preprocessing Blöcke werden vorgängig durchgeführt. Diese Komponenten werden dann in einem separaten Sourcecode generiert und sind plattformabhängig.
  3. Generierung eines tflite Models aus Tensor Flow enthält primär die Klassifikation mit dem trainierten neuronalen Netzwerk. Preprocessing Blöcke können prinzipiell in Tensor Flow ebenfalls in gewissen Umfängen im Modell integriert werden, jedoch ist noch offen, ob diese mit der Tensor Flow Lite Micro Runtime abgebildet werden können. Es ist auch offen ob und wie allfällige Preprossessing Blöcke, mit Tensor Flow trainiert werden können. In solchen Fällen stechen dann die Vorteile von Entwicklungswerkzeugen wie Edge Impulse oder plattformspezifische Entwicklungsumgebungen heraus, welche diese Funktionen direkt im Training berücksichtigen und den Preprocessing Block als Sourcecode für die unterstützte Hardware abbilden.

 

Implementation

Die Integration des KI- Modells oder der KI Modell- Pipeline erfolgt über die erzeugte statische Bibliothek und das Header File, den generierten Source- Code oder die tflite Modell Datei. Die Integration der tflite- Modell Datei erfolgt über die Tensor Flow Lite Micro Runtime, welche von allen betrachteten Herstellern unterstützt wird, oder durch eine herstellereigene Runtime.

Die Implementation in die Applikation erfolgt bei den drei geprüften Lösungsansätzen grundsätzlich im gleichen Schema. Die auszuwertenden Signale werden über den Analog- Digital- Wandler eingelesen und gleich aufbereitet wie bei der Erstellung des Datasets. In unserem Beispiel sind dies 16 Werte mit einer Abtastrate von 500Hz. Die Daten werden über eine Funktion eingelesen und von der KI Klassifiziert. Als Rückgabewert wird ein klassifizierter Wert gemäss den trainierten Labels zurückgegeben. In unserem Fall ein Wert zwischen 0 und 1 bzw. 0 und 100.

Der folgende Ausschnitt zeigt die Implementation in der Beispielapplikation bei Verwendung der statischen Bibliothek mit Nano Edge AI Studio. Mit fill_buffer werden 16 Werte aus dem ADC in den Buffer input_user_buffer gespeichert. Die darauffolgende Funktion prüft die Werte mit dem Modell auf Anomalien und gibt die Gleichheit mit dem Sollwert mit einem Wert zwischen 0 bis 100 in der Variable similarity zurück.

fill_buffer(input_user_buffer);
error_code = neai_anomalydetection_detect(input_user_buffer, &similarity)

Resultate

Die folgende Grafik zeigt die Vorhersage des KI- Modells, welches mit Tensor Flow entwickelt worden ist. Die Vorhersagewerte des Modells liegen zwischen 0 und 1, weshalb diese zwecks besserer Lesbarkeit mit 100 multipliziert wurden.

Die folgende Tabelle zeigt die Detektierbarkeit einer Anomalie im Sinussignal der unterschiedlichen Lösungsbeispiele. Die Annahme für die Detektierbarkeit ist, dass der Vorhersagewert unter 50 (bzw. 0.5) fällt.

Detektierbarkeit
Entwicklungsumgebung Frequenz [Hz] Amplitude [mV] Offset [mV]
Nano Edge AI Studio +/- 3 +/- 30 +/- 30
Edge Impulse +/- 3 +/- 20 +/- 30
Tensor Flow +/- 3 +/- 20 +60 / -70

 

Fazit

Die Entwicklungsumgebungen der Microcontrollerhersteller unterstützen einem beim Einstieg in die Welt der KI erheblich. Es sind auch ohne vertiefte Kenntnisse über die Modellerstellung KI- Modelle für Sensoranwendungen möglich, da dies in vielen Fällen durch Templates und Model- Builder automatisiert umgesetzt werden kann.

Jedoch muss man auch nicht davor zurückschrecken, ein Werkzeug wie Tensor-Flow einzusetzen. Mit etwas Einarbeitung und den zur Verfügung stehenden Dokumentationen und LLMs wie zum Beispiel ChatGPT gelingt die Modellerstellung schnell und es ist eine grosse Lernkurve vorhanden. Die Verwendung von Tensor Flow hilft zudem beim Lernen und die Modelle können auch Plattformunabhängig erstellt werden.

Die ausgewerteten Resultate zeigen bereits gute Ergebnisse, welche durch ein KI- Modell, mit wenig Code-Zeilen, realisiert werden können.

Die Herausforderung in der Praxis wird bei solchen Anwendungen primär in der Erstellung eines aussagekräftigen Datensets liegen. Es ist wichtig, sich darüber frühzeitig in der Entwicklung Gedanken zu machen und frühzeitig mit dem Erstellen des Datasets zu beginnen.

 

Kommentare

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Newsletter - aktuelle Angebote, exklusive Tipps und spannende Neuigkeiten

 Jetzt anmelden

Copyright © 2025 Noser Engineering AG – Alle Rechte vorbehalten.

NACH OBEN
Privacy Policy Cookie Policy
Zur Webcast Übersicht