[PYTHON] Bibliothèque d'apprentissage automatique dlib

J'ai remarqué l'une des bibliothèques d'apprentissage automatique C ++ Python dlib. Python a une puissante bibliothèque appelée Scikit-learn, Pensez-y comme l'une de vos options.

** Guide de sélection de l'algorithme dlib de la bibliothèque d'apprentissage automatique **

Guide de sélection d'algorithmes pour la bibliothèque d'apprentissage automatique dlib C'était dans la figure.

Machine Learning Guide

Ceci est un guide pour scicit-learn ![Choosing the right estimator] (http://scikit-learn.org/stable/_static/ml_map.png)

** article dlib **

--SlideShare Détection d'organes faciaux par 20160417dlib

C++

Le blog officiel décrit la nouvelle API Deep Learning en version 19.0

Python

C#

SlideShare Détection d'organes faciaux par 20160417dlib

La détection d'organes faciaux permet de connaître les expressions faciales, les clignements, les mouvements de la bouche, etc. en obtenant les positions des yeux, du nez, de la bouche, etc. Il est connu comme une fonction indispensable lors de la reconnaissance faciale d'une personne. Nous sommes à une époque où les bibliothèques open source sont si enrichissantes.

Sous Linux, vous pouvez l'installer en suivant les étapes du site suivant. https://github.com/davisking/dlib

Cependant, je pense qu'il y a des gens qui veulent l'utiliser sous Windows, je vais donc décrire la procédure suivante.

** De l'installation à la détection des organes du visage (pour Python) **

environnement: Windows7

procédure:

  1. Installez la liaison python dlib. Invite de commandes > pip install dlib J'ai également pu l'installer sur Windows.

Invite Python > > > import dlib Si l'erreur ne se produit pas, l'installation est réussie.

  1. Téléchargez des exemples de programmes standard depuis github avec [Download Zip] https://github.com/davisking/dlib Extrayez le fichier zip téléchargé

    1. Télécharger des données supplémentaires Lors de l'exécution de face_landmark_detection.py http://sourceforge.net/projects/dclib/files/dlib/v18.10/shape_predictor_68_face_landmarks.dat.bz2 Télécharger (61,1 Mo même avec un fichier de données compressé) Extrayez-le avec 7-zip. Déplacez le fichier extrait dans le répertoire python_example.

Quatre. Exécution du script de python_example Invite de commande > cd python_example Invite de commande > python face_detector.py Nom du fichier image avec face

Invite de commandes > python face_landmark_detection.py shape_predictor_68_face_landmarks.dat .. \ examples \ faces

shape_predictor_68_face_landmarks.dat Étant donné que la taille du fichier de est très grande, vous devrez attendre un moment immédiatement après avoir exécuté la commande.

  1. Si vous souhaitez voir les performances avec d'autres images  ..\examples\faces La méthode de test la plus simple consiste à insérer le fichier jpg.

face_landmark_detection.py https://github.com/mit-nlp/MITIE/blob/master/dlib/python_examples/face_landmark_detection.py Si vous regardez, le traitement pour chaque visage trouvé dans chaque image (affichage du résultat de la détection d'organes faciaux haute performance) Vous pouvez voir que le programme n'est pas trop facile à comprendre.

Parlons d'autres exemples de python_examples.

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

Premièrement, si vous incluez la commande suivante, dans la plupart des cas, elle vous montrera l'utilisation correcte.

$ 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

$

Il dit d'obtenir le fichier de données, alors obtenez-le avec wget. Puis décompressez.

$ 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]
$ 

Après cela, il est bon d'exécuter le script python avec l'argument de l'exemple.

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

Après cela, l'image d'entrée peut être remplacée.

En faisant cela, vous pouvez vous sentir libre d'essayer python_example. https://github.com/davisking/dlib/blob/master/python_examples/face_alignment.py

Vous trouverez ci-dessous un affichage de l'utilisation d'un tel script sur la ligne de commande.

$ ./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 est Détecter le visage Mettre les points des organes du visage Normaliser la position de l'image et l'afficher dans la fenêtre. Lorsque la clé de retour est émise, l'image du visage suivant s'affiche.

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

face_clustering.py Détectez le visage dans l'image dans le dossier de l'image d'entrée et calculez la quantité de fonction pour chaque Clustering basé sur ses fonctionnalités Enregistrez les images du plus grand cluster dans le dossier de sortie.

$ ./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...
$

** API python dlib **

dlib documentation http://dlib.net/python/index.html http://dlib.net/ La documentation dlib semble de mieux en mieux.

Il existe deux façons d'utiliser le détecteur de visage.

Exemple d'utilisation du détecteur de visage 1

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

Exemple 2 d'utilisation du détecteur de visage

detector = dlib.get_frontal_face_detector()
#Conversion RVB(Convertir du format opencv au format skimage)
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# frontal_face_la classe du détecteur est rectangulaire,But,Renvoie le résultat du sous-détecteur
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))

Cela dets Les deux cv :: Rect () sont (x, y, w, h) pour cv2 Notez qu'il est différent de.

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

Il semble se convertir à ce type de données comme ceci.

À propos de la taille de détection minimale de la détection de visage dans dlib

Selon la description ci-dessous, detector.run (img_rgb, numUpSampling) La taille de détection minimale à numUpSampling = 0 semble être de 80x80 pixels. http://dlib.net/face_detection_ex.cpp.html

Si vous souhaitez détecter avec 40x40 pixels, définissez numUpSampling sur 1. Si vous souhaitez détecter avec 20x20 pixels, définissez numUpSampling sur 2. Il semble que vous en ayez besoin. Chaque fois que vous augmentez numUpSampling, la zone de l'image est quadruplée et le temps de traitement est quadruplé.

À propos de face_recognition.py de dlib lui-même

https://github.com/davisking/dlib/blob/master/python_examples/face_recognition.py Il semble donc que vous calculiez le montant de la fonctionnalité pour la correspondance de visage, Je ne trouve pas le calcul de l'appariement de visage lui-même.

Pour cette raison, une bibliothèque pour l'appariement des visages a été développée séparément sur le site suivant. Veuillez noter que les noms de fichier de script peuvent être identiques. https://github.com/ageitgey/face_recognition

** Comment connaître l'API depuis le navigateur de documentation **

Si vous n'avez pas de blog de commentaires japonais sur l'implémentation Python de dlib, n'ayez pas peur. Démarrez le menu Démarrer [Python (x, y)] [Documentation] [Serveur de documentation Python]. [open browser] Lorsque vous exécutez Sur le navigateur (Destination de l'installation Python) \ site-packages Si vous y trouvez dlib, vous pouvez voir toutes les fonctionnalités fournies par l'interface Python.

Si vous utilisez Linux au lieu de Python (x, y) $ /usr/lib/python2.7/pydoc.py -p numéro de port &

Démarrez le serveur en tant que Vous pouvez l'ouvrir dans votre navigateur.

** Comment faire un détecteur d'objet **

dlib fournit des outils pour créer des détecteurs d'objets (Note). http://dlib.net/train_object_detector.py.html Voir la description dans. ./train_object_detector.py ../examples/faces

Il existe un fichier nommé training.xml dans le répertoire ../examples/faces On suppose qu'il est placé dans le format de fichier suivant. Lorsque vous affichez ce fichier xml avec un navigateur, le cadre du visage sera affiché à quelle position dans l'image. https://github.com/davisking/dlib/blob/master/examples/faces/training.xml

Les images se trouvent également dans le répertoire ../examples/faces.

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

De cette manière, le fichier de résultats d'apprentissage sera créé en tant que fichier detecteur.svm.

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

Vous pouvez obtenir une liste de rectangles détectés comme celui-ci.

L'article suivant explique la série de tâches d'apprentissage.

Étant donné que la détection d'objets de dlib échantillonne également en interne, il est seulement nécessaire de collecter des images et des rectangles qui sont des données positives, et la précision est bonne, donc c'est assez bon. Je pense qu'il a peu de paramètres et peut détecter des objets. La mémoire et le processeur sont stupides mais charmants.

De plus, vous souhaitez créer un détecteur d'objet avec vos propres données d'image. La procédure est décrite dans l'article suivant.


Les fichiers de modèle formés se trouvent aux emplacements suivants.

[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

** Article sur la détection et l'apprentissage d'objets par HOG et SVM **

Apprendre les points des organes du visage

La façon dont se fait l'apprentissage des organes faciaux de Dlib est décrite dans les commentaires du script lui-même. 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.

--Il existe une détection de visage de chat et une détection de point d'organe.

** Défis pour la détection de visage dlib **

--Le profil n'est pas détecté ――Où se trouve le détecteur de profil? Quelqu'un le fait-il?

** dlib également DNN **

** fonctionnalités basées sur dlib qui peuvent remplacer d'autres bibliothèques **

Extrait du script suivant. https://github.com/davisking/dlib/blob/master/python_examples/face_recognition.py

L'instance suivante win et ses méthodes peuvent être remplacées par cv2.imshow (), cv2.rectangle (), etc. Il y a une partie de dlib que vous n'avez pas besoin d'utiliser OpenCV.

    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 lui-même a une bibliothèque de suivi **

** La correspondance des visages basée sur dlib est disponible **

~~face_recognition 1.0.0~~

face_recognition 1.2.3

Article d'introduction programme de reconnaissance de visage basé sur dlib face_recognition

Comment implémenter les liaisons dlib Python

Comme vous pouvez le voir dans la source ci-dessous, boost :: python est utilisé. https://github.com/davisking/dlib/blob/master/tools/python/src/object_detection.cpp

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

Pourquoi vous ne pouvez pas ignorer dlib à cause de votre visage

--OpenCV a une bibliothèque qui demande des repères faciaux, mais elle n'est pas encore répandue. - 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


Il existe un site de blog dlib. Ici, l'explication est écrite sur la fonction implémentée.

http://blog.dlib.net/

** Remarque: **

J'ai changé le mémo de correspondance de visage d'OpenCV lui-même écrit ici en un élément indépendant.

Article supplémentaire à "OpenCV 3.3.0 Face Recognition with OpenCV"

Enquête sur l'estimation de l'orientation du visage Enquête sur la mise en œuvre de la correspondance de visage open source

Traduction japonaise de Dlib README.md

Création et installation de Dlib 19.15 sur Ubuntu

Postscript 2020.02

Au moment de la rédaction de ce post-scriptum, il y avait des options plus pratiques pour la détection des visages et la correspondance des visages. Au moment de la rédaction de cet article pour la première fois, les fonctionnalités liées à la correspondance des visages d'OpenCV faisaient défaut en termes de niveau supérieur de l'open source. En effet, la bibliothèque d'OpenCV elle-même, qui affiche les repères des visages et effectue la correspondance des visages, ne reflète pas pleinement les résultats de l'apprentissage en profondeur. Cependant, à partir de 2020, la bibliothèque de visages d'OpenVino est substantielle et divers modèles Model ZOO qui ont été convertis par l'OpenVino's Model Optimizer peuvent être utilisés dans le cadre d'OpenCV. Par conséquent, à un moment donné, OpenVino devient une situation qui ne peut être ignorée de la situation proche du choix de dlib. Veuillez regarder les tendances à chaque fois pour voir ce qui se passera dans le futur. L'augmentation de la capacité d'appariement du visage de la personne orientale dépendra de l'utilisation du visage de la personne orientale pour l'apprentissage dans chaque modèle. L'amélioration des performances des implémentations open source peut être une contre-mesure contre l'impact social excessif des développeurs de bibliothèques commerciales.

Recommended Posts

Bibliothèque d'apprentissage automatique dlib
Bibliothèque d'apprentissage automatique Shogun
<Pour les débutants> bibliothèque python <Pour l'apprentissage automatique>
Présentation de la bibliothèque d'apprentissage automatique SHOGUN
[Memo] Apprentissage automatique
Classification de l'apprentissage automatique
Exemple d'apprentissage automatique
Résumé du didacticiel d'apprentissage automatique
Apprentissage automatique sur le surapprentissage
Apprentissage automatique ⑤ Résumé AdaBoost
Apprentissage automatique: supervisé - AdaBoost
Régression logistique d'apprentissage automatique
Mémo d'étude Python & Machine Learning ②: Introduction de la bibliothèque
Machine de vecteur de support d'apprentissage automatique
Étudier l'apprentissage automatique ~ matplotlib ~
Régression linéaire d'apprentissage automatique
Mémo du cours d'apprentissage automatique
Apprentissage automatique (TensorFlow) + Lotto 6
Apprenez en quelque sorte le machine learning
Défi de lapin d'apprentissage automatique
Installez la bibliothèque d'apprentissage automatique TensorFlow sur fedora23
Introduction à l'apprentissage automatique
Apprentissage automatique: k-voisins les plus proches
Qu'est-ce que l'apprentissage automatique?
Installation de TensorFlow, une bibliothèque d'apprentissage automatique de Google
Pip la bibliothèque d'apprentissage automatique à partir d'une extrémité (Ubuntu)
Modèle d'apprentissage automatique prenant en compte la maintenabilité
L'apprentissage automatique appris avec Pokemon
Ensemble de données pour l'apprentissage automatique
Prétraitement japonais pour l'apprentissage automatique
Une introduction à l'apprentissage automatique
Techniques liées à l'apprentissage automatique / à la classification
Machine Learning: Supervision - Régression linéaire
Bases de l'apprentissage automatique (mémoire)
Windows10: installation de la bibliothèque dlib pour python
[Apprentissage automatique] Comprendre la forêt aléatoire
Apprentissage automatique avec Python! Préparation
Bloc-notes de ressources d'étude d'apprentissage automatique
Apprentissage automatique ② Résumé Naive Bayes
Résumé de l'article sur l'apprentissage automatique (auto-écrit)
À propos de la matrice mixte d'apprentissage automatique
Apprentissage automatique: forêt supervisée - aléatoire
Mémo pratique du système d'apprentissage automatique
Démineur d'apprentissage automatique avec PyTorch
Créer un environnement d'apprentissage automatique
Programmation Python Machine Learning> Mots-clés
Algorithme d'apprentissage automatique (perceptron simple)
Utilisé en EDA pour l'apprentissage automatique
Importance des ensembles de données d'apprentissage automatique
Apprentissage automatique et optimisation mathématique
Machine Learning: Supervisé - Support Vector Machine
Machine learning supervisé (classification / régression)
J'ai essayé d'implémenter Extreme Learning Machine
Commencer avec l'apprentissage automatique Python
Algorithme d'apprentissage automatique (machine vectorielle de support)
Super introduction à l'apprentissage automatique
4 [/] Quatre arithmétiques par apprentissage automatique
Apprentissage automatique ④ Résumé du K-plus proche voisin
Pokemon Machine Learning Nth décoction
Essayez le machine learning à la légère avec Kaggle