Abstand zwischen den Hyperebenen

8

Ich versuche, mir etwas maschinelles Lernen beizubringen und habe die MNIST-Datenbank ( Ссылка ) verwendet damit. Der Autor dieser Website schrieb 1998 eine Abhandlung über alle Arten von Techniken zur Erkennung von Handschriften, die unter verfügbar sind Ссылка .

Die 10. genannte Methode ist ein "Tangent Distance Classifier". Die Idee ist, dass, wenn Sie jedes Bild in einen (NxM) -dimensionalen Vektorraum platzieren, Sie den Abstand zwischen zwei Bildern als den Abstand zwischen den Hyperebenen berechnen können, die durch die Hyperebene entstehen, indem Sie den Punkt nehmen und das Bild drehen , das Bild neu skalieren, das Bild übersetzen usw.

Ich kann nicht genug herausfinden, um die fehlenden Details auszufüllen. Ich verstehe, dass die meisten davon tatsächlich lineare Operatoren sind. Wie benutzt man diese Tatsache, um dann die Hyperebene zu erzeugen? Und wenn wir eine Hyperebene haben, wie nehmen wir Abstand zu anderen Hyperebenen?

    
michael dillard 12.11.2012, 08:23
quelle

1 Antwort

12

Ich werde dir ein paar Hinweise geben. Sie benötigen Hintergrundwissen in der Bildverarbeitung. Bitte beachten Sie 2 , 3 für Details.

  • 2 ist eine c Umsetzung der Tangentenentfernung
  • 3 ist ein Papier, das die Tangentenentfernung genauer beschreibt

Bildkonvolution

Nach 3 müssen Sie zuerst den ersten Schritt tun Bild. Im Folgenden zeigen wir das Ergebnis von 3 verschiedenen Operationen (siehe Abschnitt 4 von 3 ) ( Die linke Spalte zeigt die Ergebnisbilder, die rechte Spalte zeigt die Originalbilder und die Faltungsoperatoren). Dieser Schritt besteht darin, den diskreten Vektor auf einen kontinuierlichen Vektor abzubilden, so dass er differenzierbar ist. Der Autor schlägt vor, eine Gauß-Funktion zu verwenden. Wenn Sie mehr Hintergrundinformationen über Bildfaltung benötigen, hier ist ein Beispiel.

Nach diesem Schritt haben Sie die horizontale und vertikale Verschiebung berechnet:

Berechnung der Skalentangente

Hier zeige ich Ihnen eine der in 2 implementierten Tangensberechnungen - die Skalierung Tangente. Aus 3 wissen wir, dass die Umwandlung wie folgt ist:

%Vor%

Am Anfang von td.c in 2 Implementierung wissen wir die folgende Definition:

%Vor%

Der Autor verwendet Bilder der Größe 16x16. So wissen wir

%Vor%

und

%Vor%

Beachten Sie auch, dass wir bereits

berechnet haben
  • x1[ind] = ,
  • x2[ind] =

Damit verbinden wir diese Konstanten:

%Vor%

Da j (auch k ) eine Ganzzahl zwischen 0 und 15 ist (die Breite und Höhe des Bildes sind 16 Pixel), ist (j-7.5)/8 nur eine Bruchzahl zwischen -0.9375 bis 0.9375 .

Also denke ich (j+offsetW)*factor ist die Verschiebung für jedes Pixel, die proportional zum horizontalen Abstand vom Pixel zum Bildmittelpunkt ist. Ebenso kennen Sie die vertikale Verschiebung (k+offsetH)*factor .

Berechnung der Rotationstangente

Die Rotationstangente ist in 3 wie folgt definiert:

%Vor%

Mit der Schlussfolgerung aus dem vorherigen wissen wir (k+offsetH)*factor entspricht y . Ähnlich entspricht - (j+offsetW)*factor -x . Sie wissen also, dass genau diese Formel in 3 verwendet wird.

Sie können alle anderen Tangenten finden, die in 3 beschrieben sind und bei 2 . Ich mag das folgende Bild von 3 , das den Verschiebungseffekt verschiedener Transformationstangenten deutlich zeigt .   

Berechnung der Tangentenabstände zwischen Bildern

Folgen Sie einfach der Implementierung in tangentDistance function:

%Vor%

Ich denke, das oben Genannte sollte ausreichen, um Ihnen den Einstieg zu erleichtern, und falls etwas fehlt, lesen Sie 3 sorgfältig und sehen Sie entsprechende Implementierungen in 2 . Viel Glück!

    
greeness 12.11.2012, 22:19
quelle