Ich arbeite an einem kleinen Projekt, das die Gesichter von Twitter-Nutzern über ihre Profilbilder einbezieht.
Ein Problem, auf das ich gestoßen bin, ist, dass ein kleiner, aber bedeutender Prozentsatz der Twitter-Benutzer ein Bild von Justin Bieber als Profilbild verwendet, nachdem ich alle Bilder mit Ausnahme von klaren Porträtfotos herausgefiltert habe.
Wie kann ich programmgesteuert erkennen, ob es sich bei einem Bild um ein Bild von Justin Bieber handelt, um es herauszufiltern?
[justin-bieber]
Tag benötigt.Antworten:
Eine bessere Idee ist es, alle Bilder, die im Feed von mehr als einem Benutzer angezeigt werden, in den Papierkorb zu werfen - es ist keine Erkennung erforderlich.
quelle
Ich habe das Gefühl, dass http://www.tineye.com/commercial_api die Lösung sein könnte. Wirf das Twitter-Profilbild einfach zu Tineye, um zu prüfen, ob es Bilder (und zugehörige URLs) zurückgibt, die eindeutig als mit diesem kleinen Sack * * verwandt (oder automatisch mit einer einfachen Wortzählungslogik bewertet) werden können .
Simples!
quelle
Da Sie nur nach klaren Porträtfotos filtern können, wird davon ausgegangen, dass Sie über eine Methode zur Feature-Generierung verfügen, mit der die Rohbilder in Features umgewandelt werden, die für das maschinelle Lernen nützlich sind. Wenn dies zutrifft, können Sie versuchen, einen Klassifizierungsalgorithmus zu trainieren (es gibt viele davon: neuronale Netze usw.), indem Sie dem Algorithmus eine Reihe bekannter Bieber-Fotos sowie eine Reihe bekannter Nicht-Bieber zuführen. Sobald Sie das Modell trainiert haben, können Sie damit vorhersagen, ob es sich bei einem neuen Bild um Bieber handelt oder nicht.
Für diese Art des überwachten Lernens müssen Sie Daten haben, bei denen Sie die richtige Antwort kennen (Bieber oder nicht), aber diese könnten wahrscheinlich über eine Google-Bildsuche gefunden werden. Es erfordert auch, dass Sie über die richtigen Funktionen verfügen, und ich weiß nicht genug über die Bildverarbeitung oder Ihren Algorithmus, um zu wissen, ob dies ein wesentlicher Nachteil ist.
quelle
Sie können eine Methode wie Eigengesichter verwenden, http://en.wikipedia.org/wiki/Eigenface . Im Folgenden finden Sie einen guten Überblick über die Prozedur sowie Links zu verschiedenen Implementierungen.
http://www.pages.drexel.edu/~sis26/Eigenface%20Tutorial.htm
Ab hier ist es üblich, dies in einem Klassifizierungsansatz zu verwenden, ein Modell zu trainieren und dann Fälle vorherzusagen. Sie können dies tun, indem Sie an einer Reihe bekannter Prominenter trainieren. Wenn Sie ein Gesicht von Twitter als eines in Ihrem trainierten Prominentenmodell vorhersagen, entfernen Sie es. Ähnlich dazu http://blog.cordiner.net/2010/12/02/eigenfaces-face-recognition-matlab/
Dies leidet unter ständigen Änderungen. In Kürze wird es einen neuen Justin Bieber geben, der nicht in Ihrem trainierten Modell enthalten ist. Sie können es also nicht vorhersagen. Es gibt auch einen Fall wie Whitney Houston, vielleicht haben Sie noch nie darüber nachgedacht, sie hinzuzufügen, aber vielleicht ist sie für ein paar Wochen ein häufiges Bild aus Respekt und Bewunderung. Sie werden jedoch nicht die Nachteile der oben erwähnten Babybilder haben. Um diese Probleme zu lösen, könnten Sie eher einen hierarchischen Clustering-Ansatz verwenden. Wenn Sie die ersten Gruppen von Clustern entfernen, die sehr nahe beieinander liegen, wenn sie eine bestimmte Unterstützungsstufe erreichen, enthält Ihr erster Cluster 15 Elemente, bevor eine zweite erstellt wird. Jetzt müssen Sie sich keine Gedanken mehr darüber machen, wessen in Ihrem Trainingsmodell Sie sich befinden, aber Sie werden auf das Thema Babybilder stoßen.
quelle
http://face.com/ hat eine kostenlose Gesichtserkennungs-API
quelle
Wenn Sie es selbst tun möchten, würde ich empfehlen, Intels kostenloses OpenCV-Projekt (CV for Computer Vision) zu verwenden.
http://opencv.willowgarage.com/
http://oreilly.com/catalog/9780596516130
quelle
Sie müssen einen Algorithmus anwenden, der erkennt, auf welche Person sich das Bild bezieht. Sie können ein Modell auf der Grundlage verschiedener Porträtbilder berühmter Persönlichkeiten erstellen und Klassifikatoren verwenden, um sicherzustellen, dass sich dieses Bild auf eines Ihrer Datenbankbilder bezieht. Sie müssen einen bestimmten Klassifikator verwenden, der auf verschiedenen Gesichtsparametern basiert, z. B. dem Augenabstand oder anderen Parametern, um die Genauigkeit Ihres Modells zu erhöhen. Es gibt auch eine Hautanalyse. Das Wichtigste ist, einen guten Klassifikator zu bauen. Diese Methode kann anfällig sein.
Es gibt aber auch ein sehr gutes Projekt zur Gesichtserkennung http://opencv-code.com/Opencv_Face_Detection
quelle
Versuchen Sie es mit ortsabhängigem Hashing .
quelle