Hallo nochmal,
ich rescherschiere gerade zum Thema Gesichtserkennung und beschäftige mich mit dem Algorithmus von Google.
Dieser benutzt wie DeepFace auch ein neural network zum Trainieren. Trainiert wird aber direkt auf den eigebundenen Bildern. Um zu unterscheiden welche Bilder die selbe Person darstellen und welche nicht, werden triplets generiert aus dem eingebundem Bild, einem zweiten Bild, welches die selbe Person zeigt und ein Bild mit einer fremden Person. Die triplets werden mit Hilfe von Data Mining ausgesucht und generiert.
Im Endresultat haben wir dann die Bilder als Punkte in einem euklidischen Raum. Jede Person hat ein Anchor-Punkt (Bild) und es gibt einen Radius ausgehend von diesem Anchor. Alle Punkte (Bilder) innerhalb dieses Radius gehören zur selben Person und alle außerhalb zu einer fremden. D.h. Gesichtserkennung wird hier an Hand der Distanz durchgeführt. Die Länge des Radius ist dann der threshold.
BSP. aus der https://arxiv.org/pdf/1503.03832v3.pdf - PDF. Hier werden alle Bilder richrig erkannt wenn der threshold bei 1.1 liegt:
Frage:
Ich verstehe nicht wie der Algorithmus nun mit einem neuen Bild umgeht. Bei DeepFace müsste ein neues Bild die ganze Prozedur durchgehen, wie alle Bilder im Datensatz um den F7 Vektor zu generieren. In diesem Vektor sind Merkmale zu jedem Gesicht gespeichert und dann wird dieser F7 Vektor mit anderen Vektoren aus dem Datensatz verglichen.
Aber wie geht das hier? Werden mit dem neuen Bild nun auch triplets gebildet, bis dieses neue Bild irgendwo im euklidischen Raum angesiedelt werden kann? Aber es gibt bei einem neuen Bild kein 2tes Bild dieser Person.
Ich weiß, dass es nicht ganz in Python Forum passt, aber vielleicht hat jemand Ahnung. Ich weiß sonst nicht an wen ich mich wenden soll. In google groups hat leider keiner geantwortet und ich habe bis jetzt noch kein weiteren Inhalt dazu gefunden, der mir weiterhilft.
Danke!
FaceNet - Gesichtserkennungs von Google - wie wird neues Bild erkannt?
Die Antwort ist ganz simpel: gar nicht. Soweit ich dass verstehe brauchst du einfach einige Bilder pro Gesicht damit dass ganze funktioniert. In 3.2 zu Triplet Selection steht auch:
Das macht denke ich auch Sinn. Allein von einem einzigen Porträt das Gesicht einer Person auf anderen Bildern zu erkennen, scheint mir doch eher schwierig bis unmöglich zu sein.In our experiments we sample the training data such that around 40 faces are selected per identity per mini- batch.
Ja ich habs irgendwie überlesen, vielleicht mache ich die threads zu früh auf immer.DasIch hat geschrieben:Die Antwort ist ganz simpel: gar nicht. Soweit ich dass verstehe brauchst du einfach einige Bilder pro Gesicht damit dass ganze funktioniert. In 3.2 zu Triplet Selection steht auch:Das macht denke ich auch Sinn. Allein von einem einzigen Porträt das Gesicht einer Person auf anderen Bildern zu erkennen, scheint mir doch eher schwierig bis unmöglich zu sein.In our experiments we sample the training data such that around 40 faces are selected per identity per mini- batch.
Dann habe ich doch alles richtig verstanden.
Vielen Dank, dass du dich damit wieder befasst hast!
Ich hoffe ich bin auch irgendwann mal so weit, dass ich hier Leuten helfen kann!