1. Neuronale Netze
1.1 Self Organizing Map
1.2 Lernmethode
1.3 Wiedererkennung

2. Bildverarbeitung

1.1 Self Organizing Map

Zur Erkennung der Symbole im Kennzeichen wird ein Kohonen Netz benutzt. Dieses auch Self Organizing Map genannte Netz besitzt 2 Schichten. Eine Input Schicht und eine nach dem Entwickler genannte Kohonen Schicht.

Im Projekt wird wie im Bild zu erkennen eine 2 dimensionale Kohonenkarte verwendet. Jedes der Inputneuronen ist mit allen Neuronen der Karte verbunden, jedoch sind die Inputneuronen voneinander unabhängig. Die Neuronen in der Kohonenkarte besitzen eine Nachbarschaftsbeziehung, die wichtig ist um ein auseinanderfalten der Karte zu ermöglichen. Die Karte ist nicht geschlossen, das heißt Neuronen am Rand der Karte haben weniger Nachbarn als in der Mitte und es erfolgt kein Lernen über Ränder hinaus.

Die darstellung zeigt das Neuron j, welches zur Nachbarschaft 0 zu sich selbst gehört. Alle anderen Neuronen gehören jeweils entsprechend der Umrandung zur nächsthöheren Nachbarschaft. Im Laufe der Entfaltung der Karte sollte der Nachbarschaftsradius von groß nach klein reduziert werden.

1.2 Wie erfolgt aber jetzt das Lernen?

Zunächst einmal braucht man Muster zum Anlernen. Für jedes Symbol, das später einmal erkannt werden soll, braucht man ein Muster. Im Projekt wird dieses Muster aus etwa 20x40 Pixel großen Bitmaps mit Buchstaben aus original Kennzeichen extrahiert. Die Extraktion der Eigenschaften erfolgt über mehrere Schritte und kann mit dem vorliegenden Programm sehr genau gesteuert werden. Zur Erzeugung guter Ergebnisse wird hier auf die Anwenderdokumentation verwiesen. Prinzipiell wird geprüft ob besagtes Pixel zum Symbol oder zum "weißen" Kennzeichenuntergrund gehört. Dieses wird im Featurevektor entsprechend codiert eingetragen. Der Inputvektor hat folgenden Aufbau:

Die Neuronen in der Kohonenkarte werden nun mit den angelegten Mustern verglichen. In der Lernphase erfolgt dabei eine Veränderung der Kartenneuronen. Beim der späteren Erkennung erfolgt nur noch ein Vergleich. Damit überhaupt zulässige Vektoroperationen möglich sind ist es zwingend notwendig, dass die Neuronen der Karte genausoviele Elemente haben wie die Inputneuronen:

Liegen die Engabevektoren vor, kann das Netz angelernt werden. Das Lernen sollte bei neuen Inputvektoren grundsätzlich mit einem ungeordneten Netz erfolgen. Ungeordnet heißt in diesem Falle, dass alle Elemente der Kartenneuronen mit zufälligen Werten in einem gewählten Intervall initialisiert werden. Ist ein Netz bereits angelernt, kann es mit bereits vorhandenen Eingabemustern natürlich nachtrainiert werden.

Beim Lernen werden nun alle Inputneuronen der Reihe nach immer wieder mit allen Kartenneuronen verglichen. Es wird ein Gewinner in der Kohonenkarte für das angelegte Muster ermittelt. Das Neuron mit dem kleinsten Abstand bzw. Winkels zwischen den beiden Vektoren ist das so genannte Winnerneuron:

Das Neuron mit der größten Ähnlichkeit wird nun noch ähnlicher gemacht, es wird sozusagen in Richtung des angelegten Vektors gebogen. Dies erfolgt nach der Formel:

Epsilon steht für die Lernrate und ist im Intervall [0,1] angesiedelt, wobei bei 0 kein Lernen stattfindet und bei 1 das Neuron dem Input gleichgemacht wird. Beide Werte sind somit ungeeignet. Vielmehr sollte eine anfangs größere Lernrate mit der Zeit abgeschwächt werden:

Bei steigender Anzahl der Lernschritte t fällt die Lernrate exponentiell vom Maximum auf das Minimum. Außer beim Gewinner kann auch noch in der Nachbarschaft eine Anpassung der Gewichte durchgeführt werden. Diese sollte ebenfalls mit zunehmender Schrittzahl kleiner werden. Somit wird das sehr ungeordnete Netz anfanges grob entfalten und später werden die Feinheiten gelernt. Für den Nachbarschaftsradius wird eine Formel gleicher Form verwendet:

1.3 Die Erkennung

Für das trainierte Netz hat jetzt jedes Eingabesymbol ein bestimmtes Neuron in der Karte, mit dem es die meisten Gemeinsamkeiten hat (bezogen auf den Vektorwinkel). Weitgehend ähnliche Neuronen sollten sich in der Nachbarschaft befinden. Bei der Wiedererkennung von Symbolen wird nun der ermittelte Featurevektor mit der Karte verglichen. Es wird das Symbol erkannt, welches zum Gewinnerneuron dieses Vergleichs den kleinsten Hammingabstand hat (delta x + delta y).

 

 

 

2. Die Bildverarbeitung

Bei einer Erkennung von Kennzeichen müssen natürlich Bilder verarbeitet werden. Dies geschiet einmal beim Erstellen der Featurevektoren und dann bei der Analyse von Testbildern.

Die Algorithmen sind teilweise recht einfach. Da jedoch viele Einstellungen zur Erkennung der Symbole per Hand eingestellt werden müssen (das Separieren der Buchstaben an sich wäre eventuell schon die Entwicklung eines neuronalen Netzes wert), ist eine grundsätzliche Kenntnis über die vorgenommenen Transformationen vorteilhaft.

 

Farbinformationen sind bei der Analyse unwichtig. Es wird für alle Kanäle ein gleicher Wert pro Pixel berechnet.

 

Dieses Bild kann nun geglättet werden um das Rauschen zu verringern. Wenn überhaupt sollte dennoch ein relativ kleiner Glättungsradius r (smoothing radius) verwendet werden. Wie bei der Faltung müssen für die Randregionen Sonderfälle beachtet werden.

 

Zur Visualisierung wird das Bild weiter in ein Schwarz-Weiß Bild umgewandelt. Für die Eigentliche Erkennung ist diese Transformation nicht notwendig. In der Programmausführung wird diese, wie auch das Glätten ,nur auf die relativ kleinen Bitmaps der separierten Buchstaben angewendet.

Wichtig ist jedoch das Gradientenbild. Es zeigt starke Helligkeitsunterschiede auf und dient somit zur Kantenerkennung. Genutzt werden diese Informationen zur Auffindung des Nummernschildes im Bild und zur Trennung der Symbole. Bei der Suche des Kennzeichen wird die Region mit der höchsten Aktivierung gesucht, das heißt die strukturstärkste Region. Im Bild ist dies die Region mit dem größten Weißanteil.

 

wobei m ein Wert in der Faltungsmatrix ist. Der Algorithmus ist nur für 3x3 Matrizen implementiert. Größere Matrizen wären zwar theoretisch möglich, jedoch würden diese weder den quadratisch wachsenden Rechenaufwand, noch das Ergebnis rechtfertigen. Zur Zeit wird die Matrix M (richtungsunabhängige Differenzenoperation) mit folgendem Ergebnis verwendet:

 

Das Nummernschild ist wie zu erkennen die aktivste Region. Wie man jedoch erkennen kann gibt es auch weitere stark strukturierte Bereiche. Da nicht immer davon ausgegangen werden kann, dass das Kennzeichen gefunden wird, ist eine per Hand Justierung der Zielregion möglich. Das Gradientenbild wird jedoch auch bei der Zeichentrennung noch einmal benötigt.