[PYTHON] Reconnaissance faciale à l'aide d'OpenCV (classificateur de caractéristiques de type Haar)

Classificateur d'entités de type Haar

"Cascade de classificateurs boostés utilisant des fonctionnalités de type Haar" est une méthode appelée Haar-like qui utilise un motif rectangulaire composé de lumière et d'obscurité pour la détection. La fonction de type Haar et l'image cible sont superposées pour déterminer s'il existe un motif.  haar.png

Les classificateurs d'entités de type Haar suivants sont fournis à l'avance dans OpenCV. [OpenCV Install Dir]/Library/etc/haarcascades/

nom de fichier Contenu
haarcascade_eye.xml Œil
haarcascade_eye_tree_eyeglasses.xml des lunettes
haarcascade_frontalcatface.xml Visage de chat (avant)
haarcascade_frontalcatface_extended.xml Visage de chat (avant)
haarcascade_frontalface_alt.xml Face (avant)
haarcascade_frontalface_alt2.xml Face (avant)
haarcascade_frontalface_alt_tree.xml Face (avant)
haarcascade_frontalface_default.xml Face (avant)
haarcascade_fullbody.xml Tout le corps
haarcascade_lefteye_2splits.xml oeil gauche
haarcascade_licence_plate_rus_16stages.xml Plaque d'immatriculation russe (entière)
haarcascade_lowerbody.xml Bas du corps
haarcascade_profileface.xml Visage (photo de certification)
haarcascade_righteye_2splits.xml l'œil droit
haarcascade_russian_plate_number.xml Plaque d'immatriculation russe (numéro)
haarcascade_smile.xml Sourire
haarcascade_upperbody.xml Haut du corps

Cette fois, je vais essayer la reconnaissance faciale en utilisant le classificateur de caractéristiques de type Haar d'OpenCV.

OpenCV OpenCV (Open Source Computer Vision Library) est une collection de bibliothèques de traitement vidéo / image sous licence BSD. Il existe de nombreux algorithmes tels que le filtrage d'image, la correspondance de modèles, la reconnaissance d'objets, l'analyse vidéo et l'apprentissage automatique.

■ Exemple de suivi de mouvement avec OpenCV (OpenCV Google Summer of Code 2015) https://www.youtube.com/watch?v=OUbUFn71S4s

■ Cliquez ici pour une installation et une utilisation facile Installer OpenCV 3 (core + contrib) dans l'environnement Python 3 & Différence entre OpenCV 2 et OpenCV 3 & Easy operation check ★ Veuillez installer core + opencv_contrib pour exécuter le modèle de mouvement.

■ Cliquez ici pour filtrer les images fixes Essayez la détection des bords avec OpenCV Effectuer divers filtres avec OpenCV (Gradient, Highpass, Laplacian, Gaussian) Extraire des points caractéristiques avec OpenCV (AgastFeature, FAST, GFTT, MSER, AKAZE, BRISK, KAZE, ORB, SimpleBlob)

■ Cliquez ici pour le traitement des fichiers vidéo Essayez de convertir des vidéos en temps réel avec OpenCV Essayez de convertir des vidéos de caméra Web / caméra vidéo en temps réel avec OpenCV Dessinez un flux optique en temps réel avec OpenCV (méthode Shi-Tomasi, méthode Lucas-Kanade) Suivi d'objets à l'aide d'OpenCV (suivi des points caractéristiques spécifiés par la souris par la méthode Lucas-Kanade Analyse de modèles de mouvement à l'aide d'OpenCV (reconnaissance des objets et de leurs directions de déplacement en temps réel)

programme

Le flux est le suivant.

  1. Créez un classificateur d'entités de type Haar avec cv2.CascadeClassifier ([fichier d'entités de type Haar.xml])
  2. Spécifiez une image pour le classificateur d'entités de type Haar
  3. Entourez la zone détectée de l'image avec un rectangle

face.py


import cv2

# Haar-comme le chargement du classificateur d'entités
face_cascade = cv2.CascadeClassifier('haarcascades/haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascades/haarcascade_eye.xml')

#Chargement du fichier image
img = cv2.imread('face.png')

#Conversion de l'échelle de gris
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

#Détection facial
faces = face_cascade.detectMultiScale(gray)
for (x,y,w,h) in faces:
    #Entourez le visage détecté dans un rectangle
    cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
    #Image du visage (échelle de gris)
    roi_gray = gray[y:y+h, x:x+w]
    #Augmentation du visage g (échelle de couleurs)
    roi_color = img[y:y+h, x:x+w]
    #Détecter les yeux de l'intérieur du visage
    eyes = eye_cascade.detectMultiScale(roi_gray)
    for (ex,ey,ew,eh) in eyes:
        #Entourez l'œil détecté dans un rectangle
        cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)

#Affichage de l'image
cv2.imshow('img',img)

#Appuyez sur n'importe quelle touche pour terminer
cv2.waitKey(0)
cv2.destroyAllWindows()

Résultat d'exécution

Si c'est une telle image, elle sera reconnue comme ça. Je reconnais tous les visages, mais les yeux ne reconnaissent pas grand-chose, probablement à cause de l'image vague. result.png

Si c'est une telle image, elle sera reconnue comme ça. Le visage entier est tout à fait reconnaissable. En revanche, les yeux reconnaissent si la ligne de visée est tournée vers l'avant. result12.png

Si vous comprenez dans une certaine mesure les modèles de détection tels que les yeux et le profil, il semble que vous puissiez deviner la ligne de vue et les objets devant la ligne de vue.

Recommended Posts

Reconnaissance faciale à l'aide d'OpenCV (classificateur de caractéristiques de type Haar)
Reconnaissance faciale avec OpenCV de Python
Détection de caractéristiques à l'aide d'opencv (détection de coin)
J'ai essayé la reconnaissance faciale avec Face ++
Reconnaissance faciale / coupe avec OpenCV
Reconnaissance faciale à l'aide de l'analyse des composants principaux
Essayez la reconnaissance faciale avec python + OpenCV
Reconnaissance faciale avec caméra avec opencv3 + python2.7
Détection de visage à l'aide d'un classificateur en cascade
J'ai essayé la reconnaissance faciale avec OpenCV
[python, openCV] base64 Reconnaissance faciale dans les images
Estimer qui est le visage en utilisant OpenCV (Eigenface, Fisherface, LBPH)
Reconnaissance faciale avec Edison
Reconnaissance faciale en temps réel avec vidéo acquise par getUserMedia [HTML5, openCV]
J'ai essayé la reconnaissance faciale du problème du rire en utilisant Keras.
J'ai essayé de reconnaître le visage de la vidéo (OpenCV: version python)
Détection d'image de visage similaire utilisant la reconnaissance faciale et le clustering PCA et K-means