Das STM32-Ökosystem ist für Einsteiger und Experten im Bereich des maschinellen Lernens gleichermaßen interessant
Maschinelles Lernen, insbesondere TinyML, hat das Potenzial, die Art und Weise, wie eingebettete Systeme entworfen und gebaut werden, zu revolutionieren. Traditionell haben diese Systeme prozedurale Algorithmen, die auf der Erfahrung der Entwickler mit dem System basieren. Das maschinelle Lernen bietet einen anderen Ansatz, bei dem die Algorithmen des Systems auf Beobachtungen und Daten aus der realen Welt beruhen. Wenn sich die Daten in der Umgebung ändern, kann das maschinelle Lernmodell sich schnell an die Daten anpassen. Eine handcodierte Lösung würde eine Neuprogrammierung erfordern.
In diesem Beitrag werden die von der STM32-Mikrocontroller-Familie von STMicroelectronics unterstützten Plattformen und Tools für maschinelles Lernen für eingebettete Systeme untersucht.
Unterstützung für maschinelles Lernen in der Mikrocontrollerfamilie STM32
Maschinelles Lernen kann ein leistungsfähiges Werkzeug für Entwickler von eingebetteten Systemen sein. Entwickler sind jedoch oft der Meinung, dass Algorithmen für maschinelles Lernen zu viel Rechenleistung benötigen oder dass die Algorithmen so umfangreich sind, dass sie nicht in einen typischen Mikrocontroller passen. In Wirklichkeit hängt die Wahl des Mikrocontrollers mehr davon ab, was Sie mit maschinellem Lernen erreichen wollen, als davon, wie ein bestimmter Mikrocontroller dies unterstützt.
Abbildung 1 zeigt zum Beispiel eine Reihe von STM32-Mikrocontrollerfamilien, die maschinelles Lernen unterstützen. Diese Komponenten reichen vom STM32F0, der mit 48 Megahertz (MHz) läuft und maximal 256 Kilobyte (KByte) Flash und 32 KByte RAM hat, bis zum STM32F7, der mit 216 MHz läuft und maximal 2 Megabyte (MByte) Flash und 512 KByte RAM hat.
Abbildung 1: Die STM32-Mikrocontroller, die maschinelles Lernen mit den Entwicklungstools STM32Cube.AI und NanoEdge unterstützen. (Bildquelle: STMicroelectronics)
Wie Sie sehen, können ziemlich viele Mikrocontroller maschinelles Lernen unterstützen. Das eigentliche Problem besteht darin, dass Plattformen für maschinelles Lernen ein breites Spektrum von Entwicklern erfolgreich unterstützen müssen. Ein Experte für maschinelles Lernen ist zum Beispiel bei Teams für eingebettete Software nicht sehr häufig anzutreffen. Stattdessen sind Entwickler von eingebetteter Software gezwungen, sich mit maschinellem Lernen außerhalb ihres traditionellen Kompetenzbereichs zu befassen. Daher wird eine Plattform benötigt, die Teams mit und ohne Experten für maschinelles Lernen unterstützt. Die Toolchains des STM32-Ökosystems für maschinelles Lernen helfen bei diesem Problem.
Hilfe für Embedded-Teams ohne Experten für maschinelles Lernen
Das Entwerfen und Trainieren von Algorithmen für das maschinelle Lernen kann wie eine gewaltige Aufgabe erscheinen. Die Entwickler müssen in der Lage sein, Daten zu erfassen, ein Modell zu entwerfen, das Modell zu trainieren und dann sicherzustellen, dass das Modell gut genug passt, um optimiert und in einem eingebetteten System eingesetzt zu werden.
Traditionell werden Modelle für maschinelles Lernen mit TensorFlow Lite, PyTorch, Matlab oder anderen Tools erstellt. Diese Werkzeuge liegen oft weit außerhalb der Komfortzone oder der Erfahrung der Entwickler von eingebetteter Software. Sich mit diesen Instrumenten vertraut zu machen und genaue Ergebnisse zu erzielen, ist nicht nur zeitaufwändig, sondern auch kostspielig.
Das STM32-Ökosystem für maschinelles Lernen umfasst ein Tool namens NanoEdge (Abbildung 2), das Entwicklern ohne Fachwissen oder Erfahrung mit maschinellem Lernen hilft, maschinelle Lernanwendungen zu trainieren und auf ihren Geräten einzusetzen.
So können Entwickler beispielsweise problemlos Bibliotheken für maschinelles Lernen für Anwendungen wie Anomalieerkennung, Ausreißererkennung, Klassifizierung und Regression erstellen. Diese Bibliotheken können dann auf einem STM32-Mikrocontroller eingesetzt werden.
Abbildung 2: NanoEdge kann Entwickler durch den gesamten Entwicklungsprozess des maschinellen Lernens begleiten. (Bildquelle: STMicroelectronics)
Was ist mit Embedded-Teams mit Experten für maschinelles Lernen?
Wenn ein Entwicklungsteam Zugang zu Experten für maschinelles Lernen hat, kann es auf eine viel größere Auswahl an Tools zurückgreifen, um seine maschinellen Lernmodelle für einen STM32-Mikrocontroller zu entwickeln. Wenn das Team über Fachwissen verfügt, kann es beispielsweise TensorFlow Lite, PyTorch, Matlab oder ein anderes Tool zur Erstellung des Modells verwenden. Das Problem dabei ist oft, dass diese Tools eine nicht optimierte Bibliothek erzeugen, die auf einem Mikrocontroller nicht sehr effizient läuft.
Innerhalb der STM32-Familie können Entwickler das STM32Cube.AI-Plug-in nutzen, um Modelle für das maschinelle Lernen zu importieren und sie für den effizienten Betrieb auf STM32-Mikrocontrollern zu optimieren. Mit dem Tool können Entwickler ihre maschinellen Lernmodelle auf dem Ziel-Mikrocontroller ausführen und abstimmen. Zunächst können die Entwickler ihr Modell in die Toolchain importieren, wie in Abbildung 3 dargestellt. Anschließend können sie das Modell konvertieren, das Netz analysieren und validieren. Sobald dies geschehen ist, können die Entwickler aus der STM32CubeIDE heraus Code generieren und ein maschinelles Lerngerüst um das Modell herum erstellen, um die Entwicklung von Embedded-Software zu vereinfachen.
Abbildung 3: Ein maschinelles Lernmodell eines Sinuswellengenerators wird in STM32CubeIDE.AI importiert. (Bildquelle: Beningo Embedded Group)
Entwickler von eingebetteter Software müssen die entsprechenden Eingaben für das maschinelle Lernmodell sowie den Code zur Überprüfung des Ergebnisses bereitstellen. Auf das Ergebnis können Aktionen ausgeführt werden, oder das Ergebnis kann gemittelt oder auf eine für die Anwendung sinnvolle Weise manipuliert werden. Abbildung 4 zeigt die einfache Anwendungsschleife zur Ausführung und Überprüfung der Ergebnisse des Modells.
Abbildung 4: Die Hauptschleife umgibt das maschinelle Lernmodell. (Bildquelle: Beningo Embedded Group)
Fazit
Das maschinelle Lernen, das durch die TinyML-Bemühungen gefördert wird, findet schnell seinen Weg in eingebettete Anwendungen. Um erfolgreich zu sein, müssen Entwickler eine Plattform nutzen. Während es scheint, dass fast täglich neue Plattformoptionen auftauchen, bietet das STM32-Ökosystem Entwicklern einen einfachen und skalierbaren Lösungsweg.
Innerhalb des Ökosystems können Entwickler mit Erfahrung im Bereich des maschinellen Lernens ihre herkömmlichen Tools nutzen und das STM32CubeIDE.AI-Plug-in zur Optimierung und Abstimmung ihrer Lösungen einsetzen. Für Teams ohne Fachkenntnisse im Bereich des maschinellen Lernens kann NanoEdge genutzt werden, um die Entwicklung von Bibliotheken für maschinelles Lernen zu vereinfachen und die Lösung schnell und kostengünstig in Betrieb zu nehmen.

Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.
Visit TechForum