Eigene Gesichter: Menschen von Geistern unterscheiden

Abbildung 1: Casper das freundliche Gespenst (Quelle: https://vignette.wikia.nocookie.net/christmasspecials/images/e/e8/Casper.jpg/revision/latest?cb=20121014033319)

Mehr haben, indem man weniger hat… Einfach! Diese Methode des maschinellen Lernens hilft Ihnen, mit einigen Grundlagen der linearen Algebra mehr Informationen auf kleinerem Raum zu speichern. Auf diese Weise werden wir menschliche Gesichter aus einem geisterhaften Durcheinander wiederherstellen.

Sie haben sicher schon gehört, dass unabhängige Vektoren auf abstrakte Weise Räume schaffen. Stellen Sie sich nun vor, es wäre wirklich so. Alle Räume werden durch Vektoren gebildet, ebenso wie die Dinge in diesen Räumen. Einige dieser Vektoren tragen zu einigen der Dinge mehr bei als die anderen. Die anderen können neben ihnen vernachlässigbar sein, und vielleicht brauchen wir von ihnen nichts zu wissen, weil es uns im Grunde egal ist und wir ihre Probleme nicht mit uns herumtragen wollen. Genau das werde ich in diesem Beitrag über Eigenflächen zeigen.

Abbildung #2: nicht dieser Raum, sondern auch dieser Raum (Quelle: https://img.purch.com/w/660/aHR0cDovL3d3dy5saXZlc2NpZW5jZS5jb20vaW1hZ2VzL2kvMDAwLzA5Ny85NTcvb3JpZ2luYWwvc3BhY2UuanBn)

Unser Hauptthema ist PCA. Es ist ein weit verbreiteter Algorithmus in einer Vielzahl von Bereichen. Die Anwendung auf Gesichter macht sie für den Menschen besser interpretierbar und ist daher eine der beliebtesten Anwendungen. Eigenfaces ist eine Methode, die für die Erkennung und Detektion von Gesichtern nützlich ist, indem sie die Varianz von Gesichtern in einer Sammlung von Gesichtsbildern bestimmt und diese Varianzen verwendet, um ein Gesicht auf eine maschinelle Lernmethode zu kodieren und zu dekodieren, ohne die vollständige Information, was die Komplexität der Berechnung und des Raums reduziert. Obwohl das Verfahren erstmals 1991 von Turk und Pentland verwendet wurde und im Vergleich zur heutigen Technik Einschränkungen aufweist, sind seine Grundlagen für neue Verfahren immer noch sehr nützlich.

Abbildung #3: LFW (Quelle: http://vis-www.cs.umass.edu/lfw/Six_Face_Panels_sm.jpg)

Bevor wir uns der Implementierung zuwenden, möchte ich Ihnen eine kleine Einführung in die genannten Grundkonzepte geben. Außerdem finden Sie hier das vollständige Skript und den Datensatz (ein kleiner Teil von LFW_cropped), den ich verwendet habe.

Eigenvektoren und Eigenwerte

Wir alle wissen, wie Eigenvektoren und Eigenwerte genau funktionieren. Vielleicht nicht genau, aber wir haben schon oft von ihnen gehört. Hier ist eine Erklärung für die Minderheit wie mich, die es immer wieder vergisst.

Angenommen, wir haben eine quadratische Matrix A. Fast alle Vektoren ändern ihre Richtung, wenn sie mit A multipliziert werden, wie wir es erwarten. Es gibt jedoch bestimmte Vektoren x, die genau die gleiche Richtung wie Ax haben. Also… Raten Sie mal? Das sind unsere Eigenvektoren. Besondere… Selbst wenn sie die gleiche Richtung haben, können Ax und x immer noch zwei verschiedene Vektoren sein, was ihre Größe angeht. Hier ist eine bekannte Gleichung. Ax=λx. Was diese beiden Vektoren gleich macht, ist λ, unser Skalar für den Betragsausgleich, der Eigenwert. Dieser sagt uns, wie sich unser Eigenvektor nach der Multiplikation verändert hat

Aus dem oben Gesagten können Sie erkennen, warum sie in der Praxis nützlich sind. Für ein tieferes Verständnis und wahrscheinlich auch für eine bessere Einschätzung besuchen Sie das MIT-Kapitel Eigenwerte und Eigenvektoren.

Principal Component Analysis (PCA)

Das Hauptziel der PCA ist die Dimensionalitätsreduktion. Sie hat viele Anwendungen in der Visualisierung, Merkmalsextraktion, Datenkompression usw. Die Idee dahinter ist die lineare Projektion von Originaldaten auf einen Unterraum mit geringerer Dimensionalität, der den Hauptkomponenten (Eigenvektoren) eine maximale Varianz der projizierten Daten und/oder einen minimalen Verzerrungsfehler durch die Projektion bietet. Letztendlich führen beide zu demselben Ergebnis, nämlich der besten Rekonstruktionsformel. Nebenbei bemerkt wird dieser Unterraum Hauptunterraum genannt.

Für Berechnungen zur Maximierung der Varianz und Minimierung des Verzerrungsfehlers können Sie die Vorlesungsunterlagen der ANU über PCA aufrufen. Auch ein anderes Video auf youtube mit dem Titel Principal Components Analysis -Georgia Tech-Machine Learning hat mir geholfen, die Konzepte viel besser zu verstehen.

Implementierung

Ok! Alle sind bereit für die Implementierung. Zuerst importieren wir die benötigten Bibliotheken. Ich gehe davon aus, dass ihr alle wisst, wofür sie da sind. Ich werde mich auf den Erklärungsteil der Algorithmen konzentrieren. Wenn ihr weitere Fragen zum Code habt, hinterlasst eine Antwort unten.

Dann brauchen wir eine Funktion, um die Bilder aus unserem Datensatz auf eine gut aussehende Weise zu visualisieren. Hier ist sie.

Lassen Sie uns sie auf unseren Datensatz lfwcrop_grey.zip anwenden. Hier nehme ich nur die ersten 1000 der Gesichter, weil das sehr rechenaufwändig ist, aber das ist wirklich egal. Wenn Sie das volle Programm nutzen wollen, können Sie das tun. Ich habe die Bilder auch in ein Numpy-Array (1000, 64, 64) für die Verarbeitung umgewandelt.

Leave a Reply