Technische Details von AIfES

Ressourcenschonende Programmierung

Die AIfES-Funktionen arbeiten ausschließlich mit Pointer-Arithmetik und deklarieren nur die nötigsten Variablen innerhalb einer Funktion. Das bedeutet, dass die Speicherbereiche für die Trainingsdaten und die Gewichte durch das Hauptprogramm bereitgestellt werden. AIfES-Funktionen greifen durch Übergabe eines Pointers auf diese Speicherbereiche zu ohne selbst große Ressourcen zu benötigen.

Plattformunabhängig und kompatibel

Durch die kompatible Programmierung mit der GCC ist eine Portierung auf nahezu alle Plattformen möglich. Dies ermöglicht die völlig autarke Integration inklusive Lernalgorithmus auf einem eingebetteten System. Je nach Kundenwunsch kann das IMS den Quellcode für die jeweilige Plattform kompilieren.

Für die Nutzung unter Windows wird beispielsweise der Quellcode als »Dynamic Link Library« (DLL) kompiliert, um sie so in Softwaretools wie z. B. LabVIEW oder MATLAB integrieren zu können. Besonders die direkte Anbindung an MATLAB ist hilfreich um z.B. verschiedene Datenvorverarbeitungen zu testen.

Auch die Integration in verschiedene Software-Entwicklungsumgebungen wie z. B. Visual Studio oder einer Python-IDE ist möglich. Das Hauptprogramm, welches die DLL einbindet, kann somit auch in einer anderen Programmiersprachen sein, wie z. B. C++, C#, Python, VB.NET, Java, …

Für die erste Entwicklung des individuellen KNN eignet sich der PC als Plattform besonders gut, um schnelle Berechnungen durchzuführen. Wenn die richtige Konfiguration erfolgt ist, kann die Portierung auf das eingebettete System erfolgen.

Eine kleine Auswahl von Plattformen und Mikrocontrollern, auf denen wir AIfES schon getestet haben:

  • Windows (DLL)
  • Raspberry Pi with Raspbian
  • Arduino UNO
  • ATMega32U4
  • STM32 F4 Series (ARM Cortex-M4)
Übersicht über die AIfES-Bibliothek
© Fraunhofer IMS

The AIfES library

Erstellen und Transferieren eines KNN mit AIfES
© Fraunhofer IMS

Creating and Transferring ANN with AIfES

Kompatibilität und Speicherzugriff bei AIfES
© Fraunhofer IMS

Compatibility and memory access with AIfES

Das künstliche neuronale Netz in AIfES

Augenblicklich verfügt AIfES über ein Feedforward-Netz, welches in nahezu allen Parametern konfigurierbar ist und auch tiefe Netzstrukturen ermöglicht. Das KNN wird nur mit einer Hauptfunktion konfiguriert und berechnet. Regressions- und Klassifizierungsaufgaben sind möglich. Der Netzaufbau kann natürlich an jeden Kundenwunsch angepasst werden.

Kurze Übersicht der Features:

  • Anzahl der Inputs und Outputs frei definierbar
  • Anzahl der Hidden-Layer und der Neuronen pro Layer ist frei definierbar
  • Unterschiedliche Aktivierungsfunktionen mit Zusatzparametern
    • Sigmoid, Softsign, ReLU, PReLU, …
  • Aktivierungsfunktionen nach Kundenwunsch möglich
© Fraunhofer IMS
neural network activation function AIfES
 

Vortrainiertes Modell oder Training auf dem eingebetteten System

AIfES bietet zwei Möglichkeiten ein neuronales Netz auf einem eingebetteten System zu integrieren:

Zunächst die klassische Variante, bei der das neuronale Netz auf einem hoch perfomanten System wie einem PC trainiert wird und dann auf das eingebettete System übertragen wird. Durch den Aufbau von AIfES kann diese Integration ohne Umwege stattfinden, da bei allen Plattformen der gleiche Quellcode genutzt wird und somit nur die Gewichte übertragen werden müssen.

Die zweite Variante ist das Training auf dem eingebetteten System selbst. Dies kann nützlich sein, wenn sich z. B. ein Sensor selbst kalibrieren soll oder ein nachtrainieren nötig ist. Letzteres kann z. B. für die Kompensation von fertigungsbedingten Systemabweichungen vorteilhaft sein. Ein weiterer Einsatzbereich wäre die Dezentralisierung der Intelligenz auf lernfähige eingebettete Systeme.

Lernalgorithmen

AIfES enthält bereits zwei unterschiedliche Lernalgorithmen, welche auch auf dem Mikrocontroller genutzt werden können:

Backpropagation:

Das Backpropagation-Lernverfahren wurde mit gängigen Einstellungsparametern implementiert. Hier eine kurze Übersicht der aktuellen Features:

  • Online- und Batch-Backpropagation
  • Momentum
  • Automatische globale Lernratenanpassung

Evolutionäres / genetisches Lernverfahren:

Da AIfES besonders für kleine bis mittelgroße künstliche neuronale Netze entwickelt wurde, eignet sich das evolutionäre Lernen besonders gut. Das Fraunhofer IMS hat ein eigenes Lernverfahren auf Basis eines evolutionären / genetischen Algorithmus entwickelt, welches selbstständig aus einem lokalen Minimum herausfinden kann. Durch die benötigte Population entsteht bei diesem Lernverfahren zwar ein erhöhter Speicherbedarf, aber praktische Versuche mit Sensordaten zeigten, dass dieser Algorithmus bei kleinen Netzen einen deutlichen Vorteil gegenüber dem klassischen Backpropagation-Verfahren haben kann. Nicht nur der Gesamtfehler war bei vielen Versuchen niedriger, sondern auch der Parametrierungsaufwand war deutlich geringer. Wo das Backpropagation-Verfahren sich z. B. empfindlich bei Änderungen der Lernrate zeigte, konnte das evolutionäre Verfahren bei einer ständig gleichbleibenden Konfiguration genutzt werden. Dies ist z. B. bei Anwendungen wie dem selbstständigen Lernen im Feld wichtig, wo keine manuellen Anpassungen durchgeführt werden können. Praktisches Beispiel für diese Art des Lernens ist unser Demonstrator für die Handschrifterkennung.

Der Algorithmus ist so implementiert, das auch eigene Fitness-Funktionen integriert werden können. Es handelt sich somit um einen universellen Optimierer.

Multicore

Das evolutionäre Lernverfahren kann auf z. B. dem PC und auf dem Raspberry Pi auch als Multicore-Variante genutzt werden um die Lerndauer zu reduzieren.

Technische Details

Plattformunabhängigkeit und spezielle Lernverfahren zeichnen AIfES aus.

Einsatzbereiche

Mensch-Technik-Interaktion, Industrie 4.0, Messtechnik, Medizintechnik, Machine-Learning-Algorithmen und Hardwarebeschleuniger.

Lizensierung

Wie kann ich AIfES nutzen und was bietet das Fraunhofer IMS neben AIfES? Über unsere Dienstleistungen können sie sich hier informieren.