Gesichtserkennung | Gesichtserkennungs-App

Inhalt

Einführung

Wussten Sie, dass jedes Mal, wenn Sie ein Foto auf Facebook hochladen, Die Plattform verwendet Gesichtserkennungsalgorithmen, um die Personen in diesem Bild zu identifizieren? Oder dass bestimmte Regierungen auf der ganzen Welt Gesichtserkennungstechnologien verwenden, um Kriminelle zu identifizieren und zu fassen?? Ich muss Ihnen nicht sagen, dass Sie jetzt Smartphones mit Ihrem Gesicht entsperren können!!

Die Anwendungen dieser Teildomäne der Computer Vision sind enorm und Unternehmen auf der ganzen Welt profitieren bereits von den Vorteilen.. Der Einsatz von Gesichtserkennungsmodellen wird in den kommenden Jahren nur zunehmen, Warum also nicht lernen, wie man eines von Grund auf neu baut??

Gesicht-4642753

In diesem Artikel, wir werden genau das tun. Wir werden zuerst das Innenleben der Gesichtserkennung verstehen und dann eine einfache Fallstudie nehmen und diese in Python implementieren. Am Ende des Artikels, Sie haben Ihr erstes Gesichtserkennungsmodell gebaut!

Inhaltsverzeichnis

  • Verstehen Sie, wie die Gesichtserkennung funktioniert
  • Fallstudie
  • Python-Implementierung
  • Python-Code verstehen
  • Anwendungen von Gesichtserkennungsalgorithmen

Verstehen Sie, wie die Gesichtserkennung funktioniert

Um zu verstehen, wie die Gesichtserkennung funktioniert, Machen wir uns zunächst ein Bild vom Konzept des Merkmalsvektors.

Jeder Algorithmus für maschinelles Lernen nimmt eine Reihe von Daten als Eingabe und lernt aus diesen Daten. Der Algorithmus geht die Daten durch und identifiziert Muster in den Daten. Zum Beispiel, Angenommen, wir möchten herausfinden, welches Gesicht in einem bestimmten Bild vorhanden ist, Es gibt mehrere Dinge, die wir als Muster betrachten können:

  • Alt / Ansichtsbreite.
  • Höhe und Breite sind möglicherweise nicht zuverlässig, da das Bild zu einem kleineren Gesicht geändert werden kann. Aber trotzdem, auch nach Skalenwechsel, Was unverändert bleibt, sind die Beziehungen: das Verhältnis zwischen Gesichtshöhe und Gesichtsbreite ändert sich nicht.
  • Gesichtsfarbe.
  • Breite anderer Gesichtspartien wie Lippen, Nase, etc.

Deutlich, Hier gibt es ein Muster: verschiedene Gesichter haben unterschiedliche Abmessungen wie oben. Ähnliche Gesichter haben ähnliche Abmessungen. Die Herausforderung besteht darin, ein bestimmtes Gesicht in Zahlen zu verwandeln: Machine-Learning-Algorithmen verstehen nur Zahlen. Diese numerische Darstellung von a “Methode” (oder ein Gegenstand im Trainingsset) heißt wie Merkmalsvektor. Ein Merkmalsvektor besteht aus mehreren Zahlen in einer bestimmten Reihenfolge.

Als einfaches Beispiel, wir können eins abbilden “Methode” in einem Merkmalsvektor, der mehrere Merkmale umfassen kann, wie z:

  • Gesichtshöhe (cm)
  • Ansichtsbreite (cm)
  • Mittlere Gesichtsfarbe (R, g, B)
  • Lippenbreite (cm)
  • Nasenhöhe (cm)

Im Wesentlichen, ein Bild gegeben, Wir können mehrere Features plotten und in einen Feature-Vektor wie . umwandeln:

Gesichtshöhe (cm) Ansichtsbreite (cm) Mittlere Gesichtsfarbe (RGB) Lippenbreite (cm) Nasenhöhe (cm)
23,1 15,8 (255, 224, 189) 5.2 4.4

Dann, unser Bild ist jetzt ein Vektor, der dargestellt werden könnte als (23.1, 15.8, 255, 224, 189, 5.2, 4.4). Natürlich, es könnten unzählige andere Merkmale sein, die aus dem Bild abgeleitet werden könnten (zum Beispiel, Haarfarbe, Gesichtsbehaarung, Gläser, etc.). Aber trotzdem, zum Beispiel, betrachten wir nur diese 5 einfache Funktionen.

Jetzt, Sobald wir jedes Bild in einen Merkmalsvektor kodiert haben, das problem wird viel einfacher. Deutlich, wenn wir haben 2 Gesichter (Bilder) die dieselbe Person repräsentieren, die abgeleiteten Merkmalsvektoren werden ziemlich ähnlich sein. Mit anderen Worten, das “Distanz” zwischen den 2 Merkmalsvektoren werden ziemlich klein sein.

Machine Learning kann uns dabei helfen 2 Zeug:

  1. Herleitung des Merkmalsvektors: es ist schwierig, alle Funktionen manuell aufzulisten, weil es so viele gibt. Ein Algorithmus für maschinelles Lernen kann viele dieser Funktionen intelligent kennzeichnen. Zum Beispiel, ein komplexes Merkmal könnte sein: Verhältnis von Nasenhöhe zu Stirnbreite. Jetzt wird es für einen Menschen ziemlich schwierig sein, all diese Eigenschaften von aufzuzählen “Zweite Bestellung”.
  2. Passende Algorithmen: Sobald die Merkmalsvektoren erhalten wurden, ein maschineller Lernalgorithmus muss ein neues Bild mit dem im Korpus vorhandenen Satz von Merkmalsvektoren abgleichen.

Jetzt haben wir ein grundlegendes Verständnis dafür, wie die Gesichtserkennung funktioniert, Lassen Sie uns unseren eigenen Gesichtserkennungsalgorithmus mit einigen der beliebtesten Python-Bibliotheken erstellen.

Fallstudie

Sie geben uns viele Gesichter, möglicherweise von Prominenten wie Mark Zuckerberg, Warren Buffett, Bill Gates, Shahrukh Khan, etc. Nennen Sie diesen Haufen Gesichter unser “Korpus”. Jetzt, uns wird das Bild einer anderen Berühmtheit gegeben (“neue Berühmtheit”). Die Aufgabe ist einfach: identifiziere, ob das “neue Berühmtheit” gehört zu den Anwesenden in der “Korpus”.

Dies sind einige der Bilder des Korpus:

Gesicht1-7270292

Wie du siehst, Wir haben Prominente wie Barack Obama, Bill Gates, Jeff Bezos, Mark Zuckerberg, Ray Dalio und Shah Rukh Khan.

Jetzt, Hier ist das “neue Berühmtheit”:

Gesicht2-3172275

Notiz: Alle oben genannten Bilder stammen von Google-Bildern.

Dies ist offensichtlich Shah Rukh Khan. Aber trotzdem, für einen Computer ist das eine anspruchsvolle Aufgabe. Die Herausforderung ergibt sich daraus, dass für uns, die Menschen, Es ist einfach, so viele Merkmale der Bilder zu kombinieren, um zu sehen, welche Berühmtheit ist. Aber trotzdem, für einen Computer, Es ist nicht leicht zu lernen, diese Gesichter zu erkennen.

Es gibt eine unglaublich einfache Python-Bibliothek, die alles kapselt, was wir zuvor gelernt haben: Erstellen Sie Merkmalsvektoren aus Gesichtern und wissen Sie, wie man zwischen Gesichtern unterscheidet. Diese Python-Bibliothek heißt wie Gesichtserkennung und tief unten, beschäftigt dlib – eine Reihe von C-Tools ++ Modern, das verschiedene Algorithmen für maschinelles Lernen enthält, die helfen, anspruchsvolle C-basierte Anwendungen zu schreiben ++.

Gesichtserkennung Die Bibliothek in Python kann eine Vielzahl von Aufgaben ausführen:

  • Finde alle Gesichter in einem bestimmten Bild
  • Gesichtsmerkmale in einem Bild suchen und bearbeiten.
  • Gesichter in Bildern erkennen
  • Gesichtserkennung in Echtzeit

Hier, Wir werden über den dritten Anwendungsfall sprechen: Gesichter in Bildern identifizieren.

Sie finden den Quellcode von Gesichtserkennung Bibliothek hier auf Github: https://github.com/ageitgey/face_recognition.

Eigentlich, Es gibt auch eine Anleitung zur Installation Gesichtserkennung Bücherei: https://github.com/ageitgey/face_recognition#installation-options. Vor der Installation Gesichtserkennung, du musst installieren dlib ebenso gut wie. Sie finden die Anweisungen zur Installation dlib hier: https://gist.github.com/ageitgey/629d75c1baac34dfa5ca2a1928a7aeaf.

Python-Implementierung

Dieser Abschnitt enthält den Code zum Erstellen eines einfachen Gesichtserkennungssystems mit dem Gesichtserkennung Bücherei. Dies ist der Implementierungsteil, wir werden den Code durchgehen, um ihn im nächsten Abschnitt genauer zu verstehen.

# Importieren Sie die Bibliotheken
importieren
Gesichtserkennung importieren

# eine Liste aller verfügbaren Bilder erstellen
images = os.listdir('Bilder')

# lade dein Bild
image_to_be_matched = face_recognition.load_image_file('mein_bild.jpg')

# das geladene Bild in einen Merkmalsvektor codiert
image_to_be_matched_encoded = face_recognition.face_encodings(
    image_to_be_matched)[0]

# über jedes Bild iterieren
für Bild in Bildern:
    # Laden Sie das Bild
    current_image = face_recognition.load_image_file("Bilder/" + Bild)
    # das geladene Bild in einen Merkmalsvektor codieren
    current_image_encoded = face_recognition.face_encodings(aktuelles Bild)[0]
    # Ordnen Sie Ihr Bild dem Bild zu und prüfen Sie, ob es übereinstimmt
    result = face_recognition.compare_faces(
        [image_to_be_matched_encoded], current_image_encoded)
    # Überprüfen Sie, ob es eine Übereinstimmung war
    wenn ergebnis[0] == Richtig:
        drucken "Abgestimmt: " + Bild
    anders:
        drucken "Nicht passend: " + Bild

Die Ordnerstruktur ist wie folgt:

Gesichtserkennung:

  • fr.py
  • mein_image.jpg
  • Bilder /
    • barack_obama.jpg
    • bill_gates.jpg
    • jeff_bezos.jpg
    • mark_zuckerberg.jpg
    • ray_dalio.jpg
    • shah_rukh_khan.jpg
    • warren_buffett.jpg

Unser Root-Verzeichnis, Gesichtserkennung enthält:

  • Unser bisheriger Gesichtserkennungscode in Form von fr.py.
  • mein_image.jpg: das zu erkennende Bild (“neue Berühmtheit”).
  • Bilder / – das “Korpus”.

Wenn Sie die Ordnerstruktur wie oben erstellen und den obigen Code ausführen, das bekommst du als ergebnis:

Abgestimmt: shah_rukh_khan.jpg
Nicht passend: warren_buffett.jpg
Nicht passend: barack_obama.jpg
Nicht passend: ray_dalio.jpg
Nicht passend: bill_gates.jpg
Nicht passend: jeff_bezos.jpg
Nicht passend: mark_zuckerberg.jpg

Deutlich, das “neue Berühmtheit” ist Shah Rukh Khan und unser Gesichtserkennungssystem kann es erkennen.

Python-Code verstehen

Jetzt, Lassen Sie uns den Code durchgehen, um zu verstehen, wie er funktioniert:

# Importieren Sie die Bibliotheken
importieren
Gesichtserkennung importieren

Das sind einfach Importe. Wir werden das eingebaute verwenden Sie Bibliothek, um alle Bilder in unserem Korpus zu lesen und wir werden sie verwenden Gesichtserkennung um den Algorithmus zu schreiben.

# eine Liste aller verfügbaren Bilder erstellen
images = os.listdir('Bilder')

Dieser einfache Code hilft uns, den Pfad aller Bilder im Korpus zu identifizieren. Sobald diese Zeile ausgeführt wird, wir werden haben:

Bilder = ['shah_rukh_khan.jpg', 'warren_buffett.jpg', 'barack_obama.jpg', 'ray_dalio.jpg', 'bill_gates.jpg', 'jeff_bezos.jpg', 'mark_zuckerberg.jpg']

Jetzt, der folgende Code lädt das Bild der neuen Berühmtheit:

# lade dein Bild
image_to_be_matched = face_recognition.load_image_file('mein_bild.jpg')

Um sicherzustellen, dass die Algorithmen das Bild interpretieren können, wir wandeln das Bild in einen Merkmalsvektor um:

# das geladene Bild in einen Merkmalsvektor codiert

image_to_be_matched_encoded = face_recognition.face_encodings(

    image_to_be_matched)[0]

Der Rest des Codes ist jetzt ganz einfach:

# über jedes Bild iterieren
für Bild in Bildern:
    # Laden Sie das Bild
    current_image = face_recognition.load_image_file("Bilder/" + Bild)

    # das geladene Bild in einen Merkmalsvektor codieren
    current_image_encoded = face_recognition.face_encodings(aktuelles Bild)[0]

    # Ordnen Sie Ihr Bild dem Bild zu und prüfen Sie, ob es übereinstimmt
    result = face_recognition.compare_faces(
        [image_to_be_matched_encoded], current_image_encoded)

    # Überprüfen Sie, ob es eine Übereinstimmung war
    wenn ergebnis[0] == Richtig:
        drucken "Abgestimmt: " + Bild
    anders:
        drucken "Nicht passend: " + Bild

Hier sind wir:

  • Schleife über jedes Bild.
  • Codieren Sie das Bild in einen Merkmalsvektor.
  • Vergleichen des geladenen Bildes mit dem zu erkennenden Bild.
  • Wenn es Zufall ist, wir drucken es. Wenn es nicht passt, wir drucken es auch.

Das oben gezeigte Ergebnis deutet eindeutig darauf hin, dass dieser einfache Gesichtserkennungsalgorithmus unglaublich gut funktioniert.. Versuchen wir zu ersetzen Mein Bild mit einem anderen Bild:

Gesicht3-4201312

Wenn ich den Algorithmus erneut ausführe, Sie werden das folgende Ergebnis sehen:

Nicht passend: shah_rukh_khan.jpg
Nicht passend: warren_buffett.jpg
Nicht passend: barack_obama.jpg
Nicht passend: ray_dalio.jpg
Nicht passend: bill_gates.jpg
Nicht passend: jeff_bezos.jpg
Nicht passend: mark_zuckerberg.jpg

Deutlich, das System identifizierte Jack Ma nicht als einen der oben genannten Prominenten. Dies deutet darauf hin, dass unser Algorithmus in beiden Fällen ziemlich gut ist:

  • Identifizieren Sie diejenigen korrekt, die im Korpus vorhanden sind
  • Markieren Sie eine Nichtübereinstimmung für diejenigen, die nicht im Korpus vorhanden sind

Gesichtserkennungs-Apps

Gesichtserkennung ist ein gut erforschtes Problem und wird sowohl in der Industrie als auch in der Wissenschaft häufig verwendet. Als Beispiel, ein Krimineller in China wurde gefasst, weil ein Gesichtserkennungssystem in einem Einkaufszentrum sein Gesicht erkannte und Alarm schlug. Deutlich, Gesichtserkennung kann verwendet werden, um Kriminalität zu mildern. Es gibt noch viele weitere interessante Anwendungsfälle der Gesichtserkennung:

  • Gesichtsauthentifizierung: Apple hat Face ID für die Gesichtsauthentifizierung auf iPhones eingeführt. Einige der großen Banken versuchen, die Gesichtsauthentifizierung für Schließfächer zu verwenden.
  • Kundendienst: Einige Banken in Malaysia haben Systeme installiert, die Gesichtserkennung verwenden, um wertvolle Kunden der Bank zu erkennen, damit die Bank einen personalisierten Service anbieten kann. Diesen Weg, Banken können mehr Einnahmen erzielen, indem sie diese Kunden binden und zufrieden stellen.
  • Versicherungswesen: Viele Versicherungen verwenden die Gesichtserkennung, um das Gesicht der Person dem auf dem Lichtbildausweis angegebenen zuzuordnen.. Daher, der Abonnementprozess wird viel schneller.

Abschließende Anmerkungen

Zusammenfassend, Gesichtserkennung ist ein interessantes Problem mit vielen leistungsstarken Anwendungsfällen, die der Gesellschaft in verschiedenen Dimensionen erheblich helfen können. Obwohl mit der Kommerzialisierung solcher Techniken immer ein ethisches Risiko verbunden ist, Das ist eine Debatte, die wir für ein anderes Mal beiseite legen werden.

Ich hoffe, dieser Artikel war hilfreich für Sie. Senden Sie Ihre Kommentare und Vorschläge in den Kommentarbereich unten!!

Über den Autor

sicher-goel-5332826Sicheres Goel, Mitbegründer und CEO von AllinCall Research & Lösungen
Aman Goel ist Alumnus von IIT-Bombay und Unternehmer, Programmierer und Fanatiker der Untersuchung von Flugzeugabstürzen. Programmierblogs schreiben für Hackr.io, eine Programmier-Community, um die besten Programmier-Tutorials zu finden. Er ist Mitbegründer von AllinCall Research & Lösungen und liebt es, Menschen bei der Lösung von IIT JEE-Problemen zu helfen.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.