HyperAI

Alle Schauspieler Von The Big Bang Theory Im Browser Taggen – Face-api.js

vor 7 Jahren
Ruhmeshalle
Empfohlene Liste
Sparanoid
特色图像

HyperAI-Einführung

Vergessen Sie die unschönen Dinge, es gibt immer noch Leute, die gute Browser entwickeln.

Kürzlich hat eine Gruppe von Ingenieuren eine Gesichtserkennungs-API entwickelt, die im Browser basierend auf dem Kernframework von tensorflow.js ausgeführt werden kann - face-api.js, das nicht nur mehrere Gesichter gleichzeitig erkennen kann,Ermöglichen Sie mehr nicht professionellen KI-Ingenieuren die kostengünstige Nutzung der Gesichtserkennungstechnologie.

Prinzip der Gesichtserkennung

face-api.js ist ein JS-Framework, das auf dem Kern von Tensorflow.js basiert. Es verwendet drei Arten von CNN, um Gesichtserkennung und Gesichtsmerkmalserkennung durchzuführen und so Personen in Bildern zu identifizieren.

Wie die meisten Bilderkennungstechnologien wird diese Technologie implementiert, indem ein Abgleich mit der Datenbank durchgeführt wird, das Bild mit der größten Ähnlichkeit gefunden wird und das Ergebnis ausgegeben wird. face-api.js kann jedoch mehrere Gesichter gleichzeitig in einem Bild erkennen.

Das allgemeine Funktionsprinzip der Gesichtserkennungstechnologie lautet: Ingenieure geben zunächst eine große Anzahl mit Informationen wie Namen markierter Bilder in das System ein, um einen Datentrainingssatz zu erstellen, und verwenden dann die Erkennungsobjekte als Testsatz, um sie mit den Bildern im Trainingssatz zu vergleichen.

Erreicht die Ähnlichkeit zwischen zwei Bildern den Schwellenwert, wird das Ergebnis ausgegeben, andernfalls wird „unbekannt“ ausgegeben.

Das Implementierungsprinzip von face-api.js

Zunächst ist eine Gesichtserkennung erforderlich, d. h. das Einkreisen aller Gesichter im Bild.

face-api.js verwendet den SSD-Algorithmus (Single Shot Multibox Detector) zur Gesichtserkennung. Der SSD-Algorithmus ist eine Methode zur Erkennung mehrerer Ziele, die Zielkategorien direkt erkennen und den Begrenzungsrahmen (allgemein als B-Box bezeichnet) bestimmen kann. Dadurch können die Erkennungsgenauigkeit und die Erkennungsgeschwindigkeit gleichzeitig verbessert werden.

SSD kann als ein auf MobileNetV1 basierendes CNN mit einer zusätzlichen Grenzvorhersageschicht verstanden werden. Das System umkreist zunächst die Gesichtskontur mit einem Begrenzungsrahmen und bewertet sie. Je näher das Bild am Gesicht ist, desto höher ist die Punktzahl, wodurch Bildinhalte ohne Gesichtsbezug herausgefiltert werden.

Alle Schauspieler von The Big Bang Theory im Browser taggen – face-api.js

Um Genauigkeit zu gewährleisten, sollten die in den Testsatz eingegebenen Bilder auf dem Gesicht zentriert sein, daher muss der Begrenzungsrahmen des Gesichts ausgerichtet sein. Zu diesem Zweck verwendet face-api.js ein einfaches CNN, um 68 Orientierungspunkte zu finden und das Gesichtsbild zu bestimmen, und bereitet so den nächsten Schritt der Gesichtserkennung vor.

Alle Schauspieler von The Big Bang Theory im Browser taggen – face-api.js

Beispiel

Durch die Landmarkenpunkte kann das System das Gesichtsbild weiter bestimmen. Die folgenden Abbildungen zeigen die Effekte vor (links) und nach (rechts) der Gesichtsausrichtung.

Alle Schauspieler von The Big Bang Theory im Browser taggen – face-api.js

Diagramm zur Wirkung der Gesichtsausrichtung

Offensichtlich gibt es nach der Ausrichtung weniger Dinge, die nicht mit dem Gesicht in Zusammenhang stehen, was zur Verbesserung der Erkennungsgenauigkeit des Systems beiträgt.

Implementierung der Gesichtserkennung

Nachdem das Gesicht eingekreist ist, beginnt die Gesichtserkennung.

Das Programm gibt die ausgerichteten Gesichter in ein Deep-Learning-Netzwerk zur Gesichtserkennung ein, das auf ResNet-34 Systemarchitektur, Gesichtserkennung durch Dlib-Bibliothek. Mit dieser Technik können Gesichtsmerkmale einem Gesichtsdeskriptor (einem Merkmalsvektor mit 128 Werten) zugeordnet werden. Dieser Vorgang wird häufig als „Gesichtseinbettung“ bezeichnet.

Anschließend vergleicht das Programm die Gesichtsdeskriptoren jedes Bildes mit den Gesichtsdeskriptoren im Trainingssatz und ermittelt anhand eines Schwellenwerts, ob die beiden Gesichter ähnlich sind (für ein Gesichtsbild mit 150 × 150 Pixeln ist ein Schwellenwert von 0,6 angemessener).

Zur Ähnlichkeitsmessung kann die euklidische Distanz (d. h. die euklidische Metrik) verwendet werden, was sehr gut funktioniert. Der tatsächliche Effekt kann im folgenden GIF-Bild beobachtet werden.

Alle Schauspieler von The Big Bang Theory im Browser taggen – face-api.js

Reden ist billig, zeigen Sie mir den Code!

Nachdem wir Ihnen das theoretische Wissen vermittelt haben, ist es an der Zeit, Sie durch den praktischen Prozess zu führen. Als Eingabebild wird die folgende Abbildung verwendet.

Alle Schauspieler von The Big Bang Theory im Browser taggen – face-api.js

Schritt 1: Holen Sie sich das Skript

Sie können das neueste Skript von dist/face-api.js herunterladen:

Alle Schauspieler von The Big Bang Theory im Browser taggen – face-api.js

Es kann auch über NPM bezogen werden:

Alle Schauspieler von The Big Bang Theory im Browser taggen – face-api.js

Schritt 2: Laden des Datenmodells

Modelldateien können als statische Ressourcen von Webanwendungen verwendet oder an anderen Orten bereitgestellt werden. Modelle können durch Angabe von Dateipfaden oder URLs geladen werden.

Angenommen, das Modell befindet sich im Verzeichnis public/models:

Alle Schauspieler von The Big Bang Theory im Browser taggen – face-api.js

Wenn Sie ein bestimmtes Modell laden, dann:

Alle Schauspieler von The Big Bang Theory im Browser taggen – face-api.js

Schritt 3: Holen Sie sich eine vollständige Beschreibung

Als Eingabe für das Netzwerk können HTML-Bilder, Canvas oder Videos verwendet werden. Hier ist eine vollständige Beschreibung zum Abrufen des Eingabebilds, d. h. aller Gesichter:

Alle Schauspieler von The Big Bang Theory im Browser taggen – face-api.js

Sie können die Gesichtsposition und -merkmale auch selbst auswählen:

Alle Schauspieler von The Big Bang Theory im Browser taggen – face-api.js

Sie können das Ergebnis auch visualisieren, indem Sie einen Rahmen über HTML-Canvas anzeigen:

Alle Schauspieler von The Big Bang Theory im Browser taggen – face-api.js

Alle Schauspieler von The Big Bang Theory im Browser taggen – face-api.js

Die Gesichtszüge sind unten dargestellt:

Alle Schauspieler von The Big Bang Theory im Browser taggen – face-api.js

Jetzt können wir die Position und die Deskriptoren jedes Gesichts im Eingabebild berechnen, die als Referenzdaten dienen.

Der nächste Schritt besteht darin, die URL des Bildes zu erhalten und zu verwenden faceapi.bufferToImage Erstellen Sie ein HTML-Bildelement:

Alle Schauspieler von The Big Bang Theory im Browser taggen – face-api.js

Suchen Sie für jedes Bild das Gesicht und berechnen Sie den Deskriptor:

Alle Schauspieler von The Big Bang Theory im Browser taggen – face-api.js

Iterieren Sie dann über die Gesichtsdeskriptoren des Eingabebilds und suchen Sie den ähnlichsten Deskriptor in den Referenzdaten:

Alle Schauspieler von The Big Bang Theory im Browser taggen – face-api.js

Ermitteln Sie mithilfe der euklidischen Metrik die beste Übereinstimmung für jedes Gesicht im Eingabebild und zeigen Sie den Begrenzungsrahmen und seine Beschriftung in einer HTML-Leinwand an:

Alle Schauspieler von The Big Bang Theory im Browser taggen – face-api.js

Alle Schauspieler von The Big Bang Theory im Browser taggen – face-api.js

Dies ist der gesamte Prozess der Gesichtserkennung durch face-api.js. Ist es nicht ganz einfach?Interessierte Freunde können es gerne ausprobieren und uns gerne ihre Versuchsergebnisse und Erfahrungen zukommen lassen.