ML mit begrenzten Ressourcen

Wie intelligente Sensoren Mikrocontroller entlasten

18. Oktober 2024, 8:56 Uhr | Zuzana Jirankova und Bartosz Boryna, beide Senior Application Engineer bei STMicroelectronics
© STMicroelectronics/Componeers GmbH

Intelligenz hilft, wo sie sitzt, darüber sollte diskutiert werden. Sitzt die Intelligenz in einem KI-fähigen Sensor, wird der Mikrocontroller entlastet und das Gesamtsystem kann trotzdem durchaus beachtliche Leistungen vollbringen – ein entsprechendes Tool und die entsprechende Hardware helfen.

Diesen Artikel anhören

In diesem Artikel wird beschrieben, wie maschinelles Lernen mit begrenzten Hardware-Ressourcen und einer verteilten Edge-AI-Architektur implementiert werden kann. Darüber hinaus wird gezeigt, wie mit einem automatisierten Machine-Learning-Design-Tool Designer die Entwicklungszeit beschleunigen können, ohne dass sie über einen erfahrenen Datenwissenschaftler oder einen starken datenwissenschaftlichen Hintergrund im Allgemeinen verfügen müssen. Die Kombination eines Mikrocontrollers mit einem KI-fähigen Sensor trägt auch zur Senkung des Gesamtstromverbrauchs und der Systemzuverlässigkeit bei.

Beispiele aus der Biologie zeigen: es geht auch anders

Der »Limulus polyphemus«, oder Hufeisenkrebs, wird von Wissenschaftlern als interessantes Modell für die Erforschung des Sehvermögens angesehen, da der Körper des Tieres groß genug ist und seine Netzhautneuronen recht leicht zugänglich sind. Die Krabbe hat mehrere über den ganzen Körper verteilte Facettenaugen, einschließlich eines Photorezeptors am Schwanz. Das Krabbenauge kann als eine Matrix von Photorezeptoren mit einem direkt in der Nähe liegenden, integrierten neuronalen Netzwerk betrachtet werden. Dieses Netzwerk (Verarbeitungseinheit) reduziert die Redundanz des Datenstroms und konzentriert sich auf Merkmale innerhalb des Sichtfelds. Krabben können also überlebenswichtige Muster wie Kanten oder Bewegungen erkennen, während es für ihr Gehirn mit seinen begrenzten Fähigkeiten eher unmöglich ist, die Landschaft zu genießen.

Bild 1
Limulus polyphemus
© STMicroelectronics

Limulus polyphemus wird manchmal als lebendes Fossil bezeichnet, das sich durch eine hervorragende Robustheit gegenüber Umweltschwankungen auszeichnet, und genau das kann durch Technologie nachgeahmt werden: Wir können die Integration eines Mikrocontrollers mit Sensoren als Äquivalent der oben erwähnten sensorischen Struktur eines Tieres sehen, um ein zuverlässiges verteiltes KI-System aufzubauen.

Edge AI-Ansatz

Die klassische Architektur eines Edge-AI-Sensorsystems besteht aus einem Mikrocontroller (MCU), der die Daten von den angeschlossenen Sensoren erfasst und verarbeitet. Das bedeutet, dass Rechenzeit und Ressourcen einer MCU für die Ausführung eines Modells des maschinellen Lernens (ML) zugewiesen werden. Dieser Ansatz ist für bestimmte Anwendungsfälle nicht effizient, genau dann, wenn die Ausführung in Echtzeit eine wichtige Anforderung ist oder wenn der Stromverbrauch reduziert werden muss.

Bild 2
Standard versus dissipierter Edge-AI-Ansatz
© STMicroelectronics

Wie bereits erwähnt, ist es möglich, die Verarbeitungsstufe in den Sensor zu integrieren und die KI-Aufgaben dorthin zu verlegen. Das bedeutet, dass ein ML-Modell im Sensor ausgeführt wird und nur die Schlussfolgerung an die MCU übertragen wird. Das hat erhebliche Auswirkungen, denn die MCU wird von aufwändigen Rechenaufgaben entlastet, und wartet nur auf Ereignisse/externe Interrupts, so dass die MCU in einen Stromsparmodus übergehen kann, was den Stromverbrauch reduziert, oder ihre Ressourcen für andere Aufgaben nutzbar macht. Der von einem KI-fähigen Sensor erzeugte Datenstrom ist stark reduziert (nur Ereignisse), und auch der Datenstrom auf dem seriellen Bus wird verringert, wodurch die Störsignalemissionen sinken. Im Hinblick auf die Zuverlässigkeit des Gesamtsystems trägt diese Art der Parallelverarbeitung, bei der, der in der MCU und im Sensor, ausgeführte Code vereinfacht werden kann, zur Verringerung der Fehlerwahrscheinlichkeit bei.

Sensor mit Verarbeitungseinheit

Eine neue Bausteinkategorie namens »Intelligent Sensor Processing Unit« (ISPU) kombiniert eine Trägheitsmesseinheit (Beschleunigungsmesser + Gyroskop) mit einer eingebetteten Sensorverarbeitungseinheit in einem einzigen Gehäuse.

Bild 3
ISPU-Blockdiagramm
© STMicroelectronics

Die Verarbeitung im Sensor erfolgt durch einen programmierbaren RISC-Kern mit extrem niedrigem Stromverbrauch. Er verfügt über eine wählbare Taktfrequenz (5 oder 10 MHz), 32 kB Programmspeicher und 8 kB Datenspeicher. Es ist möglich, die internen Daten des Beschleunigungssensors und des Gyroskops sowie 6 Byte externe Daten von Sensoren zu verarbeiten, die über einen zusätzlichen I2C-Bus an eine ISPU angeschlossen sind.

Bild 5
Blockdiagramm des ISPU RISC-Kerns
© STMicroelectronics

Werkzeuge

Die Entwicklung von ISPU-Anwendungen wird durch die GCC-Compiler-Toolchain unterstützt, wobei detaillierte Kenntnisse der Sensorarchitektur vorausgesetzt werden. Es gibt aber noch eine weitere Option: »NanoEdgeAI Studio«, ein automatisiertes Machine-Learning-Design-Tool von STMicroelectronics. Einer der Hauptvorteile von NanoEdgeAI Studio besteht darin, dass kein ausgeprägter datenwissenschaftlicher Hintergrund erforderlich ist, um ein KI-Modell zu erstellen.

Bild 6
Automatisierte Entwicklungspipeline des NanoEdgeAI Studio
© STMicroelectronics

Das trägt zu einer radikalen Vereinfachung und Verkürzung der Design-Pipeline für Edge-AI-Lösungen bei und wird als eigenständige GUI-Anwendung angeboten, die Embedded-Entwickler ohne fundierte ML-Kenntnisse nutzen können. Es ist möglich, eine Binärdatei des Loggers für bestimmte Hardware-Konfigurationen zu erzeugen. Bei der Erstellung eines ausgewählten Modells findet die Anwendung eine optimierte Vorverarbeitungskette für die gegebenen Daten, wählt das beste KI-Modell und die Hyperparameter aus und führt das Lernen und Testen des Modells durch. Als Ergebnis der Benchmark-Phase wird eine Reihe von ML-Modellen vorgeschlagen, und es obliegt dem Entwickler, das vom Tool ermittelte leistungsstärkste Modell auszuwählen oder Alternativen zu testen.

Die folgenden ML-Anwendungsfälle (Modelle) werden unterstützt:

  • Anomalie-Erkennung, dynamisches Modell,
  • N-Klassen-Klassifikator, statisches Modell,
  • 1-Klassen-Klassifikator, statisches Modell,
  • Extrapolation, statisches Modell.

Das Tool ist für die Eingabe mehrerer Zeitreihen (Vektoren) von Sensoren wie MEMS, Spannung, Strom, Temperatur, Laufzeit oder anderen geeignet. Zu den Anwendungsbereichen gehören vorausschauende Wartung, Erkennung menschlicher Aktivitäten, medizinische Versorgung und Motorsteuerung.

Die grundlegende Datenstruktur für das Tool ist ein Signal mit einer definierten zeitlichen Länge. Die erwartete Größe und Abtastfrequenz des Signals sollten während des gesamten Projekts konstant sein. Ein Satz unabhängiger Signale (die zeitlich nicht benachbart sein müssen) bildet den Datensatz für eine bestimmte Klasse. Gemäß der Grundregel - eine Klasse, eine Datei - ist das Eingabeformat CSV (Textdatei), und die Eingaben können sowohl aus einer Datei als auch aus einem CSV-formatierten Datenstrom (Virtual Com Port) bereitgestellt werden.

Die generierten ML-Modelle können statisch oder dynamisch sein. Ein statisches Modell ist vortrainiert, während ein dynamisches Modell die Fähigkeit hat, auf einer Ziel-MCU zu lernen und sich an eine Umgebung anzupassen, da das Wissen inkrementell ist (statische Struktur im RAM, Backup/Restore ist möglich). Die Modelle basieren auf bekannten ML-Algorithmen. NEAI Studio gibt eine Bibliothek und dazugehörige Header-Dateien aus, die ein gegebenes ML-Modell implementieren. Die API ist vereinfacht, drei Funktionen - Init(), Learn(), Detect() - wenn das Modell dynamisch ist, zwei Funktionen - Init(), Detect() - bei einem statischen Modell. Es wird ANSI-C verwendet. Einer der wichtigsten Mehrwerte ist die Implementierungseffizienz, da der Platzbedarf der Bibliothek auf einige KB RAM- und FLASH-Speicher reduziert werden kann, während sie immer noch in der Lage ist, während der Laufzeit zu lernen. Eine Cortex-M-MCU-Architektur und Sensoren vom Typ ISPU werden unterstützt.

Beispiel aus dem Labor

Ein Beispielprojekt wurde erstellt, um die Fähigkeit von NEAI Studio zu demonstrieren, effiziente ML-Modelle in binärer Größe zu erstellen. Ziel des Projekts war es, Anomalien in einem tragbaren Ventilator zu erkennen, wobei der Nennzustand ein freier Lauf bei einer bestimmten Geschwindigkeit und der anormale Zustand ein verstopfter Luftstrom war. Die Spezifikationsdetails waren folgende:

Anwendungsfall: Erkennung von Anomalien (binärer Klassifikator), lernfähiges Modell für das Ziel,

  • MCU: STM32G476 (Cortex-M4, stromsparende MCU-Familie),
  • Sensor: ISM330ISN, FS = ±2g, angebracht an der Oberseite des Lüfters,
  • Sensor-Ausgangsdatenrate, ODR = 416Hz ,1/ODR = 2.4ms,
  • Signal = 128 Abtastungen ≈ 0,3s
Bild 7
Regulärer und abnormaler Zustand des Lüfters
© STMicroelectronics

Es war wichtig, mit der zeitlichen Länge des Signals den gesamten, erwarteten Bereich der verschiedenen zu überwachenden Phänomene abzudecken, z. B. die Schwingungsfrequenz des Lüftermotors sowie den mechanischen Resonanzfaktor.

Der Eingangsdatensatz bestand aus 30 Signalen, die das Schwingungsmuster eines freilaufenden Ventilators darstellen, und 30 Signalen, die das anormale Verhalten des durch ein Stück Papier verstopften Luftstroms abdecken. Der Eingangsdatensatz wurde mit einem speziellen Logger erfasst, der einen CSV-formatierten Ausgabestrom lieferte: printf()-Ausgabe, die an UART/VCP weitergeleitet wurde. Ein bereitgestellter Datensatz diente als Kontextdaten für die Modellerstellung und -prüfung, während die Lernphase auf einem Target oder Emulator als eine der Funktionen des Tools ausgeführt wurde. Die erste Aktion während der Laufzeit war die Lernphase, in der nur Nominalsignale bereitgestellt wurden und die Mindestanzahl von 20 Signalen für Lerniterationen zur Erfüllung einer bestimmten Modellleistung vom Tool vorgeschlagen wurde. Die Lernphase konnte jederzeit während der Laufzeit ausgelöst werden, um das Wissen zu erweitern.

Bild 7
Machine-Learning-Modellstruktur und Leistung
© STMicroelectronics

Es wurde ein Z-Score-Modell erstellt, das die Daten aus einer automatisch erstellten Vorverarbeitungspipeline erhielt. Die von der Modellbibliothek verwendeten Ressourcen waren sehr gering: 3,2 KB sowohl für den Arbeitsspeicher als auch für den Programmspeicher der IMU.

Die Fähigkeit des Sensors, Anomalien im Ventilator selbständig zu erkennen, ermöglichte es der MCU, die meiste Zeit der Laufzeit in einem stromsparenden Modus zu bleiben, was in der untenstehenden Grafik, die den Stromverbrauch über die Zeit zeigt, gut zu erkennen ist.

Bild 8
MCU-Stromverbrauchsdiagramm
© STMicroelectronics

Da der Sensorcode im flüchtigen Speicher abgelegt ist, zeigt der erste Teil der Kurve (bis zu 2s) das Hochladen des Programms (über den I2C-Bus) und die Initialisierung der Komponenten. Danach geht die MCU in den Stromsparmodus über und wacht nach einem externen Interrupt durch den Sensor auf, um ein Ereignis zu verarbeiten (Ende einer Lerniteration oder Erkennung einer Anomalie) und geht dann wieder in den Stromsparmodus über.


Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu STMicroelectronics GmbH

Weitere Artikel zu Künstliche Intelligenz (KI)