DeepFace - Gesichtserkennung - manueller Schritt

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
Zoja
User
Beiträge: 145
Registriert: Freitag 28. Februar 2014, 14:04

Hallo zusammen,

ich recherchiere gerade zum Thema Gesichtserkennung.

Wie es aussieht sind die Algorithmen von Facebook (DeepFace) und Google (FaceNet) große Konkurrenten, wobei FaceNet wohl besser ist.

Eine Sache verstehe ich vielleicht nicht ganz:

In DeepFace wird ein 3D-Schritt benutzt um das Gesicht auf dem Bild richtig zu zentrieren, hierfür werden wohl in zwei Schritten Kontrollpunkte erkannt (Auge, Nase, Mund etc.).

Im zweiten Schritt werden 67 weitere Kontrollpunkte erkannt, die nötig sind um das Gesicht in Flächen zu unterteilen und es auf das 3D-Modell abzubilden. Nun wird das Erkennen der 67 Kontrollpunkte automatisch gemacht, aber das Platzieren des Gesichtes auf das 3D-Modell geschieht manuell

Zitat:
As a 3D generic shape model, we simply
take the average of the 3D scans from the USF Human-ID
database, which were post-processed to be represented as
aligned vertices vi = (xi; yi; zi)ni
=1. We manually place
67 anchor points on the 3D shape
,
Bei FaceNet gibt es keine manuellen Schritte, wie kann hier überhaupt von Konkurrenz gesprochen werden?

DeepFace erreicht zwar eine hohe Genauigkeit, aber manuellen Setzten von Punkten würde ja bei dem Datensatz (4 Mio. Bilder, die zu 4000 Perosnen gehören) ewig dauern?

Bei Inputbildern, die erkannt werden sollen muss das auch manuell geschehen, aber beim 4 Mio Bildern? Oder verstehe ich etwas falsch, vielleicht ist hier der ein oder andere Facerecognition Experte
BlackJack

Alleine von der Beschreibung ist mir jetzt nicht wirklich klar worum es konkret geht.
Zoja
User
Beiträge: 145
Registriert: Freitag 28. Februar 2014, 14:04

BlackJack hat geschrieben:Alleine von der Beschreibung ist mir jetzt nicht wirklich klar worum es konkret geht.
Ja man muss das Thema kennen, deswegen habe ich es einfach mal hier versucht, weil ich kein Facerecognition Forum gefunden habe, man muss DeepFace kennen.

Ich will den research paper auch keinem zumuten, das ist viel Stoff.
Ich denke auch ich verstehe es richtig.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Zoja hat geschrieben:
As a 3D generic shape model, we simply
take the average of the 3D scans from the USF Human-ID
database
, which were post-processed to be represented as
aligned vertices vi = (xi; yi; zi)ni
=1. We manually place
67 anchor points on the 3D shape
,
Ich hab mal die Stellen im Zitat hervorgehoben die mehr als eindeutig deutlich machen dass du den Text nicht verstehst. Diese 67 anchor points werden nicht auf einem zu analysierenden Bild (oder überhaupt irgendeinem Bild) gewählt, sondern auf einem 3D Modell eines durchschnittlichen Gesichtes.

Das wird auch mehr als deutlich wenn man diesen Teil des Papers liest, welches doch überraschend einfach zu verstehen ist.
Zoja
User
Beiträge: 145
Registriert: Freitag 28. Februar 2014, 14:04

DasIch hat geschrieben:
Zoja hat geschrieben:
As a 3D generic shape model, we simply
take the average of the 3D scans from the USF Human-ID
database
, which were post-processed to be represented as
aligned vertices vi = (xi; yi; zi)ni
=1. We manually place
67 anchor points on the 3D shape
,
Ich hab mal die Stellen im Zitat hervorgehoben die mehr als eindeutig deutlich machen dass du den Text nicht verstehst. Diese 67 anchor points werden nicht auf einem zu analysierenden Bild (oder überhaupt irgendeinem Bild) gewählt, sondern auf einem 3D Modell eines durchschnittlichen Gesichtes.

Das wird auch mehr als deutlich wenn man diesen Teil des Papers liest, welches doch überraschend einfach zu verstehen ist.
Hmm... ich hab die Stelle bestimmt schon wieder 5 mal gelesen, es wird doch klar gesagt, dass die 67 punkte auf den 2d-aligned crop gesetzt werden (Figure 1. c). Auf (c) ist auch das Beispielbild von Sylvester Stallone und nicht das Modell. Weiterhin sagen sie, dass diese anchorpoints manuell gesetzt werden, um volle Übereinstimmung zum 3D Modell zu haben.

Diese 67 Kontrollpunkte wären ja auch bei jedem Gesicht relativ zum Gesicht gleich, aber jedes Gesicht ist trotzdem anders? Ich finde das wird nicht klar aus dem Text.

D.h. so wie du das verstehst, werden diese 67 anchorpoints auf dem 3D Modell markiert (es ist ja ein generisches Modell). Wenn nun auf einem Bild diese 67 Kontrollpunkte erkannt werden, weiß man wo diese an dem 3D Modell anzuordnen sind. Somit würde man nur 1 x auf dem Modell diese 67 Punkte festlegen.

Danke, dass du dich damit auseinnader gesetzt hast.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Also um mal ein paar Schritte zurückzugehen, das Problem um dass es bei Face Alignment geht, ist nicht ein Gesicht zu finden, sondern auch die Form und Richtung zu ermitteln. Das ermöglicht "frontalizing" (Fig 1 g) also das Gesicht so zu verändern dass es in die Kamera schaut. Das ganze passiert indem man ein 3D Modell des Gesichts ermittelt.

Dazu wird ein Referenzmodell eines Gesichtes erstellt. Das ist einfach ein 3D Modell eines durchschnittlichen Gesichtes (basierend auf irgendeiner Datenbank) bei dem man 67 Punkte (die anchor points) manuell ausgewählt hat. Dieses Modell ist Teil es Algorithmus, dass wird nicht erst erstellt wenn er angewandt wird.

Nachdem man über ein 2D Face Alignment Prozess das Gesicht aus dem Bild ausgeschnitten hat, werden auf dem Ausschnitt 67 fiducial points ermittelt. Diese Punkte korrespondieren mit den anchor points im Referenzmodell. Basierend auf diesem Referenzmodell (3D) (und den anchor points) wird nun aus den 67 fiducial points, welche auf dem 2D Ausschnitt sind, wird dann eine 3D Repräsentation des Gesichts erstellt. Die wird dann für frontalization genutzt.

Ich glaub man kann es sich so vorstellen, dass man sich eine blanke Maske baut und darauf dann das Bild eines Gesichts klebt.
Zoja
User
Beiträge: 145
Registriert: Freitag 28. Februar 2014, 14:04

DasIch hat geschrieben:Also um mal ein paar Schritte zurückzugehen, das Problem um dass es bei Face Alignment geht, ist nicht ein Gesicht zu finden, sondern auch die Form und Richtung zu ermitteln. Das ermöglicht "frontalizing" (Fig 1 g) also das Gesicht so zu verändern dass es in die Kamera schaut. Das ganze passiert indem man ein 3D Modell des Gesichts ermittelt.

Dazu wird ein Referenzmodell eines Gesichtes erstellt. Das ist einfach ein 3D Modell eines durchschnittlichen Gesichtes (basierend auf irgendeiner Datenbank) bei dem man 67 Punkte (die anchor points) manuell ausgewählt hat. Dieses Modell ist Teil es Algorithmus, dass wird nicht erst erstellt wenn er angewandt wird.

Nachdem man über ein 2D Face Alignment Prozess das Gesicht aus dem Bild ausgeschnitten hat, werden auf dem Ausschnitt 67 fiducial points ermittelt. Diese Punkte korrespondieren mit den anchor points im Referenzmodell. Basierend auf diesem Referenzmodell (3D) (und den anchor points) wird nun aus den 67 fiducial points, welche auf dem 2D Ausschnitt sind, wird dann eine 3D Repräsentation des Gesichts erstellt. Die wird dann für frontalization genutzt.

Ich glaub man kann es sich so vorstellen, dass man sich eine blanke Maske baut und darauf dann das Bild eines Gesichts klebt.
jep genau, vielen Dank. Das hilft mir noch mal diese eine Stelle genauer zu verstehen!
Antworten