-
Die vorliegende Erfindung betrifft ein Paddingverfahren für ein Convolutional Neural Network, eine Vorrichtung, ein Computerprogramm und ein maschinenlesbares Speichermedium.
-
Stand der Technik
-
Convolutional Neural Networks, die auch faltenden neuronale Netzwerke genannt werden, werden als eines der effizientesten Werkzeuge für Bildbearbeitung oder Videobearbeitung betrachtet.
-
Bei der Steuerung wenigstens teilautonomer Roboter, insbesondere zumindest teilweise automatisiert fahrender Fahrzeuge, sind Bilddaten und andere physikalische Beobachtungen aus dem Roboterumfeld eine wichtige Informationsquelle. Um aus diesen sehr hochdimensionalen Daten zu klassifizieren, welche Objekte im Roboterumfeld vorhanden sind, kommen künstliche neuronale Netzwerke, wie beispielsweise Convolutional Neural Networks zum Einsatz.
-
Moderne Convolutional Neural Networks weisen verschiedene Schichten, sogenannte Convolutional Layer, auf. Über eine diskrete Faltung mit einem Filterkernel, der wesentlich einer Faltungsmatrix entspricht, werden aus einem Eingangsdatenarray, beispielsweise Bilddaten, einer Convolutional Layer ein Ausgangsdatenarray generiert. Da der Filterkernel selbst üblicherweise mehrere Dimensionen aufweist, weist das Ausgangsdatenarray eine geringere Dimension auf als das Eingangsdatenarray. Bei der Anwendung mehrerer Convolutional Layer auf ein Eingangsdatenarray verringert sich somit stetig dessen Dimension.
-
Deshalb weisen solche Convolutional Neural Networks üblicherweise einen sogenannten Padding-Mechanismus auf, um sicherzugehen, dass das Eingangsdatenarray und das Ausgangsdatenarray des Convolutional Neural Networks numerisch kompatibel, also insbesondere gleich dimensioniert, sind.
-
Bekannt ist hierfür vor allem das sogenannte Null-Padding, bei dem das Eingangsdatenarray an dessen Rändern um genau die Dimension von Daten erweitert wird, die es bei der Anwendung des Filterkernels verringert wird. Die dafür verwendeten Daten sind hierbei einfache Nullen.
-
Bildet das Eingangsdatenarray allerdings eine ringförmige Umgebungsinformation ab, wie es beispielsweise bei wenigstens teilautonomen Robotern der Fall ist, so bieten die bekannten Paddingverfahren keine Möglichkeiten, besonders auf eine solche Art von Eingangsdaten einzugehen.
-
Es besteht daher der Wunsch, ein verbessertes Paddingverfahren für ein Convolutional Neural Network, insbesondere für konzentrisch aufgebaute Daten, bereitzustellen.
-
Offenbarung der Erfindung
-
Gemäß einem Aspekt umfasst ein Paddingverfahren für ein Convolutional Neural Network die Schritte:
- Empfangen von konzentrisch aufgebauten Daten eines Objekts, wobei die konzentrisch aufgebauten Daten mit einem Bild korrelieren, das konzentrisch zu dem Objekt aufgenommen wurde.
- Entfalten der konzentrisch aufgebauten Daten zu einem Datenarray, umfassend real-kohärente Daten an sich gegenüberliegenden Seiten des Datenarrays;
- Ausführen einer Faltungsoperation unter Benutzung von Ringpadding, wobei bei dem Ringpadding die real-kohärenten Daten einer Seite des Datenarrays zum Padding der real-kohärenten Daten einer dieser gegenüberliegenden Seite des Datenarrays verwendet werden und/oder vice versa.
-
Der Begriff „konzentrisch aufgebaute Daten“ umfasst Daten, die konzentrisch um ein Objekt erfasst werden. Vorzugsweise werden solche Daten auch Ringdaten oder ringförmige Daten genannt.
-
Der Begriff „Convolutional Neural Network“ wird vorzugsweise auch durch den Begriff „faltendes neuronales Netzwerk“ beschrieben.
-
Der Begriff „real-kohärente Daten“ umfasst Daten, insbesondere Umgebungsdaten, die in der Realität nebeneinander angeordnet sind.
-
Der Begriff „Convolutional Layer“ wird auch durch den Begriff „faltende Schicht“ beschrieben. Das Convolutional Neural Network weist verschiedene Convolutional Layer auf. Jede Convolutional Layer umfasst ein Datenarray auf das eine Faltungsoperation mit Hilfe eines Filterkernels angewendet wird. Die Ausgangsdaten der Faltungsoperation bestimmen ein weiteres Datenarray, vorzugsweise einer weiteren Convolutional Layer. So kann das ursprüngliche Datenarray über mehrere aufeinander folgende Convolutional Layer verarbeitet werden. Vorzugsweise wird das unverarbeitete Datenarray einer Convolutional Layer als Eingangsdatenarray bezeichnet und das durch die Faltungsoperation generierte Datenarray als Ausgangsdatenarray bezeichnet. Das Ausgangsdatenarray einer Convolutional Layer entspricht vorzugsweise dem Eingangsdatenarray einer weiteren Convolutional Layer.
-
Konzentrisch aufgebaute Daten zeichnen sich vor allem dadurch aus, dass sie in einer Richtung durchgängig miteinander verbunden sind. Wird beispielsweise, wie beim automatisierten Fahren, die gesamte Umgebung eines Objektes erfasst, entstehen konzentrisch aufgebaute Daten. Diese kann man sich beispielsweise als Hohlzylinder vorstellen. In Umfangsrichtung des Hohlzylinders sind somit sämtliche Daten von weiteren Daten umgeben.
-
Korrelieren die Daten beispielsweise mit einem Bild, das konzentrisch rund um das Objekt aufgenommen wurde, so kann man sich die daraus entstehenden Daten in Form eines Hohlzylinders vorstellen. Im Falle von solch hohlzylindrischen Daten, wird der Hohlzylinder beim Entfalten an einer Längsseite geöffnet und „ausgerollt“. Das dadurch entstandene Datenarray weist somit an zwei sich gegenüberliegenden Seiten des Datenarrays real-kohärente Daten auf. Diese real-kohärenten Daten bilden zwar Daten ab, die in der Realität nebeneinanderliegen, im Datenarray liegen sie jedoch an sich gegenüberliegenden Seiten.
-
Selbstverständlich sind über dieses Beispiel hinausgehende konzentrisch aufgebaute Daten vorstellbar.
-
Auf diese Weise wird Rauschen, das durch konventionelle Paddingverfahren zu den konzentrisch aufgebauten Daten hinzugefügt wird, eliminiert. Weiter können real-kohärente Daten somit zueinander geführt werden.
-
Der Filterkernel wird auf echte Daten und auf Daten, die durch das Paddingverfahren hinzugefügt werden, angewendet. Auf diese Weise verringert sich zwar in keinem Convolutional Layer die Dimension des Datenarrays, jedoch wird Rauschen in den Informationsfluss der Daten eingebracht. Im Gegensatz zu üblichen Paddingverfahren, benötigt das Convolutional Neural Network deutlich weniger Convolutional Layer, um das Rauschen wieder zu eliminieren. Auf diese Weise können weniger tiefe Architekturen oder Modelle des Convolutional Neural Networks eingesetzt werden.
-
Außerdem bringt ein automatischer Anti-Rauschen Prozess, der von dem Convolutional Neural Network gelernt werden muss, um das Rauschen zu eliminieren eine unnötige Komplexität mit sich und vergeudet somit Netzwerkkapazitäten des Convolutional Neural Networks. Durch das Ringpadding kann dieses Problem eliminiert werden, wodurch kleinere, schnellere und weniger komplexe Modelle des Convolutional Neural Networks möglich sind.
-
Gemäß einer bevorzugten Ausgestaltung weist das Datenarray real-nicht-kohärente Daten an sich gegenüberliegenden Seiten des Datenarrays auf, wobei das Verfahren ferner umfasst:
- Padding der real-nicht-kohärenten Daten des Datenarrays durch konventionelle Paddingverfahren, vorzugsweise konstantem Padding, Null Padding oder Reflection Padding.
-
Vorzugsweise ist ein beschriebenes Ringpadding bei real-nicht-kohärenten Daten nicht notwendig.
-
Gemäß einer bevorzugten Ausgestaltung weist das Datenarray ein linkes Ende und ein rechtes Ende auf, welche jeweils die real-kohärenten Daten aufweisen, wobei das Verfahren ferner umfasst:
- Padding der real-kohärenten Daten des linken Endes des Datenarrays mit den real-kohärenten Daten des rechten Endes des Datenarrays und/oder vice versa.
-
Gemäß einer bevorzugten Ausgestaltung umfasst das Datenarray ein oberes Ende und ein unteres Ende, welche jeweils die real-nicht-kohärenten Daten aufweisen, wobei das Verfahren ferner umfasst:
- Padding der real-nicht-kohärenten Daten des oberen Endes und des unteren Endes des Datenarrays durch konventionelle Paddingverfahren, vorzugsweise konstantem Padding, Null Padding oder Reflection Padding.
-
Gemäß einer bevorzugten Ausgestaltung weist das Datenarray eine beliebige Anzahl an Dimensionen auf.
-
Üblicherweise weist das Datenarray, das mit einem Bild korreliert eine oder zwei Dimensionen auf. Allerdings sind auch weitere Dimensionen denkbar.
-
Gemäß einer bevorzugten Ausgestaltung hängt die Dimension des Ringpaddings von der Dimension eines für die Faltungsoperation verwendeten Filterkernels ab.
-
Je größer der Filterkernel dimensioniert wird, desto größer muss auch das Ringpadding dimensioniert werden. Die Anzahl der durch das Ringpadding hinzugefügten real-kohärenten Daten an der Seite an der Ringpadding durchgeführt wird ist vorzugsweise abhängig von der Dimension des verwendeten Filterkernels und damit von der Verringerung des Datenarrays durch die Faltungsoperation.
-
Gemäß einer bevorzugten Ausgestaltung umfasst das Paddingverfahren ferner:
-
Lernen des Verhältnisses zwischen real-kohärenten Daten von sich gegenüberliegenden Seiten des Datenarrays innerhalb einer Convolutional Layer des Convolutional Neural Networks.
-
Wenn konzentrisch aufgebaute Daten zu nicht-ringförmigen Daten entfaltet werden, werden zwei Enden dieser Daten weit voneinander entfernt angeordnet, obwohl sie in Realität nahe nebeneinander angeordnet sind. In üblichen Paddingverfahren muss das Convolutional Neural Network das Verhältnis zwischen real-kohärenten Daten von sich gegenüberliegenden Seiten des Datenarrays lernen. Hierfür wird eine tiefe Architektur des Convolutional Neural Networks benötigt, um die Informationen hierfür zu haben. Durch das Ringpadding kann das Verhältnis zwischen real-kohärenten Daten von sich gegenüberliegenden Seiten des Datenarrays innerhalb einer Convolutional Layer des Convolutional Neural Networks erlernt werden.
-
Gemäß einem weiteren Aspekt ist eine Vorrichtung eingerichtet, ein Paddingverfahren, wie es hier beschrieben ist, auszuführen.
-
Ein weiterer Aspekt bezieht sich auf ein Steuerungsverfahren für einen wenigstens teilautonomen Roboter, umfassend die Schritte:
- Empfangen von Umgebungsdaten des wenigstens teilautonomen Roboters, wobei die Umgebungsdaten konzentrisch aufgebaute Daten umfassen, die mit einem Bild korrelieren, das konzentrisch zu dem wenigstens teilautonomen Roboter aufgenommen wurde;
- Anwenden einer Bilderkennung auf das aufgenommene Bild unter Durchführung eines Paddingverfahrens, wie es hier beschrieben ist; und
- Steuern des wenigstens teilautonomen Roboters abhängig von der auf das aufgenommene Bild angewandten Bilderkennung.
-
Auf diese Weise kann ein wenigstens teilautonomer Roboter verbessert basierend auf empfangenen Umgebungsdaten gesteuert werden.
-
Allgemein kann es sich bei dem, insbesondere wenigstens teilautonomen, Roboter um ein zumindest teilweise automatisiert fahrendes Fahrzeug handeln. Alternativ dazu, kann es sich bei dem wenigstens teilautonomen Roboter auch um einen anderen mobilen Roboter handeln, beispielsweise um einen solchen, der sich durch Fliegen, Schwimmen, Tauchen oder Schreiten fortbewegt. Bei dem mobilen Roboter kann es sich beispielsweise auch um einen wenigstens teilautonomen Rasenmäher oder einen wenigstens teilautonomen Putzroboter oder ähnliches handeln.
-
Gemäß einem weiteren Aspekt umfasst ein Computerprogramm Befehle, die bei der Ausführung des Computerprogramms durch einen Computer diesen veranlassen, ein Verfahren, wie es hier beschrieben ist, auszuführen.
-
Gemäß einem weiteren Aspekt ist auf einem maschinenlesbaren Speichermedium das Computerprogramm, wie es hier beschrieben ist, gespeichert.
-
Weitere, die Erfindung verbessernde Maßnahmen werden nachstehend gemeinsam mit der Beschreibung der bevorzugten Ausführungsbeispiele der Erfindung anhand von Figuren näher dargestellt.
-
Ausführungsbeispiele
-
Es zeigt:
- 1a zweidimensional konzentrisch aufgebaute Daten, die zu einem Datenarray entfalten werden;
- 1b eindimensional konzentrisch aufgebaute Daten, die zu einem Datenarray entfalten werden;
- 2a eine schematische Darstellung des Null-Paddings auf ein Datenarray;
- 2b eine schematische Darstellung des Ringpaddings auf ein Datenarray;
- 3a Null-Padding angewendet auf ein Polygon;
- 3b Ringpadding angewendet auf ein Polygon;
- 4a eine schematische Darstellung von Null-Padding beim Lernen des Verhältnisses zwischen real-kohärenten Daten von sich gegenüberliegenden Seiten eines Datenarrays;
- 4b eine schematische Darstellung von Ringpadding beim Lernen des Verhältnisses zwischen real-kohärenten Daten von sich gegenüberliegenden Seiten eines Datenarrays; und
- 5 eine schematische Darstellung eines Paddingverfahrens in einem Convolutional Neural Networks.
-
1a zeigt zweidimensionale konzentrisch aufgebaute Daten 10. Beispielsweise korrelieren die konzentrisch aufgebauten Daten 10 zu Umgebungsdaten, die konzentrisch zu einem Objekt, insbesondere einem zumindest teilweise automatisiert fahrenden Fahrzeug, aufgenommen wurden. Zum Verarbeiten der konzentrisch aufgebauten Daten 10 müssen diese entfalten werden. Die konzentrisch aufgebauten Daten 10 haben, wie in 1a gezeigt ist, die Form eines Hohlzylinders, in deren Mitte konzentrisch das besagte Objekt angeordnet war.
-
Zum Entfalten der konzentrisch aufgebauten Daten 10 werden diese an einer Trennstelle 11 aufgetrennt und zu einem Datenarray 20 entfalten. Auf diese Weise werden real-kohärente Daten 21, 26, die an der Trennstelle 11 angeordnet waren, an zwei sich gegenüberliegenden Seiten des Datenarrays 20 angeordnet.
-
1b zeigt eindimensionale konzentrisch aufgebaute Daten 10. Das Entfalten solcher konzentrisch aufgebauten Daten 10 entspricht den Ausführungen zu den zweidimensional konzentrisch aufgebauten Daten 10 aus 1a.
-
2a und 2b zeigen eine schematische Darstellung einer Faltungsoperation unter Benutzung von Null-Padding in 2a und Ringpadding in 2b auf ein Datenarray 20, das aus konzentrisch aufgebauten Daten 10 besteht.
-
Das gezeigte Datenarray 20 umfasst sechs Datensätze 21, 22, 23, 24, 25, 26, insbesondere einen ersten Datensatz 21, einen zweiten Datensatz 22, einen dritten Datensatz 23, einen vierten Datensatz 24, einen fünften Datensatz 25 und einen sechsten Datensatz 26. Auf das Datenarray 20 wird eine Faltungsoperation mit Hilfe eines Filterkernels 30 durchgeführt. Der Filterkernel 30 weist eine Dimension von drei auf, das heißt, dass jeweils drei Datensätze von dem Filterkernel 30 verarbeitet werden und zu einem Ausgangsdatensatz des Ausgangsarrays 40 diskret gefalten werden. Dieses Verfahren wird solange schrittweise ausgeführt, bis das gesamte Datenarray 20 abgearbeitet wurde. Aufgrund der Limitierung des Datenarrays 20 an den Randbereichen, würde eine Faltungsoperation auf das Datenarray 20 ohne eine Art von Paddingverfahren, zu einer Reduzierung der Dimension des Datenarrays 20 führen. In dem gezeigten Fall würde der Filterkernel 30 das Datenarray 20 in vier Schritten abarbeiten Hierfür würde der Filterkernel 30 in einem ersten Schritt die diskrete Faltung basierend auf dem vierten Datensatz 24, dem fünften Datensatz 25 und dem sechsten Datensatz 26 durchführen, in einem zweiten Schritt die diskrete Faltung basierend auf dem dritten Datensatz 23, vierten Datensatz 24 und dem fünften Datensatz 25 durchführen, in einem dritten Schritt die diskrete Faltung basierend auf dem zweiten Datensatz 22, dem dritten Datensatz 23 und dem vierten Datensatz 24 durchführen und in einem vierten Schritt die diskrete Faltung basierend auf dem ersten Datensatz 21, dem zweiten Datensatz 22 und dem dritten Datensatz 23 durchführen. Auf diese Weise würde sich die Dimension des Datenarrays 20 zu dem Ausgangsarray 40 von sechs auf vier reduzieren.
-
Deshalb wird üblicherweise das Datenarray 20 durch ein Paddingverfahren künstlich vergrößert, in diesem Fall von sechs auf acht, damit das Ausgangsarray 40 nach der Faltungsoperation weiterhin eine Dimension von sechs aufweist.
-
Beim Null-Padding in 2a wird das Datenarray 20 an beiden Enden um jeweils einen linken Null-Datensatz 21a und einen rechten Null-Datensatz 26a mit jeweils dem Wert null erweitert. In Schritt S1 führt der Filterkernel 30 die diskrete Faltung basierend auf dem fünften Datensatz 25, dem sechsten Datensatz 26 und dem rechten Null-Datensatz 26a durch. Der Filterkernel 30 arbeitet das Datenarray 20 in den Schritten S2 bis S5 wie oben beschrieben nach links ab. In Schritt S6 führt der Filterkernel 30 die diskrete Faltung basierend auf dem linken Null-Datensatz 21a, dem ersten Datensatz 21 und dem zweiten Datensatz 22 durch. Auf diese Weise weist das Ausgangsarray 40 eine weitere Dimension von sechs auf.
-
Beim Ringpadding in 2b wird das Datenarray 20 nicht künstlich erweitert. Stattdessen führt der Filterkernel 30 in Schritt S1 die diskrete Faltung basierend auf dem fünften Datensatz 25, dem sechsten Datensatz 26 und dem ersten Datensatz 21 durch. Da das Datenarray 20 auf konzentrisch aufgebauten Daten 10 besteht, sind der erste Datensatz 21 und der sechste Datensatz 26 real-kohärente Daten. Das Ringpadding benutzt auf diese Weise reale Daten anstelle von Nullen, um ein Paddingverfahren auf das Datenarray 20 anzuwenden.
-
Der Filterkernel 30 arbeitet das Datenarray 20 in den Schritten S2 bis S5 wie oben beschrieben nach links ab. In Schritt S6 führt der Filterkernel 30 die diskrete Faltung basierend auf dem sechsten Datensatz 26, dem ersten Datensatz 21 und dem zweiten Datensatz 22 durch. Auf diese Weise weist das Ausgangsarray 40 eine Dimension von sechs auf. Das Ringpadding benutzt auf diese Weise reale Daten anstelle von Nullen, um ein Paddingverfahren auf das Datenarray 20 anzuwenden.
-
Die 3a und 3b zeigen den Unterschied zwischen Null-Padding und Ringpadding am Beispiel eines Polygons.
-
Die gezeigten Ergebnisse stammen von einem Faltungs-auto-Encoder, dem die Aufgabe gegeben wurde ein Polygon zu reproduzieren, das als ein 1D Array repräsentiert wird. Jedes Polygon besteht aus 360 Nummern, die die Entfernungen zu einem Ursprung in einem Polarkoordinatensystem mit einer Auflösung von 360 Grad darstellen. Die Grundform 50 stellt die Realität dar. Die Ausgangsformen 51 enthalten jeweils die gelernten Werte.
-
Die in 3a gezeigte Ausgangsform 51 wurde mit Hilfe von Null-Padding erstellt, während die in 3b gezeigte Ausgangsform 51 mit Hilfe von Ringpadding erstellt wurde. In 3a ist klar zu erkennen, welchen Fehler das Null-Padding in das System einbringt, da die zum Null-Padding benötigten zusätzlichen Datensätze mit Nullen beschrieben sind. Dahingegen ist die in 3b gezeigte Ausgangsform 51, die mit Hilfe von Ringpadding erlernt wurde, vergleichsweise fehlerfrei.
-
Die 4a und 4b zeigen den Informationsfluss der Datensätze von der linken Seite des Datenarrays 20 zu der rechten Seite des Datenarrays 20 und vice versa.
-
Der Grundaufbau der Datenarrays 20 entspricht den in 2a und 2b gezeigten Datenarrays 20. 4a zeigt die Anwendung der Faltungsoperation mit Hilfe von Null-Padding über mehrere Convolutional Layer L1, L2, L3, L4, L5, L6. Der erste Datensatz 21 benötigt sechs Convolutional Layer L1, L2, L3, L4, L5, L6, um von der linken Seite des Datenarrays 20 zu der rechten Seite des Datenarrays 20 durchzudringen. Erst dann kann über einen Lernalgorithmus ein Verhältnis des ersten Datensatzes 21 zu dem sechsten Datensatz 26 hergestellt werden und erkannt werden, dass es sich hierbei um real-kohärente Daten handelt. Dasselbe gilt für anders herum für den sechsten Datensatz 26, der ebenfalls 6 Convolutional Layer L1, L2, L3, L4, L5, L6 benötigt, um bis zu der linken Seite des Datenarrays 20 durchzudringen.
-
Im Gegensatz dazu kann wie in 4b gezeigt ist, über einen Lernalgorithmus ein Verhältnis des ersten Datensatzes 21 zu dem sechsten Datensatz 26 bereits nach einer ersten Convolutional Layer L1 hergestellt werden und erkannt werden, dass es sich hierbei um real-kohärente Daten handelt.
-
5 zeigt eine schematische Darstellung eines Paddingverfahrens in einem Convolutional Neural Networks.
-
In Schritt Z1 werden konzentrisch aufgebaute Daten eines Objekts empfangen, wobei die konzentrisch aufgebauten Daten mit einem Bild korrelieren, das konzentrisch zu dem Objekt aufgenommen wurde.
-
In Schritt Z2 werden die konzentrisch aufgebauten Daten zu einem Datenarray entfalten, umfassend real-kohärente Daten an sich gegenüberliegenden Seiten des Datenarrays.
-
In Schritt Z3 wird eine Faltungsoperation unter Benutzung von Ringpadding ausgeführt, wobei bei dem Ringpadding die real-kohärenten Daten einer Seite des Datenarrays zum Padding der real-kohärenten Daten einer dieser gegenüberliegenden Seite des Datenarrays verwendet werden und/oder vice versa.