Wie man ein echtes Gesicht bei der Gesichtserkennung von einem falschen unterscheidet

Bild



Kurzbeschreibung



Der Unterschied zwischen dem Gesicht einer realen Person und einem falschen Gesicht in einer Kamera ist immer noch eines der schwierigsten Probleme bei Steuerungssystemen und beim Zugang zu Räumlichkeiten. Es wird ein Algorithmus vorgeschlagen, um das Blinken von Augen in Echtzeit in einer Videosequenz von einer Standardkamera zu erfassen, was uns die Tatsache gibt, dass die Person in der Kamera real ist. Die neuesten Orientierungspunktdetektoren, die auf Datensätzen vor Ort trainiert wurden, zeigen eine hervorragende Beständigkeit gegen die Kopforientierung in Bezug auf die Kamera, wechselnde Lichtverhältnisse und Gesichtsausdrücke. Wir zeigen, dass Orientierungspunkte genau genug erkannt werden, um den Grad der Augenöffnung zuverlässig abzuschätzen. Somit schätzt der vorgeschlagene Algorithmus die Position von Landmarken und extrahiert ein Skalar-Fundus-Verhältnis (EAR), das die Augenöffnung in jedem Rahmen charakterisiert. Schließlich,Der SVM-Klassifikator erkennt das Blinken der Augen als Muster von EAR-Werten in einem kurzen Zeitfenster. Der einfache Algorithmus übertrifft moderne Ergebnisse bei zwei Standarddatensätzen.



Dlib-Bibliothek



In diesem Artikel verwende ich Gesichtsindizes für dlib- Gesichtsregionen . Der in der dlib-Bibliothek implementierte Gesichtsmarkierungsdetektor erzeugt 68 (x, y) Koordinaten, die bestimmten Gesichtsstrukturen zugeordnet sind. Diese 68-Punkt-Zuordnungen wurden erhalten, indem der Formprädiktor auf dem markierten iBUG 300-W-Datensatz trainiert wurde .



Im Folgenden können wir visualisieren, worauf jede dieser 68 Koordinaten abgebildet wird: Abbildung 1 - Rendern jedes der 68 Gesichtskoordinatenpunkte aus dem iBUG 300-W- Datensatz Durch Untersuchen des Bildes können wir sehen, dass auf die Gesichtsbereiche durch einfache Python-Indizierung zugegriffen werden kann ( unter der Annahme, dass mit Python keine Indizierung erfolgt, da das obige Bild eine indizierte ist):













  • Der Mund ist über Punkte zugänglich [49, 68].
  • Rechte Augenbraue durch Punkte [18, 22].
  • Linke Augenbraue durch Punkte [23, 27].
  • Das rechte Auge durch die Punkte [37, 42].
  • Das linke Auge durch die Punkte [43, 48].
  • Die Nase durch die Punkte [28, 36].
  • Und der Kiefer durch die Punkte [1, 17].


Augenproportion (EAR) verstehen. Wir können die Erkennung von Gesichtsmarkierungen anwenden, um wichtige Bereiche des Gesichts zu lokalisieren, einschließlich Augen, Augenbrauen, Nase, Ohren und Mund:





Abbildung 2 - Echtzeiterkennung von Gesichtsmarkierungen im Bild



Dies bedeutet auch, dass wir bestimmte Gesichtsstrukturen extrahieren können, indem wir die Indizes bestimmter kennen Teile des Gesichts:





Abbildung 3 - Anwendung von Gesichtspunkten zur Lokalisierung verschiedener Bereiche des Gesichts, nämlich des rechten Auges und des Mundes



Blinkerkennung



Aus Sicht der Blinzelerkennung interessieren uns nur zwei Arten von Gesichtsstrukturen - die Augen. Jedes Auge wird durch 6 (x, y) Koordinaten dargestellt, beginnend am linken Augenwinkel (als ob Sie einen Menschen betrachten würden) und dann im Uhrzeigersinn um den Rest des Bereichs herum arbeiten:





Abbildung 4 - 6 mit dem Auge verknüpfte Gesichtsmarkierungen



Basierend auf In diesem Bild müssen wir an einem wichtigen Punkt aufgreifen: Es gibt eine Beziehung zwischen der Breite und Höhe dieser Koordinaten. Aufbauend auf der Arbeit von Soukupova und Cech in ihrer 2016 erschienenen Arbeit "Erkennen von Augenblinzeln in Echtzeit mithilfe von Gesichtspunkten" können wir dann eine Gleichung ableiten, die diese Beziehung widerspiegelt und als Eye Aspect Ratio (EAR) bezeichnet wird:





Abbildung 5 - Augenproportionsgleichung



Dabei sind p1,…, p6 2D-Orientierungspunkte im Gesicht. Der Zähler dieser Gleichung berechnet den Abstand zwischen den Orientierungspunkten des vertikalen Auges, während der Nenner den Abstand zwischen den Orientierungspunkten des horizontalen Auges berechnet und den Nenner entsprechend wiegt, da es nur einen Satz horizontaler Punkte, aber zwei Sätze vertikaler Punkte gibt.



Wie wir wissen, ist das Seitenverhältnis des Auges bei geöffnetem Auge ungefähr konstant, fällt jedoch beim Blinken schnell auf Null ab. Mit dieser einfachen

Gleichung können wir Bildverarbeitungstechniken vermeiden und uns einfach auf das Verhältnis der Entfernung zum Blickwinkel des Auges verlassen, um festzustellen, ob eine Person blinkt. Betrachten Sie zur Verdeutlichung die folgende Abbildung:





Abbildung 6 - Visualisierung von Augenmarkierungen



In der oberen linken Ecke haben wir ein vollständig offenes Auge - das Seitenverhältnis ist hier groß ® und über die Zeit relativ konstant. Sobald die Person blinkt (oben rechts), nimmt das Seitenverhältnis des Auges jedoch dramatisch ab und nähert sich Null. Die obere Abbildung zeigt eine grafische Darstellung des Seitenverhältnisses eines Auges für einen Videoclip. Wie wir sehen können, ist das Seitenverhältnis des Auges konstant, fällt dann schnell auf nahe Null ab und steigt dann wieder an, was auf ein Blinken hinweist.





Abbildung 7 - Augenzwinkern



Ausnahmen



Aufgrund von Rauschen im Videostream, geringen Erkennungsraten von Gesichtspunkten oder schnellen Änderungen des Betrachtungswinkels kann eine einfache Schwelle des Augenseitenverhältnisses zu einer falsch positiven Erkennung führen, was darauf hinweist, dass ein Blinken auftrat, wenn das Motiv nicht tatsächlich blinzelte. Wie wir in einem medizinischen Artikel lesen, blinkt eine Person durchschnittlich 20 Mal pro Minute, was uns sagt, dass sie alle 3 Sekunden einmal blinkt.



Um unseren Blinkdetektor widerstandsfähiger gegen diese Probleme zu machen, haben wir vor dem Lesen des Blinkens eine Zeitspanne von 3 Sekunden vergangen, und es müssen mindestens 3 Bilder aufgenommen werden, wenn ein Blinken erkannt wird. Die Ergebnisse unserer Forschung haben sehr gute Ergebnisse geliefert. Der Detektor funktionierte genau. Von den zwanzig Tests wurden achtzehn positiv getestet.



Die Probleme dieses Ansatzes



Es gibt auch ungelöste Probleme mit diesem Ansatz. Wenn Sie auf technischem Wege ein Video auf der Kamera zeigen, das das Gesicht einer blinkenden Person zeigt, kann das System zu einer falsch positiven Erkennung führen. Die Lösung dieses Problems kann mit Hilfe eines Bildstoppers durchgeführt werden, wobei wir mit zwei Kameras eine Tiefenkarte erhalten und die Entfernung zum Objekt berechnen können.



Probleme lösen



Dies zeigt den Betrieb von Stereopaarkameras. Nachdem die Bilder korrigiert wurden, wird eine Suche nach den entsprechenden Punktpaaren aus den beiden Bildern durchgeführt. Der einfachste Weg ist in Abbildung 8 dargestellt und sieht wie folgt aus. Für jedes Pixel des linken Bildes mit den Koordinaten (x0, y0) wird im rechten Bild nach einem Pixel gesucht. Es wird angenommen, dass das Pixel auf dem rechten Bild Koordinaten (x0 - d, y0) haben sollte, wobei d ein Wert ist, der als Disparität bezeichnet wird. Die Suche nach dem entsprechenden Pixel wird durchgeführt, indem das Maximum der Antwortfunktion berechnet wird, die beispielsweise die Korrelation der Pixelnachbarschaften sein kann.





Abbildung 8 - Tiefenkartenberechnungen



All Articles