Elektroniknet Logo

Diagnose auf realer Zielhardware

Neuronale Netze entwickeln und testen


Fortsetzung des Artikels von Teil 1

Der Praxistest

Um zu klären, ob sich die beschriebene Diagnosestrategie in der Praxis generell umsetzen lässt, wurden umfangreiche Tests mit herkömmlichen Development Boards für unterschiedliche KI-Anwendungen durchgeführt. Zwei der Anwendungen werden im Folgenden näher beschrieben.

Acoustic Scene Classification
Beim »Sensor Tile Kit« (STEVAL-STLCS01V1) von STMicroelectronics handelt es sich um ein Allround-Sensorsystem. Es ist unter anderem mit folgenden Bausteinen ausgestattet:
➔ STM32L476JGY Low Power MCU mit Arm Cortex-M4 FPU
➔ BlueNRG-MS-Bluetooth-Prozessor
➔ LSM6DSM 3D-Beschleunigungssensor
➔ Gyrometer
➔ Mikrofon
➔ Thermometer
➔ Barometer

In dem von ST bereitgestellten Funktionspaket »FP-AI-Sensing1« aus dem STM32Cube Softwareentwicklungssystem sind bereits KI-Anwendungen für das Sensor Tile vorimplementiert. Von diesen Beispielen wurde die Acoustic Scene Classification (ASC) ausgewählt. Hierbei werden anhand von Mikrofondaten mit einem neuronalen Netz die Umgebungsgeräusche analysiert und den Klassen »indoor«, »outdoor« und »vehicle« zugeordnet. Die Inputmatrix xHW ist ein umgeformtes Spektrogramm mit den Dimensionen dim(xHW) = (32,30,1) und die Outputmatrix yHW eine dreielementige Matrix dim(yHW) = (3,1) mit den jeweiligen Klassenwahrscheinlichkeiten. Ebenfalls befinden sich das Golden Model und das Silver Model des neuronalen Netzes für die ASC in dem FP-AI-Sensing1-Funktionspaket und sind in Python ausführbar.

Um mittels des Debuggers UDE geeignete Schnittstellen für den Datentransfer zu ermitteln, gilt es, zunächst das FP-AI-Sensing1-Funktionspaket mit der »STM32Cube IDE« zu erstellen.

Kernfunktion der Acoustic Scene Classification. An der Position des gewählten Breakpoints kann der Debugger UDE die Eingangsmatrix xHW und die dazu passende Ausgangsmatrix für die Diagnose aus der Hardware auslesen
Bild 3. Kernfunktion der Acoustic Scene Classification. An der Position des gewählten Breakpoints kann der Debugger UDE die Eingangsmatrix xHW und die dazu passende Ausgangsmatrix für die Diagnose aus der Hardware auslesen.
© TU Dresden

Anschließend wird das Elf-File (SENSING1.elf) mit dem UDE Multi Program Loader in den Flashspeicher des Sensor-Tiles programmiert und für die ASC-Diagnose ein Breakpoint in Zeile 184 des Moduls »asc_processing.c« gesetzt (Bild 3).

An dieser Codestelle lassen sich sowohl die Eingangsmatrix xHW als auch die dazu passende Ausgangsmatrix yHWin der Funktion »ASC_NN_RUN« über die Automatisierungsschnittstelle der UDE auslesen. Anschließend ist die Diagnoseschleife mit dem Analysesystem und den Referenzmodellen auszuführen.

Auswertediagramm von 100 Diagnoseschleifeniterationen des Sensor-Tile-Diagnosesystems
Bild 4. Auswertediagramm von 100 Diagnoseschleifeniterationen des Sensor-Tile-Diagnosesystems.
© TU Dresden

Das Diagramm in Bild 4 zeigt exemplarisch einen Ausschnitt von 100 Durchläufen der Diagnoseschleife. Es ist zu erkennen, dass die Outputmatrizen der Hardwarerealisierung und die des Silver Models stets übereinstimmen. Der gemittelte MSE beträgt µMSE = 3,3 ∙ 10-4 und ist somit in einem Rahmen, der aufgrund der Quantisierung zu erwarten ist.

Erkennen von Personen

Für das zweite Applikationsbeispiel der Diagnoseumgebung wurde ein auf der 32 Bit Low Power MCU »STM32H743VI« basierendes Development Board für Bildverarbeitungsalgorithmen von STMicroelectronics ausgewählt. Es enthält unter anderem
➔ 2 MB Flashspeicher
➔ Linse mit 2,8 mm Brennweite und F2.0-Aperatur
➔ RGB LED
➔ USB Computer Interface
➔ µSD Card Slot
Mit dem Kameramodul »OpenMV (Open Source Machine Vision) Cam H7« lassen sich unter anderem neuronale Netze für Computer-Vision-Anwendungen realisieren. Das OpenMV Github-Repository bietet bereits implementierte KI-Einstiegsbeispiele an. Bei den folgenden Testreihen liegt der Fokus auf dem Erkennen von Personen.

Über ein Klassifikationsnetz ordnet der Entwickler der Eingangsbildmatrix xHW eine zweielementige Wahrscheinlichkeitsmatrix yHW mit den Klassen »person« und »no person« zu. Als Inputmatrix verwendet das neuronale Netz für die Personenklassifikation ein Graustufenbild mit der Auflösung: dim(xHW) = (640,480). Analog zum Realisieren des Diagnosesystems für die ASC wird bei der OpenMV Cam ein Breakpoint an eine geeignete Stelle gesetzt, um die Eingangs- und Ausgangsmatrizen via UDE auszulesen. Auch hier bestätigt das Auswerten der Diagnoseschleife, dass die Ausgaben der OpenMV Cam und die Prädiktionen des Silver Models stets übereinstimmen.

Hardware-Set-up und Beispiel eines Eingabebildes für das Erkennen von Personen. Die Referenzmodelle und die Hardwareimplementierung erkannten sicher eine Person im Bild
Bild 5. Hardware-Set-up und Beispiel eines Eingabebildes für das Erkennen von Personen. Die Referenzmodelle und die Hardwareimplementierung erkannten sicher eine Person im Bild.
© TU Dresden

Bild 5 zeigt das Setup der Hardware und ein exemplarisch aufgenommenes Bild für die Personenerkennung. Sowohl die Prädiktion für das Bild mit dem Silver Model als auch die Prädiktion durch die Hardwareimplementierung auf dem STM32H743VI lieferte yHW = yRef,Silver = (person, no_person)T = (0.99, 0.16)T. Es wurde also in dem Fall eine Person im Kamerabild erkannt.

Mittels des entwickelten Diagnosesystems auf Basis des Debuggers UDE lässt sich für die Computer-Vision-Applikation nicht nur die Korrektheit der KI-Implementation überprüfen. Dank dem zusätzlichen Speichern der während der Diagnoseschleife ausgelesenen Eingangsmatrizen sind die Daten später beispielsweise für weitere Trainings- oder Validationsphasen verwendbar.

Einfache Diagnose möglich

Wie die untersuchten Applikationsbeispiele belegen, lassen sich mit geeigneten Tools für KI-basierte Embedded-Anwendungen durchaus effiziente Diagnosesysteme realisieren. Mit den Vergleichen zwischen den Prädiktionen der Zielhardware und den Referenzmodellen können Entwickler gewährleisten, dass die KI-Umsetzung korrekt implementiert ist. Hierbei realisiert der Debugger UDE das Diagnosesystem als schleifenbasiertes System-in-the-Loop. Zusätzliche Features wie die Datenentnahme sind flexibel über das Python-Interface in die Diagnoseschleife integrierbar.


Literatur

[1] Wunderlich I., Koch B. and Schonfeld S.: »An Overview of Arithmetic Adaptations for Inference of Convolutional Neural Networks on Re-Configurable Hardware«. The Sixth International Conference on Big Data, Small Data, Linked Data and Open Data. Lisbon. Portugal. 02/2020.
[2] LeNail, A.: »NN-SVG: Publication- Ready Neural Network Architecture Schematics«. Journal of Open Source Software. 2019.

 

Die Autoren

 

Jens Braunes von PLS
Jens Braunes von PLS.
© PLS Programmierbare Logik & Systeme

Jens Braunes war nach seinem Informatikabschluss an der TU Dresden einige Jahre als wissenschaftlicher Mitarbeiter tätig, ehe er 2005 zum Softwareteam von PLS Programmierbare Logik & Systeme wechselte. Maßgeblich an der Entwicklung der Universal Debug Engine beteiligt, ist Jens Braunes seit 2016 in dem Unternehmen zusätzlich für das Produktmanagement und das technische Marketing verantwortlich. Zudem ist er regelmäßig als Autor von Fachartikeln und als Referent auf Kongressen tätig.

Ilkay Wunderlich von PLS
Ilkay Wunderlich von PLS.
© PLS Programmierbare Logik & Systeme

Ilkay Wunderlich

schloss ein Studium der Informationssystemtechnik an der TU Dresden im Jahr 2017 ab. Seither arbeitet er als wissenschaftlicher Mitarbeiter am Lehrstuhl für VLSI-Entwurfssysteme, Diagnostik und Architektur an der Informatikfakultät der TU Dresden. Hier promoviert er seit 2019 im Themenfeld KI.


  1. Neuronale Netze entwickeln und testen
  2. Der Praxistest

Das könnte Sie auch interessieren

Verwandte Artikel

pls Programmierbare Logik & Systeme GmbH, TU Dresden