[PYTHON] Bibliothek für maschinelles Lernen dlib

Ich bemerkte eine der maschinell lernenden C ++ Python-Bibliotheken dlib. Python hat eine leistungsstarke Bibliothek namens Scikit-learn. Betrachten Sie es als eine Ihrer Optionen.

** Handbuch zur Auswahl des dlib-Algorithmus für die Bibliothek für maschinelles Lernen **

Auswahlhilfe für den dlib-Algorithmus der Bibliothek für maschinelles Lernen Es war in der Figur.

Machine Learning Guide

Dies ist eine Anleitung zum Scicit-Learn ![Choosing the right estimator] (http://scikit-learn.org/stable/_static/ml_map.png)

** dlib Artikel **

--SlideShare Erkennung von Gesichtsorganen bis 20160417dlib

C++

Der offizielle Blog beschreibt die neue Deep Learning API in Version 19.0

Python

C#

SlideShare Erkennung von Gesichtsorganen bis 20160417dlib

Die Gesichtsorganerkennung wird verwendet, um Gesichtsausdrücke, Blinzeln, Mundbewegungen usw. zu erkennen, indem die Positionen der Augen, der Nase, des Mundes usw. ermittelt werden. Es ist als unverzichtbare Funktion bei der Gesichtserkennung einer Person bekannt. Wir befinden uns in einer Zeit, in der Open Source-Bibliotheken so erfüllend sind.

Unter Linux können Sie es installieren, indem Sie die Schritte auf der folgenden Site ausführen. https://github.com/davisking/dlib

Ich denke jedoch, dass es Leute gibt, die es unter Windows verwenden möchten, daher werde ich das folgende Verfahren beschreiben.

** Von der Installation bis zur Erkennung von Gesichtsorganen (für Python) **

Umgebung: Windows7

Verfahren:

  1. Installieren Sie die dlib-Python-Bindung. Eingabeaufforderung > pip install dlib Ich konnte es auch unter Windows installieren.

Python-Eingabeaufforderung > > > dlib importieren Wenn der Fehler nicht auftritt, ist die Installation erfolgreich.

  1. Laden Sie Standard-Beispielprogramme von github mit [Download Zip] herunter https://github.com/davisking/dlib Extrahieren Sie die heruntergeladene Zip-Datei

    1. Laden Sie zusätzliche Daten herunter Beim Ausführen von face_landmark_detection.py http://sourceforge.net/projects/dclib/files/dlib/v18.10/shape_predictor_68_face_landmarks.dat.bz2 Download (61,1 MB auch bei komprimierter Datendatei) Extrahieren Sie es mit 7-zip. Verschieben Sie die extrahierte Datei in das Verzeichnis python_example.

Vier. Ausführen des Skripts von python_example Eingabeaufforderung > cd python_example Eingabeaufforderung > python face_detector.py Name der Bilddatei mit Gesicht

Eingabeaufforderung > python face_landmark_detection.py shape_predictor_68_face_landmarks.dat .. \ examples \ Gesichter

shape_predictor_68_face_landmarks.dat Da die Dateigröße von sehr groß ist, müssen Sie unmittelbar nach der Ausführung des Befehls eine Weile warten.

  1. Wenn Sie die Leistung mit anderen Bildern sehen möchten  ..\examples\faces Die einfachste Testmethode ist das Einfügen der JPG-Datei.

face_landmark_detection.py https://github.com/mit-nlp/MITIE/blob/master/dlib/python_examples/face_landmark_detection.py Wenn Sie sich die Verarbeitung für jedes Gesicht in jedem Bild ansehen (Anzeige des Ergebnisses der Hochleistungserkennung von Gesichtsorganen) Sie können sehen, dass das Programm nicht zu einfach zu verstehen ist.

Lassen Sie uns andere Beispiele für python_examples ansprechen.

https://github.com/davisking/dlib/tree/master/python_examples

Wenn Sie den folgenden Befehl einfügen, wird in den meisten Fällen die korrekte Verwendung angezeigt.

$ python face_alignment.py 
Call this program like this:
   ./face_alignment.py shape_predictor_5_face_landmarks.dat ../examples/faces/bald_guys.jpg
You can download a trained facial shape predictor from:
    http://dlib.net/files/shape_predictor_5_face_landmarks.dat.bz2

$

Es heißt, die Datendatei abzurufen, also mit wget abrufen. Dann entpacken.

$ wget http://dlib.net/files/shape_predictor_5_face_landmarks.dat.bz2
--2017-11-08 00:19:30--  http://dlib.net/files/shape_predictor_5_face_landmarks.dat.bz2
Resolving dlib.net (dlib.net)... 107.180.26.78
Connecting to dlib.net (dlib.net)|107.180.26.78|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5706710 (5.4M)
Saving to: ‘shape_predictor_5_face_landmarks.dat.bz2’

shape_predictor_5_f 100%[===================>]   5.44M   164KB/s    in 38s     

2017-11-08 00:20:09 (145 KB/s) - ‘shape_predictor_5_face_landmarks.dat.bz2’ saved [5706710/5706710]
$ 

Danach ist es gut, das Python-Skript mit dem Argument des Beispiels auszuführen.

./face_alignment.py shape_predictor_5_face_landmarks.dat ../examples/faces/bald_guys.jpg

Danach kann das Eingabebild ersetzt werden.

Auf diese Weise können Sie python_example ausprobieren. https://github.com/davisking/dlib/blob/master/python_examples/face_alignment.py

Unten sehen Sie, wie Sie ein solches Skript in der Befehlszeile verwenden.

$ ./cnn_face_detector.py 
Call this program like this:
   ./cnn_face_detector.py mmod_human_face_detector.dat ../examples/faces/*.jpg
You can get the mmod_human_face_detector.dat file from:
    http://dlib.net/files/mmod_human_face_detector.dat.bz2
$ ./face_alignment.py 
Call this program like this:
   ./face_alignment.py shape_predictor_5_face_landmarks.dat ../examples/faces/bald_guys.jpg
You can download a trained facial shape predictor from:
    http://dlib.net/files/shape_predictor_5_face_landmarks.dat.bz2

$ ./face_clustering.py 
Call this program like this:
   ./face_clustering.py shape_predictor_5_face_landmarks.dat dlib_face_recognition_resnet_model_v1.dat ../examples/faces output_folder
You can download a trained facial shape predictor and recognition model from:
    http://dlib.net/files/shape_predictor_5_face_landmarks.dat.bz2
    http://dlib.net/files/dlib_face_recognition_resnet_model_v1.dat.bz2

$ ./face_landmark_detection.py 
Give the path to the trained shape predictor model as the first argument and then the directory containing the facial images.
For example, if you are in the python_examples folder then execute this program by running:
    ./face_landmark_detection.py shape_predictor_68_face_landmarks.dat ../examples/faces
You can download a trained facial shape predictor from:
    http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2

face_alignment.py ist Gesicht erkennen Löschen Sie die Organpunkte im Gesicht Normalisieren Sie die Position des Bildes und zeigen Sie es im Fenster an. Wenn Sie die Eingabetaste eingeben, wird das nächste Gesichtsbild angezeigt.

$ ./face_alignment.py shape_predictor_5_face_landmarks.dat ../examples/faces/bald_guys.jpg

face_clustering.py Erkennen Sie das Gesicht im Bild im Eingabebildordner und berechnen Sie den jeweiligen Feature-Betrag Clustering basierend auf seinen Funktionen Speichern Sie die Bilder im größten Cluster im Ausgabeordner.

$ ./face_clustering.py shape_predictor_5_face_landmarks.dat dlib_face_recognition_resnet_model_v1.dat ../examples/faces output_folder
Processing file: ../examples/faces/bald_guys.jpg
Number of faces detected: 24
Processing file: ../examples/faces/2009_004587.jpg
Number of faces detected: 2
Processing file: ../examples/faces/2008_002506.jpg
Number of faces detected: 3
Processing file: ../examples/faces/2008_002079.jpg
Number of faces detected: 6
Processing file: ../examples/faces/2008_004176.jpg
Number of faces detected: 7
Processing file: ../examples/faces/dogs.jpg
Number of faces detected: 0
Processing file: ../examples/faces/2008_007676.jpg
Number of faces detected: 7
Processing file: ../examples/faces/2008_002470.jpg
Number of faces detected: 6
Processing file: ../examples/faces/2008_001009.jpg
Number of faces detected: 2
Processing file: ../examples/faces/2007_007763.jpg
Number of faces detected: 7
Processing file: ../examples/faces/2008_001322.jpg
Number of faces detected: 3
Number of clusters: 45
Biggest cluster id number: 0
Number of faces in biggest cluster: 6
Indices of images in the biggest cluster: [0, 1, 5, 11, 21, 22]
Saving faces in largest cluster to output folder...
$

** dlib Python API **

dlib documentation http://dlib.net/python/index.html http://dlib.net/ Die dlib-Dokumentation scheint immer besser zu werden.

Es gibt zwei Möglichkeiten, den Gesichtsdetektor zu verwenden.

Beispiel für die Verwendung des Gesichtsdetektors 1

detector = dlib.get_frontal_face_detector()
dets = detector(img, 1)

Beispiel 2 zur Verwendung des Gesichtsdetektors

detector = dlib.get_frontal_face_detector()
#RGB-Konvertierung(Konvertieren Sie vom OpenCV-Format in das Skimage-Format)
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# frontal_face_Die Detektorklasse ist rechteckig,Ergebnis,Gibt das Ergebnis des Subdetektors zurück
dets, scores, idx = detector.run(img_rgb, 0)
for det in dets:
    cv2.rectangle(img, (det.left(), det.top()), (det.right(), det.bottom()), (0, 0, 255))

Das geht verloren Beide cv :: Rect () sind (x, y, w, h) für cv2 Beachten Sie, dass es sich von unterscheidet.

dlib.rectangle(left, top, right, bottom))

Es scheint so in diesen Datentyp zu konvertieren.

Über die minimale Erkennungsgröße der Gesichtserkennung in dlib

Entsprechend der folgenden Beschreibung detector.run (img_rgb, numUpSampling) Die minimale Erkennungsgröße bei numUpSampling = 0 scheint 80 x 80 Pixel zu betragen. http://dlib.net/face_detection_ex.cpp.html

Wenn Sie mit 40 x 40 Pixel erkennen möchten, setzen Sie numUpSampling auf 1. Wenn Sie mit 20 x 20 Pixel erkennen möchten, setzen Sie numUpSampling auf 2. Es scheint, dass Sie müssen. Jedes Mal, wenn Sie numUpSampling erhöhen, wird der Bildbereich vervierfacht und die Verarbeitungszeit vervierfacht.

Über face_recognition.py von dlib selbst

https://github.com/davisking/dlib/blob/master/python_examples/face_recognition.py Es scheint also, dass Sie den Funktionsbetrag für die Gesichtsanpassung berechnen. Ich kann die Berechnung der Gesichtsübereinstimmung selbst nicht finden.

Aus diesem Grund wurde an der folgenden Stelle eine Bibliothek für die Gesichtserkennung separat entwickelt. Bitte beachten Sie, dass die Skriptdateinamen möglicherweise identisch sind. https://github.com/ageitgey/face_recognition

** Wie man die API vom Dokumentationsbrowser kennt **

Wenn Sie keinen japanischen Kommentar-Blog über die Python-Implementierung von dlib haben, haben Sie keine Angst. Starten Sie das Startmenü [Python (x, y)] [Dokumentation] [Python-Dokumentationsserver]. [open browser] Wenn Sie ausführen Im Browser (Python-Installationsziel) \ Site-Pakete Wenn Sie dlib darin finden, können Sie alle Funktionen der Python-Oberfläche anzeigen.

Wenn Sie Linux anstelle von Python verwenden (x, y) $ /usr/lib/python2.7/pydoc.py -p Portnummer &

Starten Sie den Server als Sie können es in Ihrem Browser öffnen.

** Wie erstelle ich einen Objektdetektor **

dlib bietet Tools zum Erstellen von Detektoren für Objekte (Hinweis). http://dlib.net/train_object_detector.py.html Siehe die Beschreibung in. ./train_object_detector.py ../examples/faces

Im Verzeichnis ../examples/faces befindet sich eine Datei mit dem Namen training.xml Es wird davon ausgegangen, dass es im folgenden Dateiformat abgelegt ist. Wenn diese XML-Datei in einem Browser angezeigt wird, wird der Gesichtsrahmen an welcher Position im Bild angezeigt. https://github.com/davisking/dlib/blob/master/examples/faces/training.xml

Bilder befinden sich auch im Verzeichnis ../examples/faces.

dlib.train_simple_object_detector(training_xml_path, "detector.svm", options)

Auf diese Weise wird die Lernergebnisdatei als detector.svm-Datei erstellt.

detector = dlib.simple_object_detector("detector.svm")
dets = detector(img)

Sie können eine Liste der erkannten Rechtecke wie folgt erhalten.

Der folgende Artikel erläutert die Reihe der Lernaufgaben.

Da die Objekterkennung von dlib auch intern abtastet, müssen nur Bilder und Rechtecke erfasst werden, bei denen es sich um positive Daten handelt. Die Genauigkeit ist gut, daher ist sie recht gut. Ich denke, er hat nur wenige Parameter und kann Objekte erkennen. Speicher und CPU sind dumm, aber charmant.

Darüber hinaus möchten Sie tatsächlich einen Objektdetektor mit Ihren eigenen Bilddaten erstellen. Die Vorgehensweise wird im nächsten Artikel beschrieben.


Die trainierten Modelldateien befinden sich an den folgenden Speicherorten.

[dlib-models] (https://github.com/davisking/dlib-models#dlib-models)

mmod_front_and_rear_end_vehicle_detector.dat.bz2 mmod_rear_end_vehicle_detector.dat.bz2 mmod_dog_hipsterizer.dat.bz2

** Artikel zur Objekterkennung und zum Lernen durch HOG und SVM **

Gesichtsorganpunkte lernen

Wie Dlibs eigenes Lernen der Gesichtsorgane durchgeführt wird, wird in den Kommentaren des Skripts selbst beschrieben. http://dlib.net/face_landmark_detection.py.html

#   The face detector we use is made using the classic Histogram of Oriented
#   Gradients (HOG) feature combined with a linear classifier, an image pyramid,
#   and sliding window detection scheme.  The pose estimator was created by
#   using dlib's implementation of the paper:
#      One Millisecond Face Alignment with an Ensemble of Regression Trees by
#      Vahid Kazemi and Josephine Sullivan, CVPR 2014
#   and was trained on the iBUG 300-W face landmark dataset (see
#   https://ibug.doc.ic.ac.uk/resources/facial-point-annotations/):  
#      C. Sagonas, E. Antonakos, G, Tzimiropoulos, S. Zafeiriou, M. Pantic. 
#      300 faces In-the-wild challenge: Database and results. 
#      Image and Vision Computing (IMAVIS), Special Issue on Facial Landmark Localisation "In-The-Wild". 2016.
#   You can get the trained model file from:
#   http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2.
#   Note that the license for the iBUG 300-W dataset excludes commercial use.
#   So you should contact Imperial College London to find out if it's OK for
#   you to use this model file in a commercial product.

** Herausforderungen für die Dlib-Gesichtserkennung **

--Profil wird nicht erkannt ――Wo befindet sich der Profildetektor? Schafft es jemand?

** dlib auch DNN **

** dlib-basierte Funktionen, die andere Bibliotheken ersetzen können **

Auszug aus dem folgenden Skript. https://github.com/davisking/dlib/blob/master/python_examples/face_recognition.py

Die folgende Instanz win und ihre Methoden können durch cv2.imshow (), cv2.rectangle () usw. ersetzt werden. Es gibt einen Teil von dlib, für den Sie OpenCV nicht verwenden müssen.

    win = dlib.image_window()
    img = io.imread(f)
    win.clear_overlay()
    win.set_image(img)
    dets = detector(img, 1)
    for k, d in enumerate(dets):
        shape = sp(img, d)
        win.clear_overlay()
        win.add_overlay(d)
    win.add_overlay(shape)
    dlib.hit_enter_to_continue()

** dlib selbst hat eine Tracking-Bibliothek **

** dlib-basierte Gesichtsanpassung ist verfügbar **

~~face_recognition 1.0.0~~

face_recognition 1.2.3

Einführungsartikel dlib-basiertes Gesichtsanpassungsprogramm face_recognition

So implementieren Sie dlib Python-Bindungen

Wie Sie der folgenden Quelle entnehmen können, wird boost :: python verwendet. https://github.com/davisking/dlib/blob/master/tools/python/src/object_detection.cpp

#include <boost/python/args.hpp>
using namespace boost::python;

Warum Sie dlib wegen Ihres Gesichts nicht ignorieren können

--OpenCV verfügt über eine Bibliothek, in der nach Gesichtspunkten gefragt wird, die jedoch noch nicht weit verbreitet ist. - https://docs.opencv.org/3.4/dc/d63/classcv_1_1face_1_1FacemarkLBF.html - Tutorials for face module Face landmark detection in an image - Facemark : Facial Landmark Detection using OpenCV


Es gibt eine dlib-Blog-Site. Hier wird die Erklärung über die implementierte Funktion geschrieben.

http://blog.dlib.net/

** Hinweis: **

Ich habe das hier geschriebene Memo of Face Matching von OpenCV selbst in ein unabhängiges Element geändert.

Ergänzender Artikel zu "OpenCV 3.3.0 Gesichtserkennung mit OpenCV"

Untersuchung der Schätzung der Gesichtsorientierung In Untersuchung der Open-Source-Implementierung von Face Matching

Japanische Übersetzung von Dlib README.md

Erstellen und Installieren von Dlib 19.15 unter Ubuntu

Nachtrag 2020.02

Zum Zeitpunkt des Schreibens dieses Postskripts gab es praktischere Optionen für die Gesichtserkennung und den Gesichtsabgleich. Zum Zeitpunkt des ersten Schreibens dieses Artikels fehlten OpenCVs eigene Funktionen zur Gesichtsanpassung, um die oberste Ebene von Open Source zu sein. Dies liegt daran, dass die Bibliothek von OpenCV selbst, die Gesichtsmarkierungen anzeigt und Gesichtsanpassungen durchführt, die Ergebnisse des Deep Learning nicht vollständig widerspiegelte. Ab 2020 ist die OpenVino-Gesichtsbibliothek jedoch umfangreich, und verschiedene Model ZOO-Modelle, die vom OpenVino Model Optimizer konvertiert wurden, können im Rahmen von OpenCV verwendet werden. Daher wird OpenVino irgendwann zu einer Situation, die aus der Situation nahe der Wahl von dlib nicht ignoriert werden kann. Bitte schauen Sie sich jedes Mal die Trends an, um zu sehen, was in Zukunft passieren wird. Wie stark sich die Gesichtsanpassungsfähigkeit der orientalischen Person erhöht, hängt davon ab, wie oft das Gesicht der orientalischen Person in jedem Modell zum Lernen verwendet wird. Die Verbesserung der Leistung von Open Source-Implementierungen kann eine Gegenmaßnahme gegen die übermäßigen sozialen Auswirkungen kommerzieller Bibliotheksentwickler sein.

Recommended Posts

Bibliothek für maschinelles Lernen dlib
Bibliothek für maschinelles Lernen Shogun
<Für Anfänger> Python-Bibliothek <Für maschinelles Lernen>
Einführung in die Bibliothek für maschinelles Lernen SHOGUN
[Memo] Maschinelles Lernen
Klassifikation des maschinellen Lernens
Beispiel für maschinelles Lernen
Zusammenfassung des Lernprogramms für maschinelles Lernen
Maschinelles Lernen Über Overlearning
Maschinelles Lernen ⑤ AdaBoost-Zusammenfassung
Maschinelles Lernen: Betreut --AdaBoost
Logistische Regression beim maschinellen Lernen
Python & Machine Learning Study Memo Introduction: Einführung in die Bibliothek
Maschinelles Lernen unterstützt Vektormaschine
Maschinelles Lernen studieren ~ matplotlib ~
Lineare Regression des maschinellen Lernens
Memo zum Kurs für maschinelles Lernen
Maschinelles Lernen (TensorFlow) + Lotto 6
Lerne irgendwie maschinelles Lernen
Maschinelles Lernen Kaninchen Herausforderung
Installieren Sie die Bibliothek für maschinelles Lernen TensorFlow auf fedora23
Einführung in das maschinelle Lernen
Maschinelles Lernen: k-Nächste Nachbarn
Was ist maschinelles Lernen?
Installation von TensorFlow, einer Bibliothek für maschinelles Lernen von Google
Pip die maschinelle Lernbibliothek von einem Ende (Ubuntu)
Modell des maschinellen Lernens unter Berücksichtigung der Wartbarkeit
Maschinelles Lernen mit Pokemon gelernt
Datensatz für maschinelles Lernen
Japanische Vorverarbeitung für maschinelles Lernen
Eine Einführung in das maschinelle Lernen
Techniken im Zusammenhang mit maschinellem Lernen / Klassifizierung
Maschinelles Lernen: Überwacht - Lineare Regression
Grundlagen des maschinellen Lernens (Denkmal)
Windows 10: Installieren der DLIB-Bibliothek für Python
[Maschinelles Lernen] Zufällige Gesamtstruktur verstehen
Maschinelles Lernen mit Python! Vorbereitung
Lernressourcen-Lernblock für maschinelles Lernen
Maschinelles Lernen ② Naive Bayes Zusammenfassung
Zusammenfassung der Artikel zum maschinellen Lernen (selbst verfasst)
Über maschinelles Lernen gemischte Matrix
Maschinelles Lernen: Überwacht - Zufälliger Wald
Praktisches Memo zum maschinellen Lernsystem
Maschinelles Lernen Minesweeper mit PyTorch
Erstellen Sie eine maschinelle Lernumgebung
Python Machine Learning Programming> Schlüsselwörter
Algorithmus für maschinelles Lernen (einfaches Perzeptron)
Wird in EDA für maschinelles Lernen verwendet
Bedeutung von Datensätzen für maschinelles Lernen
Maschinelles Lernen und mathematische Optimierung
Maschinelles Lernen: Überwacht - Support Vector Machine
Überwachtes maschinelles Lernen (Klassifikation / Regression)
Ich habe versucht, die Extreme-Lernmaschine zu implementieren
Beginnend mit maschinellem Python-Lernen
Algorithmus für maschinelles Lernen (Support Vector Machine)
Super Einführung in das maschinelle Lernen
4 [/] Vier Arithmetik durch maschinelles Lernen
Maschinelles Lernen ④ K-nächster Nachbar Zusammenfassung
Pokemon maschinelles Lernen N-te Abkochung
Versuchen Sie es mit Kaggle leicht maschinell