2012-03-31 11 views
1

Ich versuche, nur 2 Gesichter zu vergleichen und ihre Ähnlichkeit zu erhalten - Score von wie viel stimmen sie überein. Ich suche Internet nach Lösung, aber ich kann Gesichtserkennung nur gegen Satz von Trainingsbildern finden, kann ich nicht finden, wenn jemand Forschungen über dieses Problem durchführt - ich habe 2 unbekannte Gesichter und ich möchte herausfinden, ob es die gleiche Person ist oder nicht. Kannst du mir irgendeinen Anhaltspunkt geben, Ressourcen irgendetwas, was mir helfen könnte? Wenn es irgendeine Implementierung gibt, wäre es toll, wenn es - C#, C++ Ich versuche, openCV - Gesichter zu erkennen, Gesichter gegen einige Datenbank (get Eigenabstand) zu erkennen und Euklidean Entfernungen zu vergleichen, aber ich bekomme schlechte Ergebnisse. Vielleicht ist mein Ansatz falsch und ich verstehe nicht vollständig Eigenfaces und euklid distances)Zwei Gesichter Vergleich

Vielen Dank!

Antwort

1

Es scheint, dass Sie die Ähnlichkeit zwischen den beiden Gesichtern finden wollen. OpenCV bietet grundlegende Funktionen zum Anpassen von Vorlagen zwischen zwei Bildern. Here ist eine nette Erklärung und vollwertige C-Code dafür.

Wie dort erklärt, wird die Ausgabe der Übereinstimmung für jeden Punkt in den Bildern gespeichert. Das Finden der Übereinstimmung von dort wird im this Tutorial gezeigt, einschließlich der verschiedenen verwendeten Normalisierungen.

Auch über diese link auf schnelle Vorlage Übereinstimmung mit der späteren C++ - Schnittstelle, aber nicht persönlich verwendet.

Wenn Ihre Gesichter nur flüchtige Bilder sind, mit wenig Variation in Rotation, Perspektive usw., dann sollte diese grundlegende Vorgehensweise für Ihre Bedürfnisse ausreichen.

1

Erstens, seien Sie gewarnt, dass dies weit von einem gelösten Problem entfernt ist. In der Tat ist es ein relatives Forschungsgebiet in der Computer Vision. Bitte werfen Sie einen Blick auf die Labeled Faces in the Wild dataset, die genau die Aufgabe verwendet, über die Sie sprechen, zwei Gesichter zu vergleichen. Von besonderem Interesse für Sie ist die results section, die Berichte enthält, für die Algorithmen (und die entsprechenden Papiere) am besten funktionieren.

Es scheint jedoch, dass dies alles ziemlich fortgeschritten ist. Es scheint, dass Sie mit maschinellem Lernen und/oder Computer Vision nicht vertraut sind. In diesem Fall sollten Sie sich die Lehrbücher in diesen Bereichen ansehen.

Wie auch immer, die grundlegende Sache ist dies: Sie wollen keine Pixel verwenden, um Gesichter zu vergleichen, weil sie sich mit Beleuchtung und Pose so stark verändern. (Sie sollten es versuchen!) Also müssen Sie Pixel auf eine Weise transformieren, die Gesichter von der gleichen Person ähnlich macht und Gesichter von verschiedenen Leuten unterscheidet. Dies ist eine Merkmalsextraktion, und es ist wohl der schwierigste und wichtigste Teil der Gesichtserkennung. Woher weißt du, welcher der beste Weg ist, sie zu transformieren? Hier kommen die Trainingsdatensätze ins Spiel. Wenn Sie zum Beispiel Eigengesichter verwenden (die übrigens eine recht schlechte Leistung haben sollten), verwenden Sie die Trainingsdaten, um die Eigenvektoren zu erhalten, die diese Daten am besten repräsentieren. Dann vergleichen Sie zwei Gesichter, projizieren jede Fläche auf die Eigenvektoren und verwenden euklidische Distanz. (Dies ist das gleiche wie mit Mahalonobis Abstand).

+0

Dank, bis jetzt habe ich versucht, diese Gesichter gegen Trainingsvektoren zu zerlegen - es gibt mir eine Reihe von Abständen von jedem Trainings-Set, aber wenn ich es "durch euklidische Distanz" es gibt mir schreckliche Ergebnisse - Fotos der gleichen Die Person hat eine größere Distanz als die Gesichter verschiedener Menschen. –

+0

Die Ähnlichkeit mit einer Gruppe von Menschen zu verwenden, ist keine schlechte Idee - es gibt ein paar Papiere, die das auf raffiniertere Weise tun. Aber nur einfache RGB-Bilder und euklidische Funktionen werden wahrscheinlich die meiste Zeit nicht funktionieren. Gesichtserkennung ist ein viel schwierigeres Problem als es scheint! – dimatura