Détection de visage avec Python + dlib

Détection de visage avec Python + dlib

Installation

CMAKE, Boost, Boost Python, G ++ et plus sont nécessaires avant d'installer dlib

Présentation d'OpenCV et de dlib sur Ubuntu

Recherche sélective à l'aide de dlib

Mettez OpenCV / scikit-image dans l'entrée / sortie du fichier image Cette fois, j'utilise OpenCV

code

Vous pouvez obtenir un score facial avec dlib On a l'impression qu'il détectera même s'il est légèrement incliné, donc même si vous le détectez en le faisant tourner, l'angle de rotation peut être d'environ 45 degrés chacun. J'ai essayé le dépistage avec un score un peu faible (valeur CUT_OFF) et j'ai pensé qu'il serait possible d'ajuster l'angle pour que le score soit élevé tout en faisant pivoter la zone rétrécie, mais cela prend trop de temps Le type qui apparaît dans le résultat de la détection semble correspondre au type de détecteur (que le visage soit de face ou de côté?) Lorsque vous commentez, 68 points caractéristiques sont extraits du visage détecté Si vous savez quels points correspondent aux yeux, au nez et au contour, vous pouvez l'améliorer un peu plus.

detect_face.py


# -*- coding: utf-8 -*-

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import os, sys, imghdr, shutil, dlib, cv2

CWD = os.getcwd()
DIR_ORIGIN = CWD + '/images/'
DIR_DESTINATION = CWD + '/faces/'
CUT_OFF = -0.1

detector = dlib.get_frontal_face_detector()
# predictor = dlib.shape_predictor('./shape_predictor_68_face_landmarks.dat')

def getFaces(path_full):
    results = []
    image = cv2.imread(path_full)
    height, width = image.shape[:2]
    rects, scores, types = detector.run(image, 1, CUT_OFF)
    for i, rect in enumerate(rects):
        top, bottom, left, right = rect.top(), rect.bottom(), rect.left(), rect.right()
        if min(top, height - bottom - 1, left, width - right - 1) < 0:
            continue
        results.append({
            'image'       : image[top : bottom, left : right],
            'score'       : scores[i],
            'orientation' : types[i]
        })
        # shape = predictor(image, rect)
        # for i in range(shape.num_parts):
        #     print(shape.part(i))
    return results

count = 1
for path, subdirs, files in os.walk(DIR_ORIGIN):
    for name in files:
            path_full = os.path.join(path, name)
            if imghdr.what(path_full) in ['jpeg']:
                faces = getFaces(path_full)
                for face in faces:
                    file_name = '{destination_dir}/{score}_{type}_{count}_dlib.jpg'.format(
                        destination_dir = DIR_DESTINATION,
                        score = face['score'],
                        type = int(face['orientation']),
                        count = count
                    )
                    cv2.imwrite(file_name, face['image'], [cv2.IMWRITE_JPEG_QUALITY, 100])
                    count += 1
                print(path_full)

Site de référence

Publier le savoir-faire de création d'un service de recherche d'images similaire pour les actrices audiovisuelles par apprentissage profond par chainer

Programme de détection de visage qui relie OpenCV et dlib

Bibliothèque d'apprentissage automatique dlib

OpenFace 0.2.0: Higher accuracy and halved execution time

Résumé des résultats de la détection des visages avec OpenCV, Dlib et OpenFace

Comment créer un ensemble de données d'image de visage utilisé dans l'apprentissage automatique (3: Génération d'images de visage à partir d'images candidates 1)

Recommended Posts

Détection de visage avec Python + dlib
Détection de visage avec Python + OpenCV
Détection de visage avec YOLO Face (Windows10, Python3.6)
Détection de visage avec Lambda (Python) + Rekognition
Détection de visage Dlib et compteur de clignotements par Python
Hello World et détection de visage avec OpenCV 4.3 + Python
Résumé de la détection de visage en Python
Détection de falsification de la blockchain avec Python
Essayez la reconnaissance faciale avec Python
Détection de visage avec Haar Cascades
Détection de visage d'anime avec OpenCV
[Ubuntu] [Python] Comparaison de la détection de visage entre dlib et OpenCV
[Python] Utilisation d'OpenCV avec Python (détection des bords)
Essayez la reconnaissance faciale avec python + OpenCV
J'ai essayé la détection de visage avec MTCNN
Découpez le visage avec Python + OpenCV
Reconnaissance faciale avec caméra avec opencv3 + python2.7
Hello World et détection de visage avec opencv-python 4.2
FizzBuzz en Python3
Grattage avec Python
[Python] Détection de visage par OpenCV (Haar Cascade)
Statistiques avec python
Grattage avec Python
Python avec Go
[Ubuntu] [Python] Détection d'organes faciaux à l'aide de dlib
Twilio avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
python commence par ()
[python, openCV] base64 Reconnaissance faciale dans les images
avec syntaxe (Python)
Bingo avec python
Zundokokiyoshi avec python
API de reconnaissance faciale sans serveur conçue avec Python
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Comparaison des performances du détecteur de visage avec Python + OpenCV
[Python3] [Ubuntu16] [Docker] Essayez la reconnaissance faciale avec OpenFace
Redimensionner, mosaïque, détection de visage avec OpenCV, parfois tampon d'éléphant
Communication série avec Python
Zip, décompressez avec python
Django 1.11 a démarré avec Python3.6
Jugement des nombres premiers avec Python
Python avec eclipse + PyDev.
Communication de socket avec Python
Analyse de données avec python 2
Grattage en Python (préparation)
Essayez de gratter avec Python.
Apprendre Python avec ChemTHEATER 03
Recherche séquentielle avec Python
"Orienté objet" appris avec python
Exécutez Python avec VBA
Manipuler yaml avec python
Résolvez AtCoder 167 avec python
Communication série avec python
[Python] Utiliser JSON avec Python
Reconnaissance faciale avec Edison
Apprendre Python avec ChemTHEATER 05-1