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:
- 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.
- 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.
- 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;
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:
- Erste USA die Hardware definiert in dem die Videoanalyse durchgeführt wird
- Davon, UNS das Video aufgenommen in Echtzeit, Bild für Bild
- Dann wir verarbeitet jeden Frame Ja extrahiert die Standorte aller Gesichter im Bild
- 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.