Ein Angebot von

KI im Einsatz: Deeply Neural Networking für Embedded Systeme

| Autor / Redakteur: Andrés Mlinar * / Sebastian Gerstl

Bild 1: Deep Feed-Forward Neural Network. Auch wenn Deep Neural Networks (DNNs) enorme Rechenkapazitäten verlangen, lassen Sie sich mit der richtigen Technik auch auf aktuellen Embedded Systemen nutzen - die richtige Middleware vorausgesetzt.
Bildergalerie: 1 Bild
Bild 1: Deep Feed-Forward Neural Network. Auch wenn Deep Neural Networks (DNNs) enorme Rechenkapazitäten verlangen, lassen Sie sich mit der richtigen Technik auch auf aktuellen Embedded Systemen nutzen - die richtige Middleware vorausgesetzt. (Bild: Embedded Trend GmbH)

Mit DNNs (Deep Neural Networks) lassen sich intelligente Strukturen schaffen, die auch in Embedded Systemen ganz neue Anwendungen eröffnen, um zum Beispiel intelligente Sensoren zu entwickeln. Der Beitrag beschreibt ein Verfahren, mit dem im DNN angelerntes Wissen auch im Embedded Bereich eingesetzt werden kann.

In den letzten Jahren sind besonders 'tiefe' Deep Neural Networks (DNNs) entstanden, die viele schwierige Probleme erfolgreich lösen. Dies eröffnet völlig neue Anwendungsbereiche. DNNs sind eine Lösung, wenn es eine große Datenmenge gibt, die das erwartete Ergebnis für eine bestimmte Eingabe anzeigt. DNNs können mit diesen Daten trainiert werden, um sinnvolle Antworten geben zu können, wenn sie mit neuen, noch nie da gewesenen Daten präsentiert werden.

Solche Strukturen wären auch im Embedded Bereich wünschenswert, um zum Beispiel intelligente Sensoren zu entwickeln. Dagegen spricht allerdings der immense Rechen- und Vernetzungsaufwand. Der Vortrag beschreibt ein Verfahren, mit dem im DNN angelerntes Wissen auch im Embedded Bereich eingesetzt werden kann, so dass mit handelsüblichen Prozessoren, z.B. Cortex M mit überschaubarem Speicher, DNN Anwendungen realisiert werden können. Dazu gehören die Erkennung komplexer grafische, akustischer oder physikalischer Strukturen, die einfach angelernt werden können.

Dieser Beitrag beschreibt eine Methode die es erlaubt, ein Deep Neural Network auf Embedded Systemen mit derzeit verfügbaren Prozessoren mit begrenzter Rechenleistung und begrenztem Speicherplatz einzusetzen.

Prinzip eines Deep Neural Networks

DNNs sind ein leistungsfähiger Rechenmechanismus, der sich an den allgemeinen Prinzipien von biologischen neuronalen Netzwerken in Gehirnen orientiert. Ein neuronales Netzwerk besteht aus einfacheren nichtlinearen Elementen, Neuronen genannt, die zu größeren Strukturen kombiniert werden. DNNs sind in Schichten von Neuronen organisiert. Jede Schicht enthält ein oder mehrere Neuronen, die mit anderen Neuronen auf derselben oder anderen Schichten verbunden sind. Typischerweise sind alle Eingänge zum Netzwerk mit der Eingangsschicht verbunden und der Ausgang des DNN kommt von den Neuronen in seiner Ausgangsschicht. Zwischen den neuronalen Ein- und Ausgangsschichten kann es keine, eine oder mehrere versteckte Schichten geben. Was ein künstliches neuronales Netz "tief" macht, ist die Verwendung mehrerer versteckter Schichten (Bild 1).

Es gibt verschiedene Arten von DNNs. Die einfachste Form von DNN ist ein Feed-Forward-Netzwerk, bei dem Informationen nur in eine Richtung fließen, vom Eingang zum Ausgang. In Computer Vision Faltungs-Neuronale Netze (CNN) sind üblich; diese sind eine spezielle Art von Feed-Forward Netzwerk, wo Schichten von Neuronen, die als Feature-Filter fungieren, über den Eingang gefaltet sind, hat sich gezeigt, dass dies die Leistung zu verbessern und den Speicherbedarf zu reduzieren. Recurrent Neural Networks (RNN) sind eine Klasse von neuronalen Netzen, in denen Neuronen Zyklen bilden; diese werden für die Verarbeitung von Sequenzen wie natürliche Sprache, Sprache oder Video verwendet.

Training eines Deep Neural Networks

Der Hauptvorteil von DNNs besteht darin, dass sie zur Lösung schwieriger Probleme eingesetzt werden können, die sich handwerklichen Lösungen entzogen haben. Dies liegt daran, dass DNNs nicht manuell programmiert werden, sondern ihre Parameterwerte anhand eines Beispiels lernen.

Dieser Prozess wird als überwachtes Lernen ('supervised Learning') bezeichnet. Der DNN wird mit vielen Beispielen von Eingabedaten vorgestellt, bei denen die Lösung bekannt ist. Dann werden die Werte im neuronalen Netz für jedes Beispiel schrittweise angepasst, so dass die Parameter das erwartete Ergebnis in jedem Schritt besser approximieren. Dieser Vorgang wird so oft wiederholt, bis das neuronale Netz in der Lage ist, gute Antworten auf die Trainingsdaten zu geben (siehe auch Bild 2). Ein solches Netzwerk kann dann auf neue und noch nie da gewesene Daten angewendet werden.

Dieser Lernprozess ist rechnerisch sehr anspruchsvoll. Dies geschieht in der Regel auf leistungsfähigen Rechnern mit spezieller Hardware. Die meisten der Trainingsschritte können sehr effizient in grafischen Verarbeitungseinheiten (GPUs) durchgeführt werden, die ursprünglich zur Beschleunigung von 3D-Grafiksoftware entwickelt wurden, da der Großteil der zugrunde liegenden mathematischen Operationen ähnlich ist: Matrix-Multiplikationen.

Entwicklungstools für Deep Neural Networks

Aktuell werden die meisten DNNs auf Servern in der Cloud oder mit speziellen Systemen eingesetzt. In dieser Hardware sind die Rechenleistung und der verfügbare Speicher reichlich vorhanden. Frühe DNN-Implementierungen haben mit diesen umfangreichen Ressourcen gerechnet. In der jüngeren KI-Forschung wurde festgestellt, dass es möglich war, mit kleineren DNNs ähnliche Ergebnisse zu erzielen. Zwei der effektivsten Wege, dies zu erreichen, sind neue Netzwerkarchitekturen und Netzwerkkompression. Die ersten Treiber dieser Schritte waren die Verbesserung der Leistung und die Senkung des Stromverbrauchs. Die gleichen Fortschritte öffnen die Tür zum Einsatz von DNNs in weniger leistungsfähiger Hardware, wie bei allgemeinen Embedded-Geräten.

Mehrere Frameworks für die Entwicklung und Bereitstellung von DNNs sind heute verfügbar. Einer der ersten war Caffe, entwickelt Yangqing Jia an der UC Berkeley. Google entwickelte auch ein eigenes Framework TensorFlow , und Microsoft ist mit einem eigenen Cognitive Toolkit dabei. Es gibt verschiedene andere Software-Frameworks, die bei der Erforschung, Entwicklung und Bereitstellung neuronaler Netze eingesetzt werden können.

Ein gemeinsames Merkmal dieser Frameworks ist ihre Abhängigkeit von einem Allzweckrechner mit einem Allzweck-Betriebssystem. Dies ist gut für Cloud-Anwendungen und auch mobil, schließt sie aber von der Verwendung in Embedded-Systemen aus, wo nur eine Bare-Metal-Umgebung oder ein RTOS zur Verfügung stehen. Ihre Computational Engines sind auch für CPUs und GPUs optimiert, die in Servern und Workstations eingesetzt werden.

Einsatz eines Deep Neural Networks in einem Embedded System

Ein üblicher Ansatz, um ein DNNs auf einem Embedded Device zu implementieren, war, die Daten an ein Cloud-basiertes Backend zu übermitteln, um das rechenintensive DNN auszuführen. Dieser Ansatz hat mehrere Probleme: Zum einen ist eine ständige schnelle Breitbandanbindung notwendig, was die Praktikabilität des Geräts einschränkt und die Kosten erhöht. Die Konnektivität ist nicht immer möglich, da das Gerät möglicherweise in Umgebungen ohne Netzwerkabdeckung betrieben werden muss. Die Leistungsanforderungen an das System, das eine Verbindung aufrecht erhalten muss, sind ebenfalls höher. Auch die Latenzzeit durch Kommunikation wird erhöht. Wahrscheinlich am wichtigsten ist, dass die Daten über das Netzwerk übertragen werden und in einem separaten System verwendet werden, was Fragen der Sicherheit, des Datenschutzes und des Vertrauens aufwirft.

Ein viel besserer Ansatz ist es, das neuronale Netzwerk direkt auf dem eingebetteten Gerät zu betreiben. Das neuronale Netz muss zunächst auf einem leistungsfähigen System entworfen und trainiert werden. Moderne DNN-Architekturen, die speziell auf die Reduzierung der Anzahl der Parameter zugeschnitten sind, sollten eingesetzt werden, um die notwendigen Rechen- und Speicheranforderungen an das Embedded-System zu reduzieren. Nachdem die DNN-Parameter trainiert wurden, werden weitere Arbeiten durchgeführt, um das Netzwerk mit verschiedenen Techniken zu komprimieren.

Wenn der DNN einsatzbereit ist, sollte die Implementierung auf dem Embedded System mit Vorsicht erfolgen. Es kann kein Standard-Framework verwendet werden, da diese auf Betriebssystemen, Bibliotheken und Basissoftware basieren, die auf dem Embedded-Gerät nicht verfügbar sind. Diese Implementierung sollte von allen unnötigen Softwareabhängigkeiten befreit werden, die während des Designs und der Schulung verwendet wurden. Von besonderer Bedeutung ist der Umgang mit dem Speicher, da eine dynamische Zuweisung großer Puffer weder erwünscht noch möglich ist. Die Berechnung sollte an die Fähigkeiten des verwendeten Chips angepasst werden, da die Leistungsunterschiede zwischen naivem Software-Loop-basiertem High-Level-Code und hochoptimiertem, handgefertigtem Assembler viele hundertfach sein können.

Fazit

DNNs sind ein neues leistungsstarkes Software-Tool, das immer mehr an Bedeutung gewinnt. Sie werden ausgiebig in der Cloud und auf leistungsfähigen mobilen Geräten eingesetzt, aber es besteht das Potenzial, sie auch im Massenmarkt für eingebettete Geräte einzusetzen. Mit den notwendigen Kenntnissen und Techniken ist es möglich, dieses Ziel zu erreichen.

Der Autor

Andrés Mlinar, Mitbegründer und CTO der Embedded Trend GmbH.
Andrés Mlinar, Mitbegründer und CTO der Embedded Trend GmbH. (Bild: Embedded Trend GmbH)

* Andrés Mlinar ist seit mehr als 15 Jahren in der Embedded-SW-Entwicklung tätig. Bislang hatte er sich auf die Gebiete Entwicklungs- werkzeuge, RTOS und Middleware, Treiberentwicklung und System-software spezialisiert. In den letzten Jahren lag sein Fokus immer deutlicher auf den Themen künstliche Intelligenz und maschinelles Lernen. 2017 wurde er Mitgründer der Embedded Trend GmbH & Co. KG.

Kommentar zu diesem Artikel abgeben
Es gibt auch ein EU Projekt welches sich mit DNN für Embedded Systems...  lesen
posted am 30.07.2018 um 15:05 von Unregistriert


Mitdiskutieren
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45419655 / KI)