Um die Funktionsweise von Spiking Neural Networks verstehen zu können wird auf dieser Seite der Aufbau biologischen neuronalen Netzen erläutert und ein Vergleich zwischen üblichen KI-Neuronen und den SNN-Neuronen aufgezeigt.
Biologische neuronale Netze
Das biologische neuronale Netz, bekannt als Nervensystem dient in erster Linie der Weiterleitung von elektrischen Signalen. Es besteht aus geschätzt 86 Milliarden Nervenzellen, auch Neuronen genannt.
Die Dendriten des Neurons können von mehreren vorgeschalteten Neuronen Signale an den Zellkörper weiterleiten. Überschreiten eintreffende Signale den Schwellwert von 55mV wird ein Aktionspotential ausgelöst, welches über das Axon zu den Synapsen und somit Folgeneuronen weitergeleitet wird. Überschreitet das Signal das Aktionspotential nicht, so steigt die Membranspannung des Neurons an. So kann auch eine Akkumulation schwächerer Eingangssignale zu einer Reaktion führen. Die Dendriten des Neurons können von mehreren vorgeschalteten Neuronen Signale an den Zellkörper weiterleiten. Überschreiten eintreffende Signale den Schwellwert von 55mV wird ein Aktionspotential ausgelöst, welches über das Axon zu den Synapsen und somit Folgeneuronen weitergeleitet wird. Überschreitet das Signal das Aktionspotential nicht, so steigt die Membranspannung des Neurons an. So kann auch eine Akkumulation schwächerer Eingangssignale zu einer Reaktion führen.
Künstliche neuronale Netze
In der Datenwissenschaft werden Neuronen vereinfacht simuliert, um Datenverarbeitung mittels Neuronaler Netze zu betreiben. Neben dem klassischen KI-Neuronen Modell wird ein weiters Modell immer wichtiger.
KI-Neuronen Modell
Ein künstliches Neuron ist der Baustein aus dem künstliche Neuronale Netze zusammengesetzt werden. Das Verhalten eines Neurons lässt sich wie folgt definieren. Eingabewerte werden mit einem Modell spezifischen Bias, der Gewichtung eines Eingabepfades multipliziert und aufsummiert. Die Summe wird einer Aktivierungsfunktion übergeben, die Ausgabeverhalten des Neurons bestimmt. Mit der Menge von Eingangssignale xi und deren spezifischen Gewichtungen wi, kann der aktuelle Zustand des Neurons zi berechnet werden. Die Gewichtung gibt an, wie stark die Verbindung und Kommunikation zwischen zwei Neuronen ist. So sind klassische Neuronale Netze aufgebaut, welche wir bei der AI Remove bereits intensiv als Convolutions- und Faltungsnetze seit 2015 in zahlreichen Projekten und Produkten einsetzen.
SNN-Zellen
Interessant für uns ist die Etablierung einer neuartigen Künstliche Inteligenz, welche energieeffizient durch das Design einer neuartigen Neuronen Struktur aufgebaut ist. Diese Expertiese ist weltweit einzigartig und bildet die Grundlage für die Etablierung in der Praxis der Spiking Neural Network Architektur. Das leaky integrate-and fire Neuron ist eine nähre Approximation eines biologischen Neurons als die KNN-Neuronen. Der Aufbau ähnelt einem KI-Neuron, mit der Ausnahme, dass der Summand der Eingabewerte nicht einer Aktivierungsfunktion übergeben wird.
Eingabeinputs erhöhen das Membranpotenzial des Neurons. Überschreitet die Membrankapazität die Durchbruchsspannung des Neurons so wird ein Ausgabesignal erzeugt. So können Berechnungen mit Deep Learning direkt analog, auf beispielsweise einem FPGA oder einer neuromorphen Hardwarearchitektur durchgeführt werden. Dies Garantiert eine geringe Latenz sowie eine Ressourcen effizientere Berechnung als mit klassischen KNN-Modellen.
Biologische Neuron haben die Eigenschaft, die Membrankapazität abzubauen. Dieser Effekt der Leckage kann mit einem RC-Glied simuliert werden. Ein solches RC-Glied wird in der folgenden Abbildung dargestellt.
LIF-Neuronen unterscheiden sich zu LI-Neuron nur durch eine weiter Eigenschaft. Wird das interne Spannungspotenzial überschritten, erzeugt das Neuron ein Ausgangssignal, auch Spike genannt. Gleichzeitig sinkt das Membranpotential auf die Ruhespannung Vreset
Problematik klassische KNN Allgemein herrscht die Annahme, dass das herkömmliche Deep Learning in der Verarbeitung unserem Gehirn ähnelt. Jedoch sind die Faltungsmatrizen bzw. die Konvolutionen in ihrer Verarbeitung und Training aufgebaut sind wie die Reizströme erfolgen und Infromationen in unserem Gehirn entstehen und verarbeitet werden. Unsere neue Deep Learning Architektur, welche auf SNNs aufgebaut sind funktionieren nach dem selben biologischen Prinzip wie unser Gehirn. Durch die analoge Verarbeitungsnatur der Lif-Zellen, bedarf es keiner Zwischenspeicherung der Neuronenzustände im RAM welches die Verarbeitung immens beschleunigt. Weiterhin sind analoge Rechenarchitekturen wie FPGAs und neuromorpher Hardware wie dem Akida Brainchip viel energiesparender.
Diskrete Hardware-Architekturen wie der Von-Neumann-Architektur bedarf für die Speicherung der Daten Schaltungsnetze die auch im Ruhezustand Ressourcen verbrauchen. Analoge Systeme beispielsweise FPGAs verbrauchen durch die Programmierung der Hardware nur soviel Energie wie die genutzten Komponenten benötigen.
Input Kodierung
Die Übermittlung von Informationen in neuromorphen Systemen basiert auf Events. Diese Events sind asynchrone Nachrichten, die ein bestimmtes Ereignis beschreiben – bei einer Kamera etwa eine Helligkeitsänderung in einem bestimmten Pixel. Ein Event besteht typischerweise aus einem binären Puls, dessen Informationsgehalt nicht nur aus seinem eigentlichen Zahlenwert (0 oder 1) besteht, sondern Informationen werden auch durch die Relation einzelner Events zueinander übermittelt. Hierfür gibt es verschiedene Kodierungsverfahren, die sich grob in zwei Gruppen aufteilen lassen:
- Frequenzkodierung (engl. rate coding)
- Zeitkodierung (engl. temporal coding)
Der Vorteil der 1. Gruppe (Frequenzkodierung) besteht darin, dass diese relativ leicht auf die Funktionsweise von künstlichen neuronalen Netzen (etwa CNNs oder RNNs) angepasst werden können und dadurch eine Konvertierung von KNNs zu event-basierten Spiking Neural Networks möglich ist. Die Funktionsweise von Frequenzkodierung wird in Abbildung 1 erklärt.
Die 2. Gruppe (Zeitkodierung) kann hingegen Informationen sehr effizient (d.h. mit wenigen binären Pulsen) kodieren und eignet sich besonders für den Einsatz in nativen Spiking Neural Networks. Abbildung 2 zeigt das Prinzip einer Zeitkodierung.
Kodierung von Bildern als Eventströme
Die Konvertierung von digitalen Bildern in eventbasierte Daten ist möglich. Durch die Erweiterung der Bildinformation um eine zeitliche Dimension können die Methodiken der Zeit- und Frequenzkodierung auf die statischen Bildinformationen angewandt werden. Die erste Darstellung in der darunterliegenden Abbildung zeigt eine Frequenzkodierung eines Bildes des MNIST-Datensatzes. Die zweite Darstellung ist veranschaulicht die Kodierung des gleichen Bildes als Zeitkodierung. Die letzte Darstellung ist eine Kombination aus beiden Frequenztypen. Dieser Kodierungsstil heißt Poisson Kodierung.
Verlustfunktionen
Trainieren eines künstlichen neuronalen Netzes kann allgemein als ein Optimierungsproblem betrachtet werden, bei dem der berechnete Fehler minimiert werden sollen. Die Definition der Verlustfunktion ist abhängig von dem Klassifikationsproblem und der Label Darstellung. Die Berechnung der Verlustfunktion für Multi-klassen Modelle ist eine Kombination aus der Normalisierung des Modellausgabe mittels Softmax und der Akkumulierung der Verlustfunktion negative Log-Likelihood pro Klasse. Die negative Log-Likelyhood Funktion wird wie folgt berechnet:
Backpropagation
Eine erfolgreiche Netzwerkarchitektur, die RNN-Architektur dessen Neuronen Zustände sich mit der Zeit entwickeln, eigenen sich für Echtzeit-Mustererkennung über eine Zeitdimension. Ein Beispiel als Eingabeinput wäre ein Videofeed, welcher als Sequenz von Bildern dargestellt und aufeinander folgend verarbeitet werden. RNNs werden typischerweise mit Optimierungsalgorithmen angepasst. Diese passen die Gewichtungen der einzelnen Neuronen in Abhängigkeit zur Kostenfunktion des Netzwerkes an. Das Ziel der Optimierungsfunktion ist eine Annährung der lokalen Minima.
Backpropagation eines Multi-Klassen Modells
Die Backpropagation eines Multi-Klassen Modells kann wie folgt berechnet werden.
Zuerst wird mittels der Softmax-Aktivierungsfunktion die Wahrscheinlichkeit der Klassen für eine Modelliteration berechnet. Wobei der Input ein Vektor der die Berechnungen der Ausgabeschicht für eine Iteration beinhaltete.
Die errechnete Wahrscheinlichkeit wird der Kostenfunktion, hier die negative Log-Likelihood übergeben, um den Modellverlust zu bestimmen.
Das Verfahren der Backpropagation ist im Grunde genommen die Optimierung des Quotienten der Verlustveränderung zur Gewichtsänderung eines Neurons. Diese Abhängigkeit lässt sich auch als Kettenregel darstellen:
Für ein SNN-Neuron sind die Parameter wie folgt definiert. Die Verlusts Veränderung , die Relation der Ausgabespikes zu den vorangegangenen Eingabespikes , die Veränderung der Membranspannung , die Änderung des Ausgabestroms und die Ableitung des Neuronen Gewichts.
Backpropagation eines SNN Netwerks
Schwierigkeiten treten jedoch bei binären RNN- oder bei SNN-Architekturen auf. Sie sind schwer differenzierbar, denn die Kommunikation zwischen den Neuronen Schichten erfolgt über Folgen von Dirac-Stößen hier auch als Spikes bezeichnet.
In Spiking Neural Networks, ist der Eingabestrom eine Verkettung von abhängigen Eingangsspikes . Es bietet sich für die Berechnung der Differenzialgleichungen an, diese als eine Folge von Dirac Impulsen darzustellen.
Im Bezug zu einer LIF-Zelle lässt sich das Ausgabeverhalten als Sprungfunktion simulieren.
Da die Aktivierungsfunktion des SNN-Neurons eine Sprungfunktion ist, ist die Ableitung der Dirac Impuls. Der Dirac Impuls hat überall eine Steigung von 0 und an der Position 0 eine Steigung die unendlich ist. Für die Backpropagation bedeutet dies, dass der Gradient meistens 0 ist. Somit findet kein Lernfortschritt statt.
Optimierungsfunktionen in SNN-Netzwerke
Eine weiter Herausforderung ist die Anwendung von Optimierungsfunktionen wie dem Adam Optimizer. Die übliche Backpropagation ist, für diskrete Systeme (e.g. einem binären Computer) sehr rechen- und kommunikationsintensiv. Da bei einer von Neumann-Architektur die Neuronen Parameter, Gewichtung Feuerrate im Arbeitsspeicher zwischengelagert wird, bedarf es neben einem großen Arbeitsspeicher auch eine schnelle Übertragungsrate zwischen Recheneinheit und Arbeitsspeicher.
Ein Lösungsansatz, um das Tote Neuronen Problem zu beseitigen, und gleichzeitig die Rechenintensität zu senken ist die Verwendung des Surrogat Gradienten Verfahrens. Surrogate Gradient Descent Verfahren glätten den Gradienten der Sprungfunktion, um diesen differenzierbar zu machen. Mit Methode ist es möglich Optimierungsfunktionen für die SNN-Neuronen des Netzwerks anzuwenden.
SuperSpike als Surrogate Gradient Descent
SuperSpikeS ist ein drei Faktor Lernmethodik. Sie kombiniert mehrere Approximationen, um das Spiking Verhalten biologischer Neuronen zu simulieren. SuperSpike ist für supervised Learning von sequenziellen Daten konzipiert. In diesen Modellen können Neuronen in definierten Zeitintervallen zünden. SuperSpike minimiert die van-Rossum Entfernung zwischen Eingabespikes und Ausgabespikes einer Neuronen Schicht mittels eines Kernels . Die Kostenfunktion definiert als:
Sie kann diskret wie folgt berechnet werden:
Um den diskreten Loss zu erhalten, wird der Quotient aus abgeleiteten Spike-Folgen und Gewichtung des Neurons mit dem Kernel der SuperSpike-Funktion multipliziert.
Die Folge der Ströme einer SNN-Schicht , eines SNN-Netzwerkes wird diskret mit dieser Formel berechnet.
Der Verlauf der Membranspannung wird beim SuperSpike-Ansatz auch als Folge betrachtet und wird mit dieser Formel berechnet.
Die Parameter und geben den Leckage-Effekt des SNN-Neurons an und werden mittels den konstanten und mittels dieser Formeln berechnet.
Backpropagation Through Time
Die Backpropagation-Through-Time summiert alle Gradienten der einzelnen Recheniterationen auf. Der Verlust wird mit der berechneten Backpropagation aufsummiert und genutzt, um die Gewichte zu aktualisieren.
Die Gewichtung wird bei jedem Zeitschritt angewandt, somit wird auch bei jedem Zeitschritt ein Verlust berechnet. Der Einfluss der Gewichtung auf aktuelle und historische Verluste wird akkumuliert, um den globalen Gradienten zu bestimmen.
Convolution Layer
Ein Convolutional Layer besteht aus einem Filter und einer Feature Map. Die FeatureMap, auch bekannt als Kernel oder Filter fungiert als Detektor, der sich über die rezeptiven Felder des Bildes bewegt und prüft, ob das Feature vorhanden ist. Die namensgebende Faltung, englisch: Convolution ist ein Verfahren, in welchem die Dimensionen der
Eingabedaten mit einer kleinen dimensionierten Matrix gefaltet werden. Bei Farbbildern
werden die Farbkanäle einzeln betrachtet, gefaltet und akkumuliert.
Als allgemeingültige Formel kann die Funktionalität einer zweidimensionalen Convolution-Layer 𝐶(𝑥, 𝑦) so definiert werden. Das Ergebnis der Faltung wird mit C bezeichnet,
der Filter mit 𝐹 und die Eingabe mit 𝐼.
Der Kernel iteriert über die Eingabedaten, führt jeweils eine Konvolution durch und speichert den Wert in der resultierenden Feature-Map ab. Durch diesen Vorgang können lokale Pixel-Abhängigkeiten, räumliche Features erkannt und erfasst werden. Der Convolution-Prozess ist in der nächsten Abbildung für ein RGB-Bild zur Veranschaulichung des Prozesses abgebildet.
Pooling Layer
Eine Pooling Layer ist ein weiterer Bestandteil eines CNN. Ihre Aufgabe besteht darin,
die von den Faltungsschichten gesammelten Informationen zu vereinfachen. In Abbildung 19 Max Pooling für ein 2×2 wird das Max Pooling für ein 2×2 Fenster gezeigt.
Das Early-Stopping Verfahren
Beim Training von KI-Modellen kommt es darauf an, das Training zum richtigen Zeitpunkt zu beenden. In der nächsten Abbildung wird das Prinzip verdeutlicht. Bei fallenden Trainings- und Validierungskostenfunktionen wird das Modell weitertrainiert, da es noch
nicht vollständig angepasst ist. Steigt die Validierungskostenfunktionen an, wird das Modell an die Trainingsdaten überangepasst. Um das zu vermeiden, wird das Training des
Modells frühzeitig beendet.
KI-Architektur
Im Rahmen des Projekts wurden zunächst verschiedene Frameworks zur Entwicklung
von Spiking Neural Networks untersucht, da diese einen direkten Einfluss auf die möglichen SNN-Modelle haben. Erste Tests mit Nengo, PyNN und BindsNET wurden auf
Grund fehlender Funktionalität oder komplexer Erweiterbarkeit/Integration wieder eingestellt. Letztendlich wurde TRAC-AI in Kombination mit AI-Remove-Datamodul als Framework verwendet,
da diese ausreichende Funktionalität, schnelle Ergebnisse und eine einfache Integration
von Event-Kamera-Daten versprachen.
Die TRAC-AI baut auf der bestehende KI-Lösung PyTorch auf und
erweitert diese um neuromorphe KI-Komponenten. Neben SNN-Neuronen bietet TRAC-AI
Surrogant Gradient Decent Methoden wie SuperSpike an. Auch gibt es schon vorgefertigte KI-Modelle, die für bestehende Datensätze zugeschneidert sind. Durch den modularen Aufbau der KI-Komponenten ist es möglich, PyTorch eigene KI-Schichten wie beispielsweise die Convlution Layer oder Pooling Layer mit TRAC-AI eigenem LIF-Layer zu
verknüpfen.
Ein weiteres Entscheidungskriterium ist die Performance bei größeren SNN-Netzwerken.
Wie in der nächsten Abbildung Benchmark verschiedener zu erkennen ist, hat TRAC-AI die schnellste
Berechnungszeit größerer SNN-Netzwerke im Vergleich zu anderen SNN-Simulationsbibliotheken.
AI-Remove-Datamodul bietet neben eventbasierten Datensätzen auch Event-Transformationsfunktionen an. Eine weiter Funktionalität ist der Datensatz-Wrapper, welcher die Möglichkeit
bietet, eigne DVS-Aufnahmen als Datensatz aufzubereiten. AI-Remove-Datamodul liefert auch Datensatz-Funktionalität, größere Aufnahmen in kleine Segmente zu schneiden. So kann der Arbeitsspeicher gebrauch minimiert werden, da die Größe der Daten-Batches reduziert ist.
Pytorch Lightning vereinfacht die Entwicklung von KI-Modellen. Es übernimmt das
Tracking von Hyperparameter und Modellparametern und automatisiert Prozesse, wie die
Backpropagation oder das Early-Stopping.
Gesten-Klassifikator
Der in dieser Arbeit verwendete Datensatz wurde von IBM erstellt und als Entwicklungswerkzeug Open-Source zur Verfügung gestellt. Für diesen Datensatz wurden elf verschiedene Körperbewegungen unter verschieden Lichtbedingungen mit einer DVS-Kamera aufgenommen und jeweils mit einem Target-Label versehen. Diese Label kann
Werte zwischen eins und elf haben.
Das aufgenommene Videoformat ist 128𝑥128 Pixel. Die Videodauer beträgt bis zu vier
Sekunden.
Die Videos sind mit einem Label-Wert zwischen eins und elf versehen, entsprechend der
Bewegungsart. Die Bewegung und der dazugehörige Label-Wert sind in der folgenden Tabelle
dargestellt.
In der folgenden Abbildung sind Ausschnitte der DVS-Aufnahmen jeder Klasse abgebildet. In jedem Bild sind einzigartige Pixelcluster vorhanden. Dies
hat den Effekt, dass für die Klassifizierung der Videos es ausreicht, nur die räumlichen
Pixel-Konstellationen zu analysieren. So der Datensatz auch mittels eines Feed Forward
System klassifiziert werden.
Modelle
Ein Feed Forward System (FFS) beschreibt ein Neuronale Netzwerkarchitektur dessen
Neuronen Schichten die Berechnungen nur in eine Richtung propagieren. Sie können nur
räumliche Features eines Bildes berechnen. Dem gegenüber stehen Recurrent Neuronal
Networks (RNN). Durch spezielle Speicher-Layers hat das RNN-Modell die Eigenschaft
berechnete räumliche Features zwischenzuspeichern, um sie mit den Features des Folgebildes zu vergleichen.
Feed Forward Systeme sind im Vergleich zu Wiederkehrenden Neuronalen Netze, Ressourcen schonender, können aber keine zeitliche Relation erfassen.
Feed Forward System
Die FFS-Architektur wurde von der Publikation Tuning Convolutional Spiking Neural
Network With Biologically Plausible Reward Propagation inspiriert. Der Aufbau des
Feed Forward System wurde in dieser Arbeit implementiert und besteht aus neun Schichten. Die erste Ebene ist eine Convolution-Layer, welche den Eingabestrom Bild für Bild
verarbeitet und weiterleitet. Jede Convolution-Layer ist mit einer LIF-Layer und einer
Pooling-Layer verknüpft. Diese werden im Folgenden als SC-Zellen bezeichnet. Der LIFLayer dient als Filter die Daten nur bei Überschreitung der Durchbruchsspannung weiterleitet. Die Pooling-Layer reduziert die Bilddimensionen.
Die ersten sechs Schichten bestehen aus zwei SC-Zellen welche zu Featur-Detektion. Die
Entscheidungslogik des Modells ist in den letzten drei Layer integriert. Alle Ausgabekanäle der zweiten SC-Zelle werden mit einem Fully-Connected-Layer, auch FC-Layer bezeichnet verknüpft, die mit der letzten LIF-Schicht verbunden ist. Die Ausgabeschicht
des Systems besteht aus einer LI-Layer, die zur Akkumulierung der Netzwerkergebnisse
dient.
Recurrent Neural Network
RNN-Netze haben die Eigenschaft, Modellberechnungen in Hidden-States zwischenzuspeichern, um sie mit Folgeberechnungen mit einfließen zu lassen.
Um die Eigenschaft der Feature-Speicherung für die Analyse der sequenziellen Daten zu
nutzen, wurden die SC-Zellen zu LSC-Zellen modifiziert.
Die in dieser Arbeit als LSC-Zelle bezeichnete Kombination aus Neuronen-Layern beinhaltet als erste Ebene eine Konvolutionsschicht zur Feature-Detektion. Die errechnete
Ausgabe wird an einer LSNN-Layer übergeben. Diese Ebene speichert Ausgaben als
Hidden-State um sie anschließend mit nachfolgenden Berechnungen zu kombinieren. Das
resultierende Ergebnis wird durch eine LIF-Zelle gefiltert und weitergereicht.
Die Konzeptionierung der RCSNN-Modellarchitektur wurde an die FFS-Architektur angelehnt, um eine Vergleichbarkeit zu ermöglichen. Wie beim Feed Forward System, werden zunächst 2 LSC-Zellen in Reihe geschalten. Anschließend werden über ein FCSchicht die Netzwerkergebnisse mittels LIF-Layer gefiltert, um die Netzwerkergebnisse
in einer LI-Zelle zu akkumulieren.
Arbeitsteilung der SNN und CNN
In der konzeptionierten Feed-Forward-Architektur CSNN, werden Konvolutionsschichten zur Feature-Detection genutzt. Mittels Spiking-Zellen, den LIF-Zellen werden die resultiernden Features jeder Konvolutionsschicht bewertet und weitergeleitet.
In der RCSNN-Modellarchitektur übernehmen die Spiking-Zellen eine weitere Aufgabe.
Das Speichern und kombinieren der Convolution-Layer-Ergebnisse.
Trainingsalgorithmus
In diesem Abschnitt wird der eigenständig konzeptionierte Trainingsablauf der Deep
Learning Modelle dargestellt.
Der Input der KI-Modelle ist ein mehrdimensionaler Pytorch Tensor. Dieser besteht aus
einer Batch Dimension, einer Zeitdimension und drei Bilddimensionen. In der Zeitdimension sind alle Bilder eines Videosamples vorhanden. Über diese Dimension wird iteriert.
Jedes Bild wird entsprechend der Auswahl Zeit- oder Frequenzkodiert.
Das gewählte Modell verarbeitet den kodierten Input und gibt ein Array mit den resultierenden Netzwerkergebnissen. Die Dimensionen des Ausgabe-Arrays hängen von der Anzahl an Labels und der Batchgröße ab. Die Kostenrechnung der Modelliteration ist eine
Log-Softmax-Funktion. Die KNN-Ergebnisse werden mit den tatsächlichen GTD-Labels
verglichen. Mittels der Kostenfunktion wird die Differenz zwischen berechneten und
wirklichen Labeln bewertet und letztendlich zur BP des Modells verwendet.
Zur Modelloptimierung wurde der Adam-Optimizer verwendet.
Die Anpassung der Neuronengewichte wird von der Pytorch Lightning Bibliothek automatisiert übernommen.
Backpropagation
In dieser Arbeit wurden zwei verschiedene Backpropagation verfahren verwendet. Das
erste Verfahren ist die Approximation der Heaviside-Funktion in Kombination mit der
Backpropagation-thourgh-time.
Um das Dead-Neuron-Problem zu umgehen, wird die Sprungfunktion 𝜃(𝑥) in
dieser Arbeit mit folgenden Funktionen approximiert:
Als zweites Modelloptimierungsverfahren wurde das Surrogate Gradient Descent-Verfahren SuperSpike genutzt.
Kombination des DVS-Recorders und der KI-Software IAR
Wie schon beschrieben wurde, können DVS-Kameradaten mit SNN-Netzwerken mit
einer hohen Genauigkeit klassifiziert werden. Im weiteren Verlauf werden DVS-Aufnahmen von Bewegungsabläufen erstellt und als Ground-Truth-Daten aufgearbeitet. Dieser
eigen erstellte Datensatz dient als Grundlage zur Evaluierung künftiger SNN-Modelle.
Ein wichtiger Teil der Arbeit war die Konzeptionierung einer Softwarearchitektur, welche es ermöglicht verschiedene Kameratypen und unterschiedlichen KI-Netzwerken modular zu verbinden und zu testen.
Konzeptionierung der Softwarestruktur
Um die Modularität zu gewährleisten, wurde die Architektur in drei Hauptteile strukturiert. Ein Recorder Skript nimmt DVS-Videodaten auf und speichert die Aufnahmen in
einer definierten Ordnerstruktur ab. Momentan wurden die Videodaten mittels Python
Skript in Groundtruthdaten umgewandelt. Diese Aufgabe soll in Zukunft die Software
der AI Remove, das IAR mit dem Modul “Annotationtool Eventcams” übernehmen. Das KI-Modul kümmert sich um das Training, Evaluierung und das Speichern
der Ausgabeergebnisse. Die GTD-Daten werden aus einer Ordnerstruktur in das KI-Modul geladen, transformiert und bei Bedarf als transformierte Cache Dateien wieder in die
Ordnerstruktur abgespeichert.
Da die Schnittstellen definierte Ordnerstrukturen im Explorer sind, können Kameraspezifische Recorder Skripte erstellt werden, die auf die Infrastruktur zugreifen können.
Datenaufnahme
Die Videodatenaufnahme erfolgte in den Firmenräumen der AI Remove. Es
wurde ein Use Case für die Bewegungsanalyse gewählt. Dieser ist das Reinstellen und
Entnehmen von Kisten aus einem Regal in einem Einkaufsladen auf drei verschiedenen
Ebenen.
Aufnahme eines eventbasierten Datensatzes
Für die Datenaufnahme wurden mehrere allgemeine Anforderungen festgelegt, die berücksichtigt wurden.
• Perspektiven
• Aufnahmedauer
• Bewegungsablauf
Die Aufnahmen wurden aus sechs verschiedenen vertikalen und horizontalen Positionen erstellt.
In jeder Position wurde berücksichtigt, die Kiste und die Person vollständig zu erfassen. Hierzu wurde der Kamerawinkel stehts so ausgerichtet, dass die Bewegung
stehts, zentriert aufgenommen wird. Wie zu sehen ist, ist es wichtig eine Bewegungsaktion von allen Vertikalen Richtungen aufzunehmen. Da es sich in dem Use Case um das Entnehmen und
Reinstellen von Kisten in ein Regal handelt, kann von der Regalseite kein Video aus
aufgenommen werden. So wurde eine 90° linke und rechte Position von der Aktion
sowie einer Frontalansicht gewählt.
Für die horizontale Ausrichtung wurden zwei Höhen gewählt. Die Kamera wurde auf die
Höhe zwei Meter und zwei Meter fünfzig von Grund aufgestellt.
Aus drei verschieden Regaleben wurden Kisten entnommen und wieder reingestellt.
Bewegungsablauf Allgemein!
Jede Aufnahme hatte einen fest definierten Ablauf. Aus einer stehenden Ruheposition
begibt sich der Akteur an das Regal, greift eine Kiste und zieht dieser heraus. Anschließend stellt er die Kiste auf dem Boden ab und begibt sich wieder in die stehende Ruheposition
Der Akteur bewegt sich aus seiner stehenden Ruheposition zu der auf dem Boden ruhende
Kiste, hebt diese auf und stellt sie in das Regal zurück. Anschließend kehrt er wieder in
eine stehende Ruhehaltung zurück.
Kundenüberwachung -> Tracking Einkaufen
Arbeiter -> Regale einladen Verschieben
Versicherung -> Unfallüberwachung
Dynamic Vision Sensor Recorder
Der CeleX-5 Sensor ist die neuste Eventbasierte Kamera vom chinesischen Hersteller
CelePixel. Die Firma produziert multiple Sensortechnologien mit dem Fokus Automatisiertes Fahren. Die CeleX-5 Kamera ist ihre leistungsstärkste DVS-Kamera (Dynamic
Vision Sensor) mit einer erstaunlichen Reaktionszeit von 5 Mikro Sekunden.
CelePixel liefert ein auf C++ basierendes Softwareinterface und einem Demonstrationsprogramm. Mit diesem Tool können alle Funktion der Kamera ausprobiert und getestet
werden. Die Wahl der Aufnahmeparameter wurde so vereinfacht.
Datenformat
Die CeleX-5 Kamera bietet fünf verschiedene Aufnahmeformate. Die Formate sind in
Abbildung 30 zusammengefasst. Der Event with in-pixel-time stamp Modus erfasst die
räumlichen Dimensionen des auftretenden Events und speichert den Start und das Ende
der Pixelerregung ab. Der grey-value with off-pixel-time stamp Modus speichert neben
den räumlichen Dimensionen und dem Ende einer Pixelerregung auch die durch den
DVS-Sensor erfasste Helligkeit als Graustufenwert ab. Die Modi time-surface-frame und
full-frame speichern zyklisch alle Sensor-Pixel ab. Dieses Verhalten ist für eine sparsame
Datenverarbeitung nicht erwünscht. Somit wurde nur aus den Modi die Event-Datenströmen als Output haben ein Format gewählt.
Für diese Arbeit wurde das off-pixel-time stamp Format der Kamera gewählt. Dieses Format speichert die zeitliche und räumliche Dimension eines auftretenden Events.
In der nächsten Abbildung ist ein konvertiertes DVS-Bild welches im off-pixel-time stamp Modus
aufgenommen wurde zu sehen. Die linke Person ist kaum zu erkennen, da sie sich weniger bewegt wie die rechte Person. Da die DVS-Daten zu Binär-Matrizen konvertiert
werden, um sie sequenziell in das SNN-Netzwerk einzulesen, reichen die Informationen
der räumlichen Koordinaten und der Austrittszeitpunkt der Pixelveränderung aus.
Zeile [px], Spalte[px], Austrittszeitpunkt [µs]
Groundtruth Daten AI-Remove-Datamodul
In diesem Kapitel wird die DVS-Datenaufnahme beschrieben und die Struktur der Datenverarbeitung definiert.
Mittels der Celepixel-API wurde ein Aufnahme Skript implementiert, welches die Aufnahme der DVS-Videos vereinfacht. Der Nutzer kann Kameraspezifische Parameter wie
den Aufnahmemodus auswählen, die Dauer der Aufnahme bestimmen und die Ordnerstruktur sowie den Namen der Aufnahme spezifizieren. Die Aufnahmen werden als
Celepixel proprietäres Binärformat abgespeichert, um eine maximale Performanz der
Software zu gewährleisten.
Die Binärdaten werden formatiert, als GTDs aufbereitet und für die Verarbeitung im KI-Modell augmentiert.
Als Datenschnittstelle für die weitere Verarbeitung wurde das CSV-Format gewählt. Für
die Entwicklung ist das Abspeichern der Events als Klartext wichtig. Ist jedoch keine
performante Lösung. Der Speicherverbrauch einer 8 Sekunden Aufnahme ist im Binärformat 40 Mbits groß, als CSV-Datei sind es 200 Mbits.
In jeder Zeile wird ein Event abgespeichert. In den ersten zwei Spalten sind die Dimensionen des DVS-Sensors (𝑌/𝑋) abgespeichert. In der dritten Spalte wird das Auftreten
des Events in Millisekunden abgespeichert.
Das CSV-Format bietet sich an zur Analyse spezifischer Daten an und erleichtert das
Debugging. Eine performantere Alternative ist das Numpy Datenformat.
Jede Aufzeichnung wurde in eine Numpy Datei konvertiert und mit einem Label versehen, welches die Bewegungsinformation, Kiste entnehmen, Kiste reinstellen beinhaltet.
Transformation in einzelne Bildmatrizen
Ein DVS-Video ist eine Liste aller aufgenommen Events. Die
Dateneinspeisung in das KI-Modell sieht vor, das DVS-Video als Folge von Bildern zu
verarbeiten. Durch die Separierung in Frames, können räumliche Features mittels
den Convolutions-Layern erfasst werden.
Mittels der AI-Remove-Datamodul Bibliothek werden die DVS-Daten in binäre Matrizen transformiert.
Diese Binär-Matrizen beinhalten alle Bildinformationen, die innerhalb eines definierten
Zeitintervalls aufgenommen wurden. Bei Berücksichtigung aller Pixelkanäle der CeleX
5 Kamera, würde die transformierte Matrix die Dimensionen 1280 × 800 haben.
Der Eingabestrom in das Netzwerk ist eine Sequenz dieser Matrizen. Da eine Matrix
eine Momentaufnahme aller Sensordimensionen für ein definiertes Zeitintervall ist,
werden sie in dieser Arbeit auch als Bilder oder Frames betitelt.
Schneiden der Aufnahmen
Für die Verarbeitung von Videodaten ist die Momentaufnahme, eines einzelnen Bildes
zweitrangig. Viel interessanter ist die Analyse der Bewegungen. Bewegungen können
durch den Vergleich von Bilderfolgen erfasst werden.
In der darunterliegenden Abbildung wird dies verdeutlicht. Bild (a) wird mit dem Timestamp 𝑡 versehen und
Bild (b) mit dem Timestamp 𝑡 + 1. Beim Vergleich der Pixel beider Bilder, erhält man
das Displacement Field 𝐹. Das Displacement Field enthält die Informationen über die
Richtungsvektoren, welche durch die Relation der Bilder 𝐵𝑡 und 𝐵𝑡+1 entstehen.
𝐹(𝑥, 𝑦) = (∆𝑥, ∆𝑦)
𝐵𝑡+1(𝑥 + ∆𝑥, 𝑦 + ∆𝑦) = 𝐵(𝑥, 𝑦)
Das Displacement Field für den Bogenschützen ist in folgender Abbildung dargestellt. Jeder Blau Pfeil
gibt einen Richtungsvektor an. Das Displacement Field kann für das nächste Bild wie
folgt berechnet werden. Je größer das Delta zwischen den Bildern, desto signifikanter ist der Richtungsvektor.
Für die Implementierung des DVS-Klassifikators bedeutet dies, die GTD entsprechend
aufzubereiten. Die Abtastrate des DVS-Sensors ist im Millionenbereich pro Sekunde.
Dementsprechend entsteht viel redundantes Videomaterial, welches als Rauschen die Performance des KNNs verschlechtert. Es gilt, Reduzierung der Eingabedaten durch Schneiden von redundanten Bildern ohne essenzielle Informationen zu zerstören.
Um eine geeignete Intervalllänge für die GTDs zu finden, wurden in dieser Arbeit einige
Experimente mit verschieden langen Zeit Deltas durchgeführt.
Die folgenden Abbildungen dienen zur Veranschaulichung der Schneidetransformationen. Durch das kleine Zeitintervall in Abbildung 1, kann nur eine geringe Pixelveränderung zwischen fünf sequenziellen Bildern erkannt werden. In Abbildung 2 ist ein optischer Flow zwischen den Bildern zu erkennen.
Transformierung der Bildauflösung
Die Aufnahmen wurden mit einem DVS-Sensor getätigt, der eine Auflösung von
1280 𝑥 800 Pixel hat. Bei einer Videodauer von 8 Sekunden beträgt der Speicherbedarf im Numpy Format ungefähr 120 MB.
Die verwendete Grafikkarte hat einen Grafikkartenspeicher von 6 GB . Davon werden 3GB für die Simulationsumgebung verwendet. Bei einer durchschnittlichen Dateigröße von 120 MB können also nur 25 DVS-Videos gleichzeitig im Speicher, für die Verarbeitung vorhanden sein. Um die Anzahl an DVS-Daten zu erhöhen, werden die DVSVideos mittels der AI-Remove-Datamodul Bibliothek komprimiert.
Das linke Bild hat eine Auflösung von 1280 𝑥 800. Das Rechte eine Auflösung von
128 𝑥 80. In beiden Bildern ist eine Person klar erkennbar. Es geht somit keine essenzielle Information verloren. Durch die Komprimierung der Videos können nun 200 Videos gleichzeitig in den Grafikkartenspeicher geladen werden.
Herausforderungen der Datenaufbereitung
Für die Konzeptionierung der Datenverarbeitung ist es wichtig, die Struktur der Daten
zu definieren. Die Anforderungen an eine Video-Klassifikation ist Analyse von räumlichen und zeitlichen Features. Die Transformation des Videostreams in eine Sequenz aus Bildern wurde vorgenommen, um die räumlichen Features mittels Convolutions-Layer zu erfassen.
In diesem Abschnitt werden die Modellergebnisse, welche mit dem allgemein gültigen
IBM Datensatz und dem spezifisch auf das entsprechende Usecase eigenerstellten Datensatz erzielt wurden, vorgestellt.
Die Modelle werden mittels des offiziellen Bewegungsdatensatz evaluiert. Anschließend wird die Entscheidung begründet, welche Modellstruktur für die Klassifikation der eigen erstellten Ground-TruthDaten am geeignetsten ist. Das ausgewählte Modell wird für das Training des eigenerstellten Datensatzes genutzt und durch die Kombination von verschieden Encoding
Methoden und Approximationsfunktionen nach der höchste Modellgenauigkeit optimiert.
FFS-Netzwerke eigenen sich für die Analyse von statischen Eingabedaten, da sie räumliche Features des Eingabe-Frames berechnen können. Um zeitlichen Relationen zu analysieren steigt die Komplexität und Nutzung von Convolution-Layer, zur Feature-Detektion stark an. Da Convolution-Layer Rechen und Energie intensiv sind, gilt es die Nutzung dieser zu minimieren.
Das RCSNN-Netzwerk hat durch Nutzung der Long-Short-Term-Spiking-Zellen die
Eigenschaft, die errechneten Features der Konvolutionsschichten als Hidden States zwischenzuspeichern.
Aus diesen Gründen wurde als Klassifikationsmodell für die DVS-Aufnahmen die RCSNN-Architektur gewählt.
Validierung und Vergleich der KI-Netze
In diesem Abschnitt werden verschiedene Modellkombinationen der RCSNN-Architektur
getestet und mit dem IBM-Datensatz trainiert. Dies dient zur Validierung der Netzwerkarchitektur. Die Validierungsgenauigkeit wurde mit den Validierungsergebnissen aus der
wissenschaftlichen Arbeit Tuning Spiking Neural Network With Biologically Plausible
Reward Propagation verglichen.
Als Grundlage für die Wahl der Modellparameter sowie Kodierungsverfahren, wurden
für jedes Training verschiedene Kombination gewählt. In Abbildung 3 sind die Validierungserbnisse aus vier verschieden Trainingsiterationen dargestellt. Die farbliche Hervorhebung in Abbildung 4 identifiziert die dazugehörigen Graphen, welche in folgenden Abbildungen geplottet sind. Die Modelle wurden jeweils hundert Epochen ohne Early-Stopping trainiert.
Die Kombination des Surrogate Gradient Descent-Verfahrens SuperSpike und der Zeitkodierung der Eingabeframes, erzielt die höchste Validierungsgenauigkeit mit dem geringsten Valisierungsverlust. Nach 2000 Berechnungen kommt es bei allen Parameterkombinationen zu einer Überanpassung des Modells.
In Abbildung 4 ist zu erkennen, dass nach ungefähr 2500 Berechnungen einen systematische Überanpassung entsteht. Um eine Überanpassung zu vermeiden, wird im Verlaufe der weitern Trainingsiteration das Early-Stopping-Verfahren genutzt.
In der Publikation Tuning Spiking Neural Network With Biologically Plausible Reward Propagation ist in Abschnitt 4 Experimentes das Trainingsergebnis einer Feed-Forward-Architekturvorgestellt wird abgebildet. Die Validierungsergebnisse, welche in dieser Arbeit publiziert sind, werden als Referenzwerte für das Traing der RCSNN-Architektur genutzt. Für das Entscheidungskriterium wird die Validierungsgenauigkeit beider Modelle verglichen, um den höchsten Wert zu bestimmen.
Die Validierungsgenauigkeit des RCSNN-Modells mit den Modelleinstellungen SuperSpike und Zeitkodierung, dargestellt als grauer Graph erreicht eine Validierungsgenauigkeit von 0.7.
In Abbildung 5 Validierungsgenauigkeit aus sind die Validierungsergebnisse von drei verschiedenen Optimierungsverfahren abgebildet. Als Referenz wird nur der blaue Graph betrachtet. Der blaue Graph gibt die Modellgenauigkeit an, die mittels Backpropagation erreicht wurde. Die Validierungsgenauigkeit liegt ungefähr bei 50%. Das RCSNN-Modell konnte somit für den gleichen Datensatz eine höher Genauigkeit erzielen.
RCSNN-Netzwerk als Klassifikator für Bewegungsabläufe
Die Validierung des aufgenommenen Datensatzes erfolgt mit dem RCSNN-Netz welches vorgestellt wurde. Das Modell wurde um 3 verkettete LSC-Zellen erweitert. So kann das Netz fünf Hidden States zwischenspeichern und die zeitliche Relation fünf
aufeinander folgender Bilder verarbeiten.
Hierfür wurden drei augmentierte Datensätze aus den aufgenommenen DVS-Daten erstellt. Bei allen drei Datensätzen wurden die räumlichen Dimensionen mittels der AI-Remove-Datemodul Bibliothek um ein zehnfaches Reduziert. Der Unterschied liegt nur in der Anzahl an Bildern pro Datensatz. Mittels eines eigenerstellten Skripts wurden intervallweise Bilder aus den Datensätzen entfernt.
In der folgenden Tabelle sind die Validierungsergebnis, Genauigkeit und Verlust dargestellt. Jede Zelle repräsentiert ein Modellergebnis nach hundert Trainingsiteration. Für die Datennormalisierung auf Tensor Ebene wurden drei verschiedene Encoder-Optionen gewählt. Jede Encoder-Option wurde mit zwei Heaviside-Funktionsapproximationen (Tanh & Circ),
gekoppelt mit BPTT und mit dem SGD-Verfahren SuperSpike trainiert und getestet.
Generell schneiden die verkürzten Datensätze besser ab als der Originaldatensatz. Wird
kein Encoder genutzt, werden aufgrund der Dimensionskomprimierung keine Binären
Tensors in das Netzwerk eingespeist. Wie in der Tabelle zu erkennen ist, fallen die Validierungsergebnisse, ohne Datennormalisierung durch Kodierung in Zeit oder Frequenz schlechter aus.
Es ist zu bemerken, dass nicht normalisierte Daten in Kombination mit Sprungfunktionsapproximation und BPTT bessere Validierungsergebnisse erzielen als das SGD-Verfahren SuperSpike bei Anwendung auf nicht normalisierte Daten.
Die Kombination aus Kodierung in Zeit und SuperSpike erreichte, das höchste Ergebnis
mit einer Validierungsgenauigkeit von 0,7 und einem Validierungsloss von 0,2.
Vergleich der Modellergebnisse
Die optimale Modellparameter des RCSNN-Klassifikators für eine möglichst hohe Modellgenauigkeit bestimmt.
Das Ergebnis der Zeit-Encoder und
SuperSpike Kombination erreicht ein zufriedenstellendes Ergebnis mit einer Validierungsgenauigkeit von 0,7.
Dieses Ergebnis ähnelt der Validierungsgenauigkeit, die beim Training mit dem IBM Datensatz erreicht wurde.
Die Bewertung dieser Resultate sollte jedoch differenziert betrachtet werden, denn der
Unterschied zwischen beiden Datensätzen, liegt in der Anzahl an Labels.
Der aufgenommene Datensatz besitzt zwei Label . Der IBM Datensatz unterscheidet zwischen elf verschiedenen Bewegungsabläufen. Die Anzahl der Labels gibt,
die Entscheidungsfreiheit eines Netzwerks an. Somit ist die logische Schlussfolgerung,
dass bei höherer Entscheidungsfreiheit die Fehlerrate mit steigt. Dementsprechend korrelieret die Anzahl der Labels mit der Modellfehlerrate. Der aufgenommene Datensatz ist jedoch komplexer, da Bewegungsabläufe aus verschiedenen Perspektiven, mit verschiedenen Akteuren aufgenommen wurden.
Bewertung der Datentransformationen
Die Komprimierung der Dimension reduziert den
Arbeitsspeicherbedarf, bringt durch die Akkumulierung der DVS-Events auch Probleme
mit sich. Der Eingabestrom ist nicht mehr binär. Die nächste Abbildung stellt die Werteverteilung
von transformierten DVS-Aufnahmen dar.
Im linken Bild wurde die Aufnahme in 500 sequenzielle Bilder unterteilt. Eines dieser
Bilder hat die oben dargestellte Wertedistribution mit einem Maximum von 245. Das
linke Bild stellt die Distribution bei einer Transformation in 10 Bilder pro Aufnahme dar.
Hier wird ein Maximum von 3500 erreicht.
Aus diesem Grund werden die Daten mittels TRAC-AI eigenen Encoder normalisiert.
Den Encoder Funktionen wird ein Frame und Intervalllänge 𝐼𝐿 übergeben. In der folgenden Abbildung
ist die Kodierung eines Bildes für drei Zeitschritte als Frequenz- (links) und Zeitkodierung (rechts) dargestellt. Die Kodierung erstellt eine Sub-Sequenz, welche dem Netzwerk übergeben wird.
Zu beachten ist, dass nun nicht in jedem Berechnungsschritt ein neues Bild verarbeitet
wird, sondern nach jedem Kodierungsintervall. 𝐼𝐿
Die Pixeldistribution nach der Kodierung ist für beide Bilder zwischen 0 und 1. Anzumerken ist jedoch, dass räumliche Bereiche mit einer hohen Eventdichte nach der Normalisierung der Ergebnisse die gleichen Werte haben, wie Abschnitte, in denen wenig
Eventaktivität akkumuliert ist. Die nächste Abbildung verdeutlicht dieses Prinzip. In der roten Box
befinden sich mehr aktivierte Pixel als in der Gelben. Bei einer Komprimierung um die
Box Größe, würden beide Werte eins sein. Jedoch liegt der Fokus der Aufnahme auf der
roten Box.
Simulation und resultierende Kompromisse
Die Vorteile der Kombination aus dynamischen DVS-Daten und SNN-Netzwerken können nur auf neuromorpher Hardware genutzt werden. Auf diskreten Rechensystemen sind Verfahren nötig zur Simulation von SNN-Zellen und der Aufbereitung der DVS-Daten.
Durch die diskrete und getaktete Natur eines Computers mit einer Von-Neumann Architektur, können DVS-Events nicht asynchron einem SNN-Netzwerk übergeben und asynchron verarbeitet werden. Das in dieser Arbeit konzipierte RCSNN-Modell ist nicht besonders ressourcenintensiv, jedoch werden die SNN-Neuronen-Gewichte und -Zustände im Grafikspeicher zwischengespeichert. Bei der Simulation von komplexeren Modellen muss dieser Faktor berücksichtigt werden.
Objekt Detektion mit SNNs
Als künftige akademische Forschung, wäre es interessant eine Kombination von SNN mit
Object Localization und Object Detection zu implementieren und zu validieren. Auf
diesem Gebiet gibt es bis jetzt nur wenig Forschungsergebnisse.
Eine Herausforderung wäre die Konzeptionierung einer Labelungsmethodik für die Erstellung der GTDs. Da es sich bei den Eingabedaten um DVS-Videos handelt, müssten
händisch, mit der Hilfe von Approximationsalgorithmen Bounding Boxes um die Gegenstände gelegt werden. Dieser Vorgang müsste in Intervallen durchgeführt werden. So wäre sichergestellt, dass das Label die gewünschte Position beibehält.
Eine solche Annotation würde wie in der folgenden Abbildung dargestellt aussehen.