Elektronik-Entwicklung KI auf Mikrocontrollern

Weniger Rechnungsleistung in der Anwendungsphase kommt bei der Ausführung von Algorithmen in der KI zunutze.
Weniger Rechnungsleistung in der Anwendungsphase kommt bei der Ausführung von Algorithmen in der KI zunutze.

Neuronale Netze benötigen in der Anwendungsphase viel weniger Rechenleistung als in der Lernphase. Diese Tatsache kann man sich zunutze machen, um Algorithmen der Künstlichen Intelligenz auf Mikrocontrollern auszuführen.

Technologien der Künstlichen Intelligenz (KI) wie Machine Learning und Deep Learning haben in den letzten Jahren eine stürmische Entwicklung genommen. Das Anwendungsspektrum erweitert sich rasant vom Cloud-Markt, der sich hauptsächlich auf den IT-Bereich konzentriert, zum Embedded-System-Markt, wie zum Beispiel Serviceroboter. Während für KI in der Cloud nahezu unbegrenzt Rechenleistung zur Verfügung steht, ist Embedded-KI durch eher ressourcenschwache Prozessoren und Controller gekennzeichnet, die miteinander und mit der Umgebung interagieren.

Embedded-Computer, die mit KI ausgestattet sind, können in Zukunft in Servicerobotern zum Einsatz kommen, die selbstständig Situationen beurteilen und Aktionen auslösen. Darüber hinaus ist zu erwarten, dass solche Embedded-Geräte mit KI nicht nur für Serviceroboter, sondern auch für andere Anwendungsgebiete und Dienste eingesetzt werden, die eine Interaktion mit Menschen erfordern. Der vorliegende Beitrag nimmt das Thema e-AI (Embedded ArtificiaI Intelligence) genauer unter die Lupe und stellt Ressourcen für die weitere Evaluierung von e-AI-Implementierungen im Rahmen der Renesas-Technologie für künstliche Intelligenz in Embedded-Geräten vor.

Bevor es darum geht, was eine e-AI-Lösung ausmacht, sollen jedoch einige Begriffe rund um das »e« für den eingebetteten Teil der e-AI geklärt werden, wobei Mikrocontroller und Mikroprozessoren von Renesas sowie deren Tools als Beispiel dienen. Im ersten Schritt müssen neue Funktionen eingeführt werden, um die Anwendung eines Deep-Learning-Vorgangs im Embedded-Gerät zu implementieren. In diesem speziellen Fall geschieht dies in Form von Plug-ins, die mit der integrierten Eclipse-basierten Open-Source-Entwicklungsumgebung »e² studio« kompatibel sind (Bild 1):

  • e-AI translator: Konvertiert das gelernte KI-Netzwerk von Machine-Learning- bzw. Deep-Learning Frameworks wie Caffe oder TensorFlow in die MCU/MPU-Entwicklungsumgebung.
  • e-AI checker: Basierend auf dem Ausgabe-Ergebnis des Translators werden die erforderlichen Größen von ROM/RAM und die Verarbeitungszeit der Inferenz-Ausführung auf der ausgewählten MCU/MPU berechnet.
  • e-AI importer: Verbindet ein neues KI-Framework, das auf Embedded-Systeme spezialisiert ist, Echtzeit-Performance bietet und auf ressourcenschonendes Design ausgelegt ist, mit der MCU/MPU-Entwicklungsumgebung.

Was ist eine e-AI-Lösung?

Jeder kann Artificial Intelligence relativ einfach nutzen, indem er das Entwicklungs-Framework »Caffe« der Universität Berkeley oder »TensorFlow« von Google verwendet. Obwohl das Spezialgebiet der KI je nach verwendetem Algorithmus variiert, ist für e-AI besonders ein Deep Neural Network (DNN) interessant. Hierbei handelt es sich um ein vielschichtiges Netzwerk, das sich bereits im Bereich der computergestützten Bildverarbeitung bewährt hat, jedoch in allen möglichen anderen Anwendungsbereichen eingesetzt werden kann. DNNs haben die Präzision der Ergebnisse drastisch verbessert.

Der Algorithmus wird mit Beispieldaten gefüttert (sog. Teacher Data) und die berechneten Ergebnisse werden dann mit den gewünschten Ergebnissen verglichen, sodass nach und nach die Parameter des Netzwerks verändert werden, damit der Fehler bei der Berechnung immer kleiner wird (Bild 2). Auf diese Weise wird die automatische Merkmalsextraktion immer präziser. DNNs sind auch deshalb von so hohem Interesse, weil zwar der Rechenaufwand für das Lernen sehr hoch ist, dafür aber die Anwendung des Gelernten (Inferenzphase) mit weitaus weniger Rechenleistung ausgeführt werden kann.

In der Lernphase müssen dem neuronalen Netz enorme Mengen an Lerndaten zugeführt werden, um die Koeffizienten zu berechnen. Da der Rechenauwand sehr hoch ist, werden dazu Server eingesetzt. Ist die Lernphase des neuronalen Netzes abgeschlossen und das Netz trainiert, dann werden die Koeffizienten auf das Zielsystem übertragen. Diese Asymmetrie der neuronalen Netze bringt es mit sich, dass in der Anwendungsphase weitaus weniger Rechenleistung erforderlich ist (Bild 3). Aus diesem Grund bezeichnet Renesas die Inferenzen, die in Embedded-Geräten berechnet werden, als »e-AI« (embedded-AI).

Abhängig von der Netzwerkstruktur entsteht das Ergebnis eines neuronalen Netzes durch Matrixberechnungen, ausgehend von der Eingangsschicht Schritt für Schritt in eine Richtung zur Ausgangsschicht.

Da die Koeffizienten nach dem Lernen alle konstant sind, können sie im ROM-Bereich abgelegt werden, sodass die KI auf einem Mikrocontroller mit geringer RAM-Kapazität ablaufen kann.

Die e-AI-Entwicklungsumgebung ist ein effektives Werkzeug, um ein Deep Neural Network nach dem Lernvorgang in eine MCU/MPU zu übertragen. Es gibt jedoch einige Schwierigkeiten bei der Implementierung der Lernergebnisse auf einer MCU/MPU:

  • Viele KI-Frameworks verwenden Phyton als Beschreibungssprache, während das Steuerungsprogramm der MCU in der Regel in C/C++ vorliegt.
  • Inkompatibilität mit der ROM/RAM-Speicherverwaltung einer MCU/MPU.

Die e-AI-Entwicklungsumgebung löst diese Probleme und ermöglicht es,
erlernte DNN-Ergebnisse auf einer MCU/MPU als C/C++-Projekt in e² studio zu implementieren.

Die Netzwerkstruktur, die Funktion und die erlernten Parameter werden durch den e-AI-Translator extrahiert und in eine für C/C++-Projekte verwendbare Form in e² studio umgewandelt (Bild 4).

Die kostenlose Version des Translators unterstützt Mikrocontroller mit vergleichsweise geringer ROM/RAM-Kapazität. Um die von der Bibliothek genutzte Kapazität zu komprimieren, werden nur Funktionen unterstützt, die häufig von neuronalen Netzwerken verwendet werden (siehe Tabelle). Neuronale Netzfunktionen, die nur zum Lernen und nicht zur Inferenz verwendet werden sind nicht verwendbar.

Ein Tutorial für den e-AI Translator hat Renesas auf einer »Gadget«-Website.