Auf dieser Seite wird die Mustererkennung mit einem neuronalen Netz zum automatisierten Erkennen von handgeschriebenen Zahlen angewendet. Die Grundlage für das vorliegende Programm bildet ein so genanntes Hopfield-Netz. Die zu erkennenden Muster können bis zu 30 Prozent verrauscht bzw. gestört sein.
Die verschiedenen Ziffern 0 bis 9 sind als Referenzmuster hinterlegt (siehe Abbildung links). Sie werden beim Aufruf des Mustererkennungsprogramms «gelernt», d.h. bei jedem Drücken der Taste «erkennen». Rechentechnisch handelt es sich also um keine effiziente Umsetzung. Es zeigt aber, wie schnell der Lern-Algorithmus funktionert. Höhere Auflösung, Skalierung und Einmittung ergäben eine bessere Trefferquote. Alternative, aufwendigere Ansätze – wie zum Beispiel ein «Multilayer-Perceptron» zusammen mit «Supervised Learning» – würden die Erkennung ebenfalls optimieren.
Die Programmierung erfolgte in JavaScript (siehe Atwood's Law: «Any application that can be written in JavaScript, will eventually be written in JavaScript») unter Verwendung der jquery-Bibliothek und des umfangreichen Vektorgraphik-Skripting-Pakets Paper.js («The Swiss Army Knife of Vector Graphics Scripting»). Die eigentliche Filterfunktion ist in PHP programmiert.
Alle Programme bzw. Skripte wurden im Atom- oder im Visual Studio Code-Texteditor geschrieben.
Bei allen verwendeten Programmierwerkzeugen und -sprachen handelt es sich um um sog. «open source»-Produkte.
Bitte hier unter Ausnutzung der vollständigen Fläche eine Ziffer (0, 1, …, 9) schreiben, anschliessend die Taste «erkennen» drücken:
Das karierte Notizpapier oben hat eine Auflösung von x binären Feldern (Matrix) bzw. Bildpunkten. Dies erinnert mehr an Facettenaugen von Insekten als an die Netzhaut in den Augen von Wirbeltieren.
Es gibt keine Radiergummi-Funktion. Um die Zeichnung zu löschen, muss entweder der Knopf «löschen» gedrückt oder die Seite neu geladen werden.
Der Einfachheit halber wurde auf einen Preprocessing-Schritt verzichtet, der mit Hilfe einer «Bounding Box» die Umrisse des eingegebenen Musters erkennt, es zentriert (den Schwerpunkt ins Zentrum legt) und auf die Grösse der Matrix skaliert.
Die eingegebene Zahl:
Die erkannte Zahl:
Copyright 2020, parkrace.ch