Sie können auch eine übersetzte Version dieser Datei in Chinesisch oder in Koreanisch oder in Japanisch lesen.
Erkennen und manipulieren Sie Gesichter aus Python oder von der Kommandozeile mit der einfachsten Bibliothek der Gesichtserkennung der Welt.
Gebaut mit DLIBs hochmoderner Gesichtserkennung mit tiefem Lernen. Das Modell hat eine Genauigkeit von 99,38% für die markierten Gesichter im Wild Benchmark.
Dies liefert auch ein einfaches Befehlszeilen -Tool face_recognition
, mit dem Sie die Gesichtserkennung in einem Ordner von Bildern aus der Befehlszeile durchführen können!
Finden Sie alle Gesichter, die in einem Bild erscheinen:
import face_recognition
image = face_recognition . load_image_file ( "your_file.jpg" )
face_locations = face_recognition . face_locations ( image )
Holen Sie sich die Orte und Umrisse der Augen, der Nase, des Mundes und des Kinns jeder Person.
import face_recognition
image = face_recognition . load_image_file ( "your_file.jpg" )
face_landmarks_list = face_recognition . face_landmarks ( image )
Das Finden von Gesichtsmerkmalen ist für viele wichtige Dinge super nützlich. Sie können es aber auch für wirklich dumme Dinge wie das Aufbringen digitaler Make-up verwenden (denken Sie an 'Meitu'):
Erkennen Sie, wer auf jedem Foto erscheint.
import face_recognition
known_image = face_recognition . load_image_file ( "biden.jpg" )
unknown_image = face_recognition . load_image_file ( "unknown.jpg" )
biden_encoding = face_recognition . face_encodings ( known_image )[ 0 ]
unknown_encoding = face_recognition . face_encodings ( unknown_image )[ 0 ]
results = face_recognition . compare_faces ([ biden_encoding ], unknown_encoding )
Sie können diese Bibliothek sogar mit anderen Python-Bibliotheken verwenden, um die Gesichtserkennung in Echtzeit durchzuführen:
Sehen Sie dieses Beispiel für den Code.
Nutzer-kontributierte gemeinsame Jupyter-Notebook-Demo (nicht offiziell unterstützt):
Stellen Sie zunächst sicher, dass DLIB bereits mit Python -Bindungen installiert ist:
Stellen Sie dann sicher, dass CMake installiert ist:
brew install cmake
Installieren Sie dieses Modul von PYPI schließlich mit pip3
(oder pip2
für Python 2):
pip3 install face_recognition
Alternativ können Sie diese Bibliothek mit Docker ausprobieren, siehe diesen Abschnitt.
Wenn Sie Probleme mit der Installation haben, können Sie auch eine vorkonfigurierte VM ausprobieren.
pkg install graphics/py-face_recognition
Während Windows nicht offiziell unterstützt wird, haben hilfreiche Benutzer Anweisungen zur Installation dieser Bibliothek veröffentlicht:
Wenn Sie face_recognition
installieren, erhalten Sie zwei einfache Befehlszeilenprogramme:
face_recognition
- Gesichter in einem Foto oder Ordner erkennen, der für Fotos voll ist.face_detection
- Finden Sie Gesichter in einem Foto oder Ordner für Fotos. face_recognition
Command Line Tool Mit dem Befehl face_recognition
können Sie Gesichter auf einem Foto oder Ordner für Fotos erkennen.
Zunächst müssen Sie einen Ordner mit einem Bild jeder Person zur Verfügung stellen, die Sie bereits kennen. Für jede Person sollte es eine Bilddatei mit den genannten Dateien geben, die gemäß derjenigen genannt werden, die sich im Bild befinden:
Als nächstes benötigen Sie einen zweiten Ordner mit den Dateien, die Sie identifizieren möchten:
Wenn Sie dann einfach die face_recognition
ausführen und in den Ordner bekannt sind, und den Ordner (oder ein einzelnes Bild) mit unbekannten Personen übergeben und Ihnen sagt, wer in jedem Bild ist:
$ face_recognition ./pictures_of_people_i_know/ ./unknown_pictures/
/unknown_pictures/unknown.jpg,Barack Obama
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person
Für jedes Gesicht befindet sich eine Zeile in der Ausgabe. Die Daten werden mit dem Dateinamen und dem Namen der gefundenen Person gesetzt.
Ein unknown_person
ist ein Gesicht im Bild, das niemandem in Ihrem Ordner bekannter Menschen übereinstimmt.
face_detection
-Befehlszeilenwerkzeug Mit dem Befehl face_detection
können Sie den Standort (Pixelkoordinaten) aller Gesichter in einem Bild finden.
Führen Sie einfach die face_detection
aus und geben Sie einen Ordner mit Bildern ein, um zu überprüfen (oder ein einzelnes Bild):
$ face_detection ./folder_with_pictures/
examples/image1.jpg,65,215,169,112
examples/image2.jpg,62,394,211,244
examples/image2.jpg,95,941,244,792
Es druckt eine Zeile für jedes Gesicht, das erkannt wurde. Die angegebenen Koordinaten sind die oberen, rechten, unteren und linken Koordinaten des Gesichts (in Pixel).
Wenn Sie mehrere Übereinstimmungen für dieselbe Person erhalten, können die Personen auf Ihren Fotos sehr ähnlich aussehen und ein niedrigerer Toleranzwert erforderlich ist, um Gesichtsvergleiche strenger zu gestalten.
Sie können dies mit dem Parameter --tolerance
tun. Der Standard -Toleranzwert beträgt 0,6 und niedrigere Zahlen machen Gesichtsvergleiche strenger:
$ face_recognition --tolerance 0.54 ./pictures_of_people_i_know/ ./unknown_pictures/
/unknown_pictures/unknown.jpg,Barack Obama
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person
Wenn Sie den für jede Übereinstimmung berechneten Gesichtsabstand sehen möchten, um die --show-distance true
anzupassen, können Sie verwenden.
$ face_recognition --show-distance true ./pictures_of_people_i_know/ ./unknown_pictures/
/unknown_pictures/unknown.jpg,Barack Obama,0.378542298956785
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person,None
Wenn Sie einfach die Namen der Personen in jedem Foto kennen möchten, sich aber nicht um Dateinamen kümmern, können Sie dies tun:
$ face_recognition ./pictures_of_people_i_know/ ./unknown_pictures/ | cut -d ' , ' -f2
Barack Obama
unknown_person
Die Gesichtserkennung kann parallel durchgeführt werden, wenn Sie einen Computer mit mehreren CPU -Kernen haben. Wenn Ihr System beispielsweise über 4 CPU -Kerne verfügt, können Sie in der gleichen Zeit etwa 4 -mal so viele Bilder verarbeiten, indem Sie alle Ihre CPU -Kerne parallel verwenden.
Wenn Sie Python 3.4 oder neuer verwenden, geben Sie in einen --cpus <number_of_cpu_cores_to_use>
parameter ein:
$ face_recognition --cpus 4 ./pictures_of_people_i_know/ ./unknown_pictures/
Sie können auch --cpus -1
übergeben, um alle CPU -Kerne in Ihrem System zu verwenden.
Sie können das face_recognition
importieren und dann leicht mit nur wenigen Codezeilen manipulieren. Es ist super einfach!
API-Dokumente: https://face-recognition.readthedocs.io.
import face_recognition
image = face_recognition . load_image_file ( "my_picture.jpg" )
face_locations = face_recognition . face_locations ( image )
# face_locations is now an array listing the co-ordinates of each face!
Sehen Sie sich dieses Beispiel an, um es auszuprobieren.
Sie können sich auch für ein etwas genaueres, tief lernendes Gesichtserkennungsmodell entscheiden.
Hinweis: Die GPU -Beschleunigung (über die CUDA -Bibliothek von Nvidia) ist für eine gute Leistung mit diesem Modell erforderlich. Sie möchten auch CUDA -Unterstützung ermöglichen, wenn Sie dlib
ergibt.
import face_recognition
image = face_recognition . load_image_file ( "my_picture.jpg" )
face_locations = face_recognition . face_locations ( image , model = "cnn" )
# face_locations is now an array listing the co-ordinates of each face!
Sehen Sie sich dieses Beispiel an, um es auszuprobieren.
Wenn Sie viele Bilder und eine GPU haben, können Sie auch Gesichter in Chargen finden.
import face_recognition
image = face_recognition . load_image_file ( "my_picture.jpg" )
face_landmarks_list = face_recognition . face_landmarks ( image )
# face_landmarks_list is now an array with the locations of each facial feature in each face.
# face_landmarks_list[0]['left_eye'] would be the location and outline of the first person's left eye.
Sehen Sie sich dieses Beispiel an, um es auszuprobieren.
import face_recognition
picture_of_me = face_recognition . load_image_file ( "me.jpg" )
my_face_encoding = face_recognition . face_encodings ( picture_of_me )[ 0 ]
# my_face_encoding now contains a universal 'encoding' of my facial features that can be compared to any other picture of a face!
unknown_picture = face_recognition . load_image_file ( "unknown.jpg" )
unknown_face_encoding = face_recognition . face_encodings ( unknown_picture )[ 0 ]
# Now we can see the two face encodings are of the same person with `compare_faces`!
results = face_recognition . compare_faces ([ my_face_encoding ], unknown_face_encoding )
if results [ 0 ] == True :
print ( "It's a picture of me!" )
else :
print ( "It's not a picture of me!" )
Sehen Sie sich dieses Beispiel an, um es auszuprobieren.
Alle Beispiele finden Sie hier.
Wenn Sie eine eigenständige ausführbare Datei erstellen möchten, die ausgeführt werden kann, ohne dass python
oder face_recognition
installiert werden müssen, können Sie PyInstaller verwenden. Es erfordert jedoch eine benutzerdefinierte Konfiguration, mit dieser Bibliothek zu arbeiten. Sehen Sie sich dieses Problem an, um es zu tun.
face_recognition
abdeckenWenn Sie erfahren möchten, wie sich der Standort und die Erkennung von Gesicht und Erkennung anstelle einer Black Box -Bibliothek abhören, lesen Sie meinen Artikel.
Da face_recognition
von dlib
abhängt, das in C ++ geschrieben ist, kann es schwierig sein, eine App mit einem Cloud -Hosting -Anbieter wie Heroku oder AWS bereitzustellen.
Um die Dinge zu erleichtern, gibt es in diesem Repo ein Beispiel für Dockerfile, das zeigt, wie eine App mit face_recognition
in einem Docker -Container erstellt wird. Damit sollten Sie in der Lage sein, in jedem Dienst bereitzustellen, der Docker -Bilder unterstützt.
Sie können das Docker-Bild lokal durch Ausführen ausprobieren: docker-compose up --build
Es gibt auch mehrere vorgebaute Docker -Bilder.
Linux-Benutzer mit einer GPU (Treiber> = 384.81) und Nvidia-Docker können das Beispiel auf der GPU ausführen: Öffnen Sie die Datei docker-compose.yml und wenden Sie sich an die dockerfile: Dockerfile.gpu
und runtime: nvidia
Linien.
Wenn Sie auf Probleme stoßen, lesen Sie bitte den Abschnitt GROMMER FEHLER des Wiki, bevor Sie ein GitHub -Problem einreichen.