Die FaceID -API soll eine Backend -Infrastruktur für die Benutzerauthentifizierung durch Gesichtserkennung einrichten. Diese API fungiert, indem ein Face Repräsentation Vector (FRV) von einem Remote -Client empfangen wird, und überprüft, ob dies vorhandener FRV einem vorhandenen in der Datenbank gespeicherten vorhanden ist. Basierend auf dieser Überprüfung wird der Zugriff dem Kunden entweder gewährt oder verweigert.
Die FaceID -API ist für jeden Client zugänglich, der in der Lage ist, eine HTTP -Anfrage zu senden. Die API entwickelt mit Golang und der Restarchitektur und bietet Flexibilität in Bezug auf die Kundenimplementierung. Kunden können in jeder Programmiersprache entwickelt werden und stammen aus verschiedenen Plattformen wie Web, Mobile oder Desktop. Diese nahtlose Integrationsfähigkeit ermöglicht die Einbeziehung der Gesichtserkennungsfunktionalität in eine Vielzahl von Anwendungen. Bemerkenswerterweise fällt der Prozess der Erlangung des FRV vom Kunden außerhalb des Rahmens der Verantwortlichkeiten der FaceID -API.
Die API -Dokumentation ist unter http://faceid.orionsoft.site/reference verfügbar
HINWEIS: Sie können die Vektoren in vectors.json im Stammverzeichnis dieses Projekts verwenden, um die API zu testen. Diese Vektoren sind bereits in der Datenbank gespeichert.
Gesichtserkennung ist eine Technologie, die die Identifizierung und Überprüfung von Personen durch Analysieren und Vergleich ihrer Gesichtsmerkmale umfasst. Es handelt sich um eine Untergruppe der biometrischen Identifizierung und verfügt über verschiedene Anwendungen, einschließlich Sicherheitssysteme, Authentifizierung und Benutzerzugriffskontrolle. Hier ist eine vereinfachte Übersicht darüber, wie die Gesichtserkennung funktioniert:
Gesichtserkennung: Der erste Schritt besteht darin, Gesichter aus einem Bild- oder Videoprahmen zu lokalisieren und zu extrahieren. Dies geschieht unter Verwendung von Gesichtserkennungsalgorithmen, die potenzielle Gesichtsregionen in den Eingabedaten identifizieren.
Gesichtsausrichtung: Sobald ein Gesicht erkannt wird, kann der Algorithmus eine Gesichtsausrichtung durchführen und sicherstellen, dass sich das Gesicht in einer standardisierten Position befindet. Dies hilft bei der Normalisierung der Merkmale für einen genauen Vergleich.
Merkmalextraktion: Dies ist ein entscheidender Schritt, bei dem charakteristische Merkmale des Gesichts extrahiert und in eine numerische Darstellung verwandelt werden. Diese Merkmale können die Entfernungen zwischen den wichtigsten Landmarken im Gesicht, den Winkeln zwischen bestimmten Punkten und anderen Daten umfassen, die ein Gesicht von einem anderen unterscheiden können. Zu den beliebten Techniken für die Merkmalextraktion gehören lokale Binärmuster (LBP), Histogramm orientierter Gradienten (HOG) und in jüngerer Zeit Deep-Lernbasis-Methoden.
Merkmalscodierung: Die extrahierten Merkmale werden dann in eine kompakte Darstellung umgewandelt, die leicht mit anderen Gesichtsdarstellungen verglichen werden kann. Dies beinhaltet häufig die Reduzierung der Dimensionalität der Merkmale und beinhaltet ihre diskriminierenden Informationen.
Face -Datenbank: In Ihrem Szenario hätten Sie eine Datenbank, die die Gesichtsdarstellungen (oder Einbettungen) autorisierter Benutzer enthält. Diese Datenbank kann erstellt werden, indem eine Reihe von Bildern jedes Benutzers während der Registrierung gesammelt und verarbeitet wird.
Face Matching: Wenn ein Benutzer versucht, Zugriff zu erhalten, wird sein eingereichtes Gesicht durch dieselbe Pipeline verarbeitet: Erkennung, Ausrichtung, Merkmalextraktion und Codierung. Die resultierende Gesichtsdarstellung wird dann mit den Darstellungen in Ihrer Gesichtsdatenbank verglichen, wobei eine Entfernungsmetrik wie euklidische Entfernung oder Kosinusähnlichkeit verwendet wird. Die Idee ist, das engste Match zu finden.
Schwellenwert: Der Vergleich führt zu einem Ähnlichkeitswert. Sie würden einen Schwellenwert festlegen, über dem das eingereichte Gesicht mit einem Gesicht in der Datenbank übereinstimmt. Der Schwellenwert hilft, falsche Positive und falsche Negative auszugleichen.
Entscheidungsfindung: Basierend auf dem Ähnlichkeitswert und dem Schwellenwert wird eine Entscheidung getroffen, ob Zugang zu gewähren ist oder nicht. Wenn die Punktzahl über dem Schwellenwert und innerhalb eines akzeptablen Bereichs liegt, wird der Zugang gewährt. Andernfalls wird der Zugang abgelehnt.
Kontinuierliches Lernen: Um die Erkennungsgenauigkeit im Laufe der Zeit zu verbessern, implementieren einige Systeme kontinuierliches Lernen. Dies beinhaltet regelmäßig die Gesichtsdarstellungen in der Datenbank mit neuen Bildern von Benutzern. Dies kann dazu beitragen, Änderungen des Aussehens aufgrund von Faktoren wie Alterung oder Gesichtsbehaarung zu berücksichtigen.
Der FRV ist ein Vektor, der das Gesicht einer Person darstellt. Es ist eine numerische Darstellung des Gesichts und wird verwendet, um Gesichter zu vergleichen. Der FRV wird durch einen Gesichtserkennungsalgorithmus erzeugt, der von einer auf der Client -Seite verwendeten Bibliothek implementiert wird. Die Client -Seite kann jede Plattform sein (Web, Mobile, Desktop usw.). Schauen wir uns die FRV -Struktur an:
[
0.123, -0.456, 0.789, 0.234, 0.567, 0.123, 0.678, -0.345,
-0.987, 0.876, -0.123, -0.456, 0.789, -0.234, -0.567, 0.123,
0.678, 0.345, -0.987, -0.876, 0.123, 0.456, -0.789, 0.234,
0.567, -0.123, 0.678, 0.345, 0.987, -0.876, -0.123, 0.456,
-0.789, 0.234, -0.567, -0.123, -0.678, 0.345, 0.987, 0.876,
0.123, -0.456, 0.789, -0.234, 0.567, -0.123, -0.678, -0.345,
0.987, -0.876, 0.123, 0.456, -0.789, -0.234, -0.567, -0.123,
0.678, -0.345, -0.987, 0.876, -0.123, -0.456, 0.789, -0.234,
-0.567, 0.123, 0.678, 0.345, -0.987, -0.876, 0.123, 0.456,
-0.789, 0.234, -0.567, -0.123, -0.678, 0.345, 0.987, 0.876,
0.123, -0.456, 0.789, -0.234, 0.567, -0.123, -0.678, -0.345,
0.987, -0.876, 0.123, 0.456, -0.789, -0.234, -0.567, -0.123,
0.678, -0.345, -0.987, 0.876, -0.123, -0.456, 0.789, -0.234,
0.123, -0.456, 0.789, -0.234, 0.567, -0.123, -0.678, -0.345,
0.987, -0.876, 0.123, 0.456, -0.789, -0.234, -0.567, -0.123,
0.678, -0.345, -0.987, 0.876, -0.123, -0.456, 0.789, -0.234
]
Oben haben wir eine 128 Dimension FRV (Gesichtsdarstellungsvektor) einer numerischen Darstellung des Gesichts eines Menschen. Verschiedene Bibliotheken können unterschiedliche Dimensionen -FRVs erzeugen, die 256, 512 oder sogar mehr Dimensionen lang sein können. Wir können diesen FRV als einen numerischen Unic -Stempel des Gesichts eines Menschen denken. Da niemand das gleiche Gesicht hat, hat niemand das gleiche FRV. Ein FRV kann also verwendet werden, um jemanden an einer Datenbank von FRVs zu identifizieren.
Diese FaceID -API verwendet einen vom Client gesendeten FRV, um festzustellen, ob die angegebene FRV in der Datenbank übereinstimmt. Wenn der angegebene FRV in der Datenbank mit einer FRV übereinstimmt, gewährt die API den Zugriff auf den Client. Andernfalls verweigert die API den Zugriff auf den Kunden.
Eine Vektordatenbank ist etwas Neues in der Welt der Datenbanken, und ihre Verwendung wächst schnell. In unserem Fall verwenden wir QDRANT (https://qdrant.tech), eine Vektor -Datenbank, die Open Source ist und frei zu verwenden ist. Denken Sie daran, dass Vektoren der Gesichtsdarstellung im Grunde genommen eine Reihe von Schwimmzahlen sind, die enorm sind. Auf dieser FaceID -API verwenden wir eine 128 -Dimension FRV, können aber 256, 512 oder sogar mehr Abmessungen lang sein. Wir benötigen also eine Datenbank, die diese große Datenmenge speichern und schnelle Suchanfragen ausführen kann.
Herkömmliche SQL- und NoSQL -Datenbanken können zum Speichern von FRVs verwendet werden, sie sind jedoch nicht für diese Art von Daten optimiert. Vektordatenbanken sind für das Speichern und Durchsuchen von Vektoren optimiert. Sie sind auch für schnelle Suchanfragen optimiert und können in einigen Millisekunden nach Millionen von Vektoren suchen. Dies bedeutet, dass ein Gesicht in einigen Millisekunden identifiziert werden kann, was für Anwendungen in Echtzeit hervorragend ist.
Dieses Projekt ist eine einfache Implementierung einer Gesichtserkennungs -API. Es ist eine einfache API, mit der die Gesichtserkennung in jede Anwendung integriert werden kann. Die API ist in Golang geschrieben und verwendet die Restarchitektur. Der Kunde kann in jeder Sprache geschrieben werden und von jeder Plattform (Web, Mobile, Desktop usw.) stammen. Wenn Sie die Gesichtserkennung in Ihrer Anwendung implementieren möchten, können Sie die FaceID -API als Ausgangspunkt verwenden. Bitte können Sie mich gerne unter [email protected] kontaktieren, wenn Sie Fragen oder Vorschläge haben. Danke schön!