Erstellen Sie ein Gesichtserkennungsmodell in einem Video mit Python

Inhalt

Einführung

“Computer Vision und maschinelles Lernen haben so richtig Fahrt aufgenommen, aber für die meisten leute, die ganze Vorstellung davon, was ein Computer beim Betrachten eines Bildes sieht, ist relativ dunkel”. – Mike Kreiser

Das wunderbare Feld der Computer Vision ist in den letzten Jahren zu einer eigenen Liga aufgestiegen. Es gibt eine beeindruckende Anzahl von Anwendungen, die weltweit bereits weit verbreitet sind, Und wir fangen gerade erst an!

Eine meiner Lieblingsbeschäftigungen in diesem Bereich ist die Idee, dass unsere Community das Open-Source-Konzept annimmt. Selbst die großen Technologiegiganten sind bereit, neue Fortschritte und Innovationen mit allen zu teilen, damit Techniken nicht weiterhin "eine Sache der Reichen" sind..

Eine dieser Technologien ist die Gesichtserkennung, bietet eine Vielzahl potenzieller Anwendungen in realen Anwendungsfällen (wenn richtig und ethisch verwendet). In diesem Beitrag, Ich zeige Ihnen, wie Sie mit Open-Source-Tools einen leistungsfähigen Gesichtserkennungsalgorithmus erstellen. Hier ist eine Demo, um Sie zu begeistern und die Bühne für das zu schaffen, was noch kommt:

Also, bist du fertig? Dann lies weiter!

Notiz: Wenn Sie die Komplexität von Computer Vision verstehen möchten, dieser Kurs: Computer Vision mit Deep Learning – Es ist der perfekte Ort, um anzufangen.

Inhaltsverzeichnis

  • Mögliche Anwendungen der Gesichtserkennung
  • Systemkonfiguration: Hardware-Anforderungen / Software
    • Hardwarekonfiguration
    • Softwarekonfiguration
  • Tiefer in die Python-Implementierung eintauchen
    • Einfache Anleitung
    • Anwendungsfall der Gesichtserkennung

Vielversprechende Anwendungen der Gesichtserkennung

Lassen Sie mich Ihnen einige erstaunliche Beispiele für Anwendungen zeigen, bei denen Gesichtserkennungstechniken im Volksmund verwendet werden. Ich bin sicher, Sie sind irgendwann auf diese Anwendungsfälle gestoßen und wussten nicht, welche Technik hinter den Kulissen verwendet wurde.

Als Beispiel, Facebook ersetzte das manuelle Tagging von Bildern durch automatisch generierte Tag-Vorschläge für jedes auf die Plattform hochgeladene Bild.. Facebook verwendet einen einfachen Gesichtserkennungsalgorithmus, um die Pixel der Gesichter im Bild zu analysieren und mit den relevanten Nutzern zu vergleichen.. Wir werden lernen, wie man selbst ein Gesichtserkennungsmodell baut, aber bevor wir auf die technischen Details eingehen, Schauen wir uns einige andere Anwendungsfälle an.

Wir gewöhnen uns daran, unsere Telefone mit der neuesten Funktion zum Entsperren von Gesichtern zu entsperren.. Dies ist ein sehr kleines Beispiel dafür, wie eine Gesichtserkennungstechnik verwendet wird, um personenbezogene Daten zu schützen.. Dasselbe kann in größerem Maßstab in die Praxis umgesetzt werden, Ermöglicht es Kameras, Bilder aufzunehmen und Gesichter zu erkennen.

https://www.youtube.com/watch?v=bYrRQQX2PvY

Es gibt einige andere weniger bekannte Gesichtserkennungs-Apps in der Werbung, medizinische Versorgung, Bank, etc. Die meisten Unternehmen, oder sogar in vielen Konferenzen, Sie müssen einen Personalausweis mit sich führen, um einzutreten. Aber, Was wäre, wenn wir einen Weg finden könnten, dass Sie keinen Ausweis mit sich führen müssen, um Zugang zu erhalten?? Die Gesichtserkennung macht dieses Verfahren einfach und reibungslos. Die Person schaut einfach in die Kamera und sie erkennt automatisch, ob sie eintreten darf oder nicht.

Eine weitere interessante Anwendung der Gesichtserkennung könnte das Zählen der Personen sein, die an einer Veranstaltung teilnehmen (wie eine Konferenz oder ein Konzert). Anstatt die Teilnehmer manuell zu zählen, Wir installieren eine Kamera, die die Bilder der Teilnehmer aufnehmen kann und uns die Gesamtzahl der Personen mitteilt. Dies kann dazu beitragen, den Vorgang zu automatisieren und eine Menge manuellen Aufwand zu sparen.. Ziemlich nützlich, Nein?

Sie können viele weitere Anwendungen wie diese erstellen; Fühlen Sie sich frei, sie im Kommentarbereich unten zu teilen.

In diesem Beitrag, Ich werde mich auf die praktische Anwendung der Gesichtserkennung konzentrieren und übersehen, wie die darin enthaltenen Algorithmen tatsächlich funktionieren. Wenn Sie mehr über sie erfahren möchten, Lee fastet.

Systemkonfiguration: Hardware-Anforderungen / Software

Da Sie nun die potenziellen Anwendungen kennen, die Sie mit Gesichtserkennungstechniken erstellen können, Mal sehen, wie wir dies mit den uns zur Verfügung stehenden Open-Source-Tools in die Praxis umsetzen können. Das ist der Vorteil, den wir mit unserer Community haben: die Bereitschaft zum Teilen und Open Source Code ist in keiner Branche einzigartig.

Speziell für diesen Beitrag, das habe ich verwendet und empfehle es zu verwenden:

  • Eine Webcam (Logitech C920) um einen Echtzeit-Gesichtsdetektor auf einem Lenovo E470 ThinkPad Laptop zu bauen (Core i5 7. Generation). Sie können auch die integrierte Kamera Ihres Laptops verwenden, oder CCTV-Kamera, auf jedem System, das für die Echtzeit-Videoanalyse geeignet ist, statt der Konfiguration die ich verwende
  • Die Verwendung einer GPU für eine schnellere Videoverarbeitung ist immer ein Bonus
  • Auf der Softwareseite, Wir haben das Ubuntu-Betriebssystem verwendet 18.04 mit allen installierten Softwarevoraussetzungen

Lassen Sie uns diese Punkte etwas genauer untersuchen, um sicherzustellen, dass alles richtig eingerichtet ist, bevor Sie unser Gesichtserkennungsmodell erstellen..

Paso 1: Hardwarekonfiguration

Als erstes müssen Sie prüfen, ob die Webcam richtig konfiguriert ist. Ein einfacher Trick in Ubuntu: Überprüfen Sie, ob das Betriebssystem das Gerät registriert hat. Sie können die folgenden Schritte ausführen:

  1. Vor dem Anschließen der WebCam an den Laptop, Überprüfen Sie alle angeschlossenen Videogeräte, indem Sie zur Eingabeaufforderung gehen und eingeben ls / Entwickler / Video *. Dadurch werden die Videogeräte gedruckt, die bereits mit dem System verbunden sind.
  2. Verbinden Sie die WebCam und führen Sie den Befehl erneut aus.Wenn die WebCam erfolgreich verbunden wurde, der Befehl zeigt ein neues Gerät an.
  3. Sie können auch eine beliebige Webcam-Software verwenden, um zu überprüfen, ob die Webcam ordnungsgemäß funktioniert.. Sie können verwenden “Käse” in Ubuntu dafür.
    Hier sehen wir, dass die Webcam richtig konfiguriert ist. Und das war's für die Hardware-Seite!!

Paso 2: Softwarekonfiguration

Paso 2.1: Python installieren

Der Code in diesem Beitrag wurde mit der Version erstellt 3.5 von Python. Obwohl es mehrere Alternativen gibt, um Python zu installieren, Ich würde empfehlen, Anaconda zu verwenden, die beliebteste Python-Distribution für Data Science. Hier ist ein Link zur Installation von Anaconda in Ihrem System.

Paso 2.2: OpenCV installieren

OpenCV (Open-Source-Computer Vision) ist eine Bibliothek zum Erstellen von Computer Vision-Anwendungen. Verfügt über zahlreiche vorgefertigte Funktionen für Bildverarbeitungsaufgaben. So installieren Sie OpenCV, Mache eine Pip-Installation der Bibliothek:

pip3 installiere opencv-python

Paso 2.3: Installieren Sie die API face_recognition;

Abschließend, wir werden verwenden Gesichtserkennung, als weltweit einfachste Gesichtsakkreditierungs-API für Python genannt. Installieren:
pip install dlib
pip install face_recognition

Tauchen wir tiefer in die Implementierung ein

Nachdem Sie Ihr System konfiguriert haben, endlich ist es an der Zeit in die eigentliche Umsetzung einzutauchen. Zuerst, wir bauen schnell unser Programm, Später werden wir es aufschlüsseln, um zu verstehen, was wir getan haben.

Einfache Anleitung

Zuerst, eine Datei erstellen face_detector.py und kopiere später den unten angegebenen Code:

# Bibliotheken importieren
importieren cv2
importieren Gesichtserkennung

# Holen Sie sich einen Verweis auf die Webcam 
Videoaufnahme = cv2.Videoaufnahme("/dev/video1")

# Variablen initialisieren
face_locations = []

während Wahr:
    # Nehmen Sie ein einzelnes Videobild auf
    rechts, Rahmen = Videoaufnahme.lesen()

    # Konvertieren Sie das Bild aus der BGR-Farbe (welche OpenCV verwendet) auf RGB-Farbe (welche face_recognition verwendet)
    rgb_frame = Rahmen[:, :, ::-1]

    # Finde alle Gesichter im aktuellen Videobild
    face_locations = Gesichtserkennung.face_locations(rgb_frame)

    # Ergebnisse anzeigen
    zum oben, rechts, Unterseite, links In face_locations:
        # Zeichne einen Kasten um das Gesicht
        cv2.Rechteck(Rahmen, (links, oben), (rechts, Unterseite), (0, 0, 255), 2)

    # Zeigen Sie das resultierende Bild an
    cv2.imshow('Video', Rahmen)

    # Drücken Sie 'q' auf der Tastatur, um zu beenden!
    Wenn cv2.waitKey(1) & 0xFF == Wörter('Q'):
        brechen

# Griff an der Webcam loslassen
Videoaufnahme.Veröffentlichung()
cv2.Alle Windows zerstören()

Anschließend, Führen Sie diese Python-Datei aus, indem Sie eingeben:

python face_detector.py

Wenn alles gut läuft, ein neues Fenster wird angezeigt, in dem die Echtzeit-Gesichtserkennung ausgeführt wird.

Um zusammenzufassen, Das hat unser Code oben gemacht:

  1. Erste USA die Hardware definiert in dem die Videoanalyse durchgeführt wird
  2. Davon, UNS das Video aufgenommen in Echtzeit, Bild für Bild
  3. Dann wir verarbeitet jeden Frame Ja extrahiert die Standorte aller Gesichter im Bild
  4. Zusammenfassend wir diese Frames in Videoform gerendert, zusammen mit den Orten der Gesichter

Einfach, Es ist nicht so? Wenn Sie auf detailliertere Details eingehen möchten, Ich habe die Kommentare in jeden Codeabschnitt eingefügt. Sie können jederzeit zurückgehen und überprüfen, was wir getan haben.

Anwendungsfall der Gesichtserkennung

Der Spaß endet hier nicht! Eine weitere coole Sache, die wir tun können: Erstellen Sie einen vollständigen Anwendungsfall um den obigen Code. Und du musst nicht bei Null anfangen. Wir können nur ein paar kleine Änderungen am Code vornehmen und können loslegen..

Vermuten, als Beispiel, Sie ein automatisiertes kamerabasiertes System aufbauen möchten, um in Echtzeit zu verfolgen, wo sich der Sprecher befindet. Je nach Position, Das System dreht die Kamera, sodass der Sprecher immer mitten im Video ist.

Wie machen wir es? Der erste Schritt besteht darin, ein System aufzubauen, das die Personen im Video identifiziert und sich auf den Standort des Sprechers konzentriert..

Mal sehen, wie wir das in die Tat umsetzen können. Für diesen Beitrag, ich habe a . genommen Video von Youtube zeigt einen Redner, der während der DataHack Summit-Konferenz spricht 2017.

Zuerst, wir importieren die wesentlichen Bibliotheken:

CV2 importieren
Gesichtserkennung importieren

Anschließend, Lies das Video und erhalte die Dauer:

input_movie = cv2.VideoCapture("sample_video.mp4")
Länge = int(input_movie.get(cv2.CAP_PROP_FRAME_COUNT))

Danach, wir erstellen eine Ausgabedatei mit der erforderlichen Auflösung und Bildrate, die der Eingabedatei entspricht.

Laden Sie ein Beispielbild des Sprechers hoch, um ihn im Video zu identifizieren:

image = face_recognition.load_image_file("sample_image.jpeg")
face_encoding = face_recognition.face_encodings(Bild)[0]

bekannte_gesichter = [
Gesichtscodierung,
]

All dies abgeschlossen, Jetzt führen wir eine Schleife aus, die Folgendes tut:

  • Extrahiere einen Frame aus dem Video
  • Finde alle Gesichter und identifiziere sie
  • Erstellen Sie ein neues Video, um das Originalbild mit der Gesichtsposition des kommentierten Sprechers abzugleichen

Sehen wir uns den Code dafür an:

# Variablen initialisieren
face_locations = []
face_encodings = []
face_names = []
Rahmennummer = 0

während Wahr:
    # Nehmen Sie ein einzelnes Videobild auf
    rechts, Rahmen = input_movie.lesen()
    Rahmennummer += 1

    # Beenden, wenn die Eingabevideodatei endet
    Wenn nicht rechts:
        brechen

    # Konvertieren Sie das Bild aus der BGR-Farbe (welche OpenCV verwendet) auf RGB-Farbe (welche face_recognition verwendet)
    rgb_frame = Rahmen[:, :, ::-1]

    # Finde alle Gesichter und Gesichtskodierungen im aktuellen Videobild
    face_locations = Gesichtserkennung.face_locations(rgb_frame, Modell="cnn")
    face_encodings = Gesichtserkennung.face_encodings(rgb_frame, face_locations)

    face_names = []
    zum Gesichtscodierung In face_encodings:
        # Sehen Sie, ob das Gesicht mit dem bekannten Gesicht übereinstimmt(S)
        Spiel = Gesichtserkennung.vergleichen_gesichter(bekannte_gesichter, Gesichtscodierung, Toleranz=0.50)

        Name = Keiner
        Wenn Spiel[0]:
            Name = "Phani Srikant"

        face_names.anhängen(Name)

    # Beschriften Sie die Ergebnisse
    zum (oben, rechts, Unterseite, links), Name In Postleitzahl(face_locations, face_names):
        Wenn nicht Name:
            fortsetzen

        # Zeichne einen Kasten um das Gesicht
        cv2.Rechteck(Rahmen, (links, oben), (rechts, Unterseite), (0, 0, 255), 2)

        # Zeichne ein Etikett mit einem Namen unter das Gesicht
        cv2.Rechteck(Rahmen, (links, Unterseite - 25), (rechts, Unterseite), (0, 0, 255), cv2.GEFÜLLT)
        Schriftart = cv2.FONT_HERSHEY_DUPLEX
        cv2.putText(Rahmen, Name, (links + 6, Unterseite - 6), Schriftart, 0.5, (255, 255, 255), 1)

    # Schreiben Sie das resultierende Bild in die Ausgabevideodatei
    drucken("Schreibrahmen {} / {}".Format(Rahmennummer, Länge))
    Ausgabe_Film.schreiben(Rahmen)

# Alles erledigt!
input_movie.Veröffentlichung()
cv2.Alle Windows zerstören()

Der Code würde Ihnen eine Ausgabe wie diese geben:

Was für eine großartige Sache Gesichtserkennung wirklich ist. 🙂

Projekte

Jetzt ist es an der Zeit, den Sprung zu wagen und mit anderen echten Datensätzen zu spielen.. Dann, Bist du bereit die Herausforderung anzunehmen? Beschleunigen Sie Ihre Deep-Learning-Reise mit den folgenden Übungsaufgaben:

Fazit

Herzliche Glückwünsche! Jetzt wissen Sie, wie Sie ein Gesichtserkennungssystem für verschiedene potenzielle Anwendungsfälle erstellen.. Deep Learning ist ein faszinierendes Feld und ich bin sehr gespannt, wohin wir jetzt gehen..

In diesem Beitrag, Wir haben gelernt, wie Sie Open-Source-Tools nutzen können, um Echtzeit-Gesichtserkennungssysteme zu erstellen, die in der realen Welt nützlich sind. Ich ermutige Sie, viele dieser Anwendungen zu erstellen und diese selbst auszuprobieren. Creme, es gibt viel zu lernen und es macht viel spaß!

Wie immer, Zögern Sie nicht, uns bei Fragen zu kontaktieren / Vorschlag im Kommentarbereich unten.

Abonniere unseren Newsletter

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