3 Bewertungen

Hochleistungs-DSPs Turbo für neuronale Netze

Bild: iStock, Simfo
21.10.2016

Ein Convolutional Neuronal Network (CNN) ist ein auf Schichten basiertes System miteinander verbundener künstlicher Neuronen. CNNs kommen beispielsweise bei Muster- und Bilderkennung zum Einsatz. Eine DSP-Lösung (Digitaler Signalprozessor) kann die unterschiedlichste CNN-Anwendungen bei niedrigem Stromverbrauch beschleunigen.

Ein neuronales Netz besteht aus mehreren Schichten von Merkmalerkennenden Neuronen, die auf verschiedene Kombinationen von Eingaben aus vorgelagerten Schichten reagieren. Diese können so aufgebaut sein, dass die erste Schicht eine Reihe primitiver Muster in der Eingabe entdeckt, die zweite Schicht Muster von Mustern und die dritte Schicht entdeckt wiederum Muster dieser Muster und so weiter. Typische CNNs nutzen hierbei zwischen fünf und 25 verschiedene Schichten zur Mustererkennung. Die Verbindungen in einem neuronalen Netz haben numerische Gewichtungen, die während eines Lernprozesses angepasst werden, so dass das Netzwerk bei einem Muster oder Bild richtig reagiert. Im Zuge des Trainings wird mit Hilfe eines vorbereiteten Datensatzes eine große Palette von repräsentativen Eingabe-Mustern passende Ausgabe-Antworten zugeordnet. Die Gewichtungen für die Zwischen- und Endmerkmal-Neuronen werden mit allgemeinen iterativen Methoden bestimmt.

Im Rechenmodell des neuronalen Netzes laufen die Signale entlang des Axons (z. B. x0) und interagieren multiplikativ (z. B. w0 x0) mit den Dendriten von anderen Neuronen, und zwar abhängig von der synaptischen Stärke der Synapse (z. B. w0). Die Gewichtung der Synapse ist erlernbar und steuert den Einfluss der jeweiligen Neuronen. Die Dendriten leiten das Signal zum Zellkörper, wo sie alle summiert werden. Sobald die Endsumme einen bestimmten Grenzwert erreicht, sendet das Neuron einen Impuls entlang seines Axons. Mittels einer Rate-Code-Interpretation wird die Impulsrate des Neurons mit einer Aktivierungsfunktion f modelliert, und zwar entsprechend der Frequenz der Impulse auf dem Axon. Eine gängige Aktivierungsfunktion ist beispielsweise Sigmoid.

Ein CNN ist ein Sonderfall des eben beschriebenen neuronalen Netzes, das aus einer oder mehreren Faltungsschichten besteht und oftmals eine Subsampling-Schicht enthält. Diesen Schichten folgen eine oder mehrere voll vernetzte Schichten wie in einem normalen neuronalen Netz.

Komplexität minimieren

Bei einem typischen CNN für die Erkennung von Verkehrszeichen beispielsweise empfängt jedes Merkmal einer Schicht Eingaben von diversen Merkmalen aus der direkten Nachbarschaft der vorherigen Schicht. Diese heißen lokale Rezeptorenfelder. Mit Hilfe von lokalen Rezeptorenfeldern lassen sich elementare visuelle Merkmale, wie Kanten, Endpunkte und Ecken extrahieren. Diese visuellen Merkmale werden dann in den höheren Schichten kombiniert. Normalerweise sammelt in der Muster-/Bilderkennung ein manuell entwickeltes Merkmal-Extraktionswerkzeug die relevanten Informationen aus der Eingabe und sortiert irrelevante Veränderlichkeiten aus. Dem Extraktionswerkzeug folgt ein trainierbarer Klassifizierer, ein standardmäßiges neuronales Netz, das Merkmal-Vektoren in Klassen einteilt. In einem CNN übernehmen Faltungsschichten die Extraktion der Merkmale, diese muss man aber nicht manuell entwickeln. Die Filtergewichte werden während des Lernprozesses bestimmt. Die Faltungsschichten können lokale Merkmale extrahieren, weil sie die Rezeptorenfelder der verborgenen Schichten auf das lokale Umfeld begrenzen.

Durch ihre erweiterten Netzwerkarchitekturen lassen sich mit CNNs der Speicherplatzbedarf und Berechnungskomplexität gegenüber konventionellen Mustererkennungsmodellen minimieren. Zudem wird eine bessere Leistung bei Anwendungen erreicht, bei denen die Eingabe eine lokale Korrelation aufweist, wie bei Bildern und Sprache.

Im Vergleich zu anderen Erkennungsalgorithmen und sogar im Vergleich zu Menschen wird bei Muster- und Bilderkennungsanwendungen die bestmögliche fehlerfreie Erkennungsrate (CDR) mit CNNs erreicht. Einige Beispiele verdeutlichen, was mit CNNs möglich ist:

  • Eine CDR von 99,77 Prozent bei der MNIST-Datenbank mit handschriftlichen Ziffern

  • Eine CDR von 97,47 Prozent beim NORB-Datensatz mit 3D-Objekten

  • Eine CDR von 97,6 Prozent bei ~5.600 Bildern mit mehr als zehn Objekten

Durch die Kombination von mehreren und verschiedenen Schichten in einem CNN lassen sich komplexe Architekturen für Klassifizierungsprobleme aufbauen. Zu den gängigen Schichttypen gehören Faltungsschichten, Pooling-/Subsampling-Schichten, nichtlineare und voll vernetzte Schichten. Eine Faltungsoperation extrahiert verschiedene Merkmale aus der Eingabe.

Die erste Faltungsschicht extrahiert einfache Merkmale wie Kanten, Linien und Ecken. Höhere Schichten extrahieren komplexere Merkmale, wie eine bestimmte Form. Die Pooling-/Subsampling-Schicht reduziert die Auflösung der Merkmale, um sie robust gegen Rauschen und Verzerrungen zu machen. Die Eingabe wird dazu in nicht überlappende zweidimensionale Bereiche aufgeteilt. Es gibt zwei Pooling-Typen: Max- und Mittelwert. Beim Mittelwert-Pooling wird der Mittelwert der Werte im Bereich berechnet. Für das Max-Pooling wird der maximale Wert der vier Werte ausgewählt.

CNNs nutzen eine nichtlineare „Trigger"-Funktion, um eine eindeutige Identifizierung von wahrscheinlichen Merkmalen in jeder verborgenen Schicht zu signalisieren. Es gibt eine Vielfalt an spezifischen Funktionen, mit denen ein CNN eine nichtlineare Triggerung effizient implementieren kann. Zum Beispiel implementieren ReLUs (rectified linear units) die Funktion y=max(x, 0), so dass die Ein- und Ausgabe-Größen dieser Schicht gleich sind. ReLUs werden häufig genutzt, da mit ihnen das Netzwerk schneller trainiert werden kann, als mit anderen nichtlinearen Funktionen.

Die Endschichten eines CNN sind häufig voll vernetzte Schichten, die mathematisch eine Gewichtung der vorherigen Merkmal-Schicht aufsummieren. Sie zeigen die genaue Mischung der „Zutaten“, die ein spezifisches Zielausgabe-Ergebnis bilden. In einer voll vernetzten Schicht werden alle Elemente von allen Merkmalen der vorherigen Schicht genutzt, um jedes Element eines jeden Ausgang-Merkmals zu berechnen.

Beispiel: Verkehrszeichen-Erkennung

Ein Beispiel für den Einsatz eines CNN ist die German Traffic Sign Recognition Benchmark (GTSRB). Dieser Klassifikationswettbewerb mit mehreren Klassen einzelner Bilder wurde im Zuge der International Joint Conference on Neural Networks (IJCNN) 2011 durchgeführt. Er umfasste fast 52.000 Bilder von deutschen Verkehrszeichen in 43 verschiedenen Klassen. Die Größe der Bilder reichte von 15 x 15 bis 222 x 193. Auf der Basis des GTSRB-Datensatzes hat Cadence verschiedene Matlab-Algorithmen für die Erkennung von Verkehrszeichen entwickelt. Mit einem proprietären hierarchischen CNN-Ansatz konnte das Unternehmen eine bessere fehlerfreie Erkennungsrate erreichen als die bisherige Referenz.

Das erste CNN ermittelt, zu welcher von fünf Familien das jeweilige Verkehrszeichen gehört. Sobald die Zeichenfamilie erkannt wurde, bestimmt ein weiteres für die entsprechende Familie optimiertes CNN um welches Verkehrszeichen es sich handelt. Cadence hat mit diesem Algorithmus eine fehlerfreie Erkennungsrate von 99,58 Prozent erreicht (die bisher beste Rate bei der GTSRB). Cadence bietet einen neuen stromsparenden Hochleistungs-DSP an, der ideal für den Einsatz in embedded neuronalen Netzwerken ist.

DSP für Imaging- und Vision-Bearbeitung

Im Vergleich zu seinem Vorgänger erreicht der Tensilica Vision P6 DSP eine bis zu vierfach höhere MAC-Leistung (Multiply-Accumulate). Gegenüber kommerziell erhältlichen GPUs bietet der Vision P6 zudem die doppelte Bildwiederholrate bei einem deutlich niedrigeren Stromverbrauch in einem typischen neuronalen Netz.

Der Digital Signal Processor (DSP):

  • implementiert eine On-the-Fly-Datenkomprimierung, was die Speicher- und Bandbreite-Anforderungen für anspruchsvolle, voll vernetzte Schichten von neuronalen Netzen reduziert

  • enthält eine optionale 32-Wege SIMD Vektor-Gleitkommaeinheit, die den IEEE Standard mit halber Genauigkeit (FP16) unterstützt

  • bietet eine umfassende Unterstützung für Integer-, Festkomma- und Gleitkomma-Datentypen sowie eine fortschrittliche Entwicklungsumbebung mit einem bewährten C-Compiler mit Auto-Vectorizing

  • unterstützt OpenCV- und OpenVX-Bibliotheken, die eine schnelle High-Level-Migration von vorhandenen Imaging-/Vision-Anwendungen mit Unterstützung von mehr als 1.000 Bibliothek-Funktionen ermöglicht

Fazit

CNNs bieten die beste Leistung für Probleme der Muster-/Bilderkennung. Mit proprietären Algorithmen und CNN-Architekturen hat Cadence die bisher besten Ergebnisse in der Branche erreicht, wie das Beispiel der Verkehrszeichen-Erkennung verdeutlicht. Zudem ermöglicht diese Lösung eine Integration in echte Produkte mit einem reduzierten Energieverbrauch.

Bildergalerie

  • Ein neuronales Netz besteht aus mehreren Schichten von Merkmal-erkennenden Neuronen, die auf verschiedene Kombinationen von Eingaben aus vorgelagerten Schichten reagieren.

    Ein neuronales Netz besteht aus mehreren Schichten von Merkmal-erkennenden Neuronen, die auf verschiedene Kombinationen von Eingaben aus vorgelagerten Schichten reagieren.

    Bild: Glosser.ca, wikimedia

  • Verbindungen in einem neuronalen Netz haben numerische Gewichtungen, die während eines Lernprozesses angepasst werden.

    Verbindungen in einem neuronalen Netz haben numerische Gewichtungen, die während eines Lernprozesses angepasst werden.

    Bild: Cadence

Firmen zu diesem Artikel
Verwandte Artikel