Serie de reconocimiento facial (1): instalación y uso de dlib

Dlib es una popular biblioteca de código abierto para reconocimiento facial. Está escrita en C++ y contiene muchos algoritmos de aprendizaje automático. También se puede utilizar en Python. Dlib mantiene un buen ritmo de actualización y la documentación también es muy clara, los recursos involucrados están marcados con dónde descargarlos, es una excelente biblioteca de código abierto para reconocimiento facial.

Instale la biblioteca Python de Dlib en Ubuntu

Python es un lenguaje importante para el aprendizaje automático y es relativamente fácil de usar. Aunque Dlib está escrito en C++, se puede usar fácilmente cuando se compila en Python.

El proceso de instalación también es relativamente sencillo:

La biblioteca boost se usa en el desarrollo de Dlib y cmake se usa durante la compilación. Estas dos deben instalarse antes de la instalación. Si no se instalan, se informará un error:

Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-FnblaA/dlib/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-BoT1jf-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-FnblaA/dlib/

Instale boost y cmake de la siguiente manera:

apt-get install libboost-python-dev cmake

Primero instale las bibliotecas scikit-image y cv2 involucradas en Dlib

pip install scikit-image
pip install opencv-python

Puede instalar Dlib de la siguiente manera:

pip install dlib

Lo más importante en el reconocimiento es extraer las características del objeto, lo mismo ocurre en el reconocimiento facial, es necesario extraer las características del rostro, una vez obtenidas las características se pueden utilizar para la identificación.

El código se muestra a continuación:

#!/usr/bin/python
#coding=utf-8

# 先检测人脸,提取关键点向量
# 人脸关键点检测器 shape_predictor_5_face_landmarks.dat 在 http://dlib.net/files/shape_predictor_5_face_landmarks.dat.bz2 下载
# 人脸识别模 dlib_face_recognition_resnet_model_v1.dat 在 http://dlib.net/files/dlib_face_recognition_resnet_model_v1.dat.bz2 下载

import sys,os,dlib,glob,numpy
from skimage import io

# 模型
predictor_path = 'shape_predictor_5_face_landmarks.dat'
face_rec_model_path = 'dlib_face_recognition_resnet_model_v1.dat'
# 需要检测的文件
faces_folder_path = 'faceto'

detector = dlib.get_frontal_face_detector()
sp = dlib.shape_predictor(predictor_path)
facerec = dlib.face_recognition_model_v1(face_rec_model_path)

descriptors = []

for f in glob.glob(os.path.join(faces_folder_path, "*.jpg")):
    print("Processing file: {}".format(f))
    img = io.imread(f)
    # 先检测人脸
    dets = detector(img, 1)
    print("Number of faces detected: {}".format(len(dets)))
    for k, d in enumerate(dets):

        shape = sp(img, d)
        # 在人脸区域中,提取关键点向量,128D向量
        face_descriptor = facerec.compute_face_descriptor(img, shape)
        # 转换为numpy array
        v = numpy.array(face_descriptor)
        print 'face_descriptor',v.shape
        print v

Instale la biblioteca Python de Dlib en Windows

En Windows, también es necesario resolver dos dependencias, las bibliotecas cmake y boost. Por supuesto, Python se ha instalado en esta máquina.

cmake es relativamente simple, simplemente vaya a https://cmake.org/download/ para instalar la versión correspondiente.

Es necesario compilar la biblioteca boost.

Descargue la versión requerida en http://www.boost.org/users/history/,

Estoy usando vs2015 e ingreso la línea de comando de desarrollo:

C:\Program Files (x86)\Microsoft Visual Studio 14.0>

Descomprima el boost descargado y colóquelo en un directorio específico. Ingrese al directorio de Boost y ejecute bootstrap.bat. Si no se informa ningún error, se le pedirá que ejecute el comando ./b2 para compilar boost. Se generará el directorio de etapa y la variable de entorno BOOST_ROOT = D:\boost_1_59_0 y BOOST_LIBRARYDIR = D:\boost_1_59_0\stage\lib

Luego compila la biblioteca de Python.

b2 -a --with-python address-model=32 toolset=msvc runtime-link=static

En este punto, se han instalado las bibliotecas cmake y boost, luego, al igual que ubuntu, instale scikit-image, cv2 y dlib.

pip install scikit-image
pip install opencv-python
pip install dlib

Si ocurre un error al instalar scikit-image,

Command "c:\python27\python.exe -u -c "import setuptools, tokenize;__file__='c:\\users\\\xc1\xd6\xc7\xe5\xc6\xaf\\appdata\\local\\temp\\pip-build-v_gl7g\\scikit-image\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record c:\users\\appdata\local\temp\pip-juqjlo-record\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in c:\users\appdata\local\temp\pip-build-v_gl7g\scikit-image\

Solución:
guarde stdint.h en C:\Users\userName\AppData\Local\Programs\Common\Microsoft\Visual C++ para Python\9.0\VC\include\

Instalar de nuevo

Descargue el código fuente de Dlib en github. El face_detector.py en python_examples se usa para etiquetar caras. Las anotaciones del código también son muy detalladas. Ejecute de la siguiente manera:

./face_detector.py ../examples/faces/*.jpg

Insertar descripción de la imagen aquí

Compilar código Dlib con vs2015

Necesitas estudiar el código de Dlib. A veces necesitas compilar Dlib. Dlib está escrito en C ++. El código compilado en el sitio web oficial es el siguiente:

Ingrese el camino a Dlib

mkdir build  
cd build  
cmake -G "Visual Studio 14 2015 Win64" ..  
cmake --build . --config Release 

Dlib está compilado. La versión de lanzamiento se compila aquí. La versión de lanzamiento también debe usarse durante el uso. Muchos ejemplos de Dlib usan opencv, y es necesario agregar la ruta y la biblioteca de enlaces.

Agregue debajo de la ruta de referencia:

D:\work\dlib-master
D:\work\opencv\build\include

Agregue el preprocesador c++:

DLIB_JPEG_SUPPORT

Agregar enlace de biblioteca:

D:\work\dlib-master\build\dlib\Release\dlib.lib
D:\work\opencv\build\x64\vc14\lib\opencv_world331.lib

Busque face_detection_ex.cpp en los ejemplos y agréguelo al proyecto. Puede ver los mismos resultados que Python en este momento.

[Error en la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo de enlace antirrobo, se recomienda guardar la imagen y cargarla directamente (img-fyWarfXv-1649464455336)(/images/kuxue/machine_learning/face/face_dec1.png )]

Compilar Dlib sin cmake

Cuando necesite comprender mejor el código fuente de Dlib, debe leer el código durante la depuración. Esto no se puede hacer al compilarlo en lib, por lo que debemos agregar dlib al proyecto.

Descargue el código dlib en http://dlib.net/compile.html, descomprímalo en una ruta determinada y espere hasta que el proyecto necesite hacer referencia a él.

Cree un nuevo proyecto de aplicación de consola win32 vacío para vs2015 y asígnele el nombre Dlib_test.

1. Haga clic derecho en el proyecto->Propiedades->C/C++>General->Directorios de inclusión adicionales

Agregue cuatro directorios de la siguiente manera:

D:\work\dlib-master\dlib\external\libjpeg

D:\work\dlib-master\dlib\external\libpng

D:\work\dlib-master\dlib\external\zlib

D:\work\dlib-master

Insertar descripción de la imagen aquí

2.Establezca el directorio de la biblioteca

Proyecto->Propiedades->Enlazador->General->Directorio de biblioteca adicional

D:\work\dlib-master\dlib D:\work\dlib-master\dlib\external

3. Agregue soporte para imágenes JPG y PNG:

Propiedades->C/C++>Preprocesador->Definición de preprocesador

DLIB_JPEG_SUPPORT
DLIB_PNG_SUPPORT

Insertar descripción de la imagen aquí

4. Desactive la comprobación de SDL

Cuando la verificación SDL está habilitada, el compilador detectará estrictamente los desbordamientos del búfer, lo que provocará que algunas funciones no se puedan compilar.

Propiedades del proyecto->Propiedades de configuración->C/C+±>SDL Check, seleccione No.

5. Agregar archivos de recursos

Agregue todos los archivos de las siguientes tres carpetas al archivo de recursos

dlib\external\libjpeg
dlib\external\libpng
dlib\external\zlib

6. Agregar archivos fuente

Agregue dos archivos fuente al proyecto:

dlib\all\source.cpp
examples\face_landmark_detection_ex.cpp

El proyecto es el siguiente:

Insertar descripción de la imagen aquí

La función main () face_landmark_detection_ex.cppse encuentra a continuación . Al depurar, ingrese desde este proyecto principal y podrá ver los dos algoritmos más importantes para el reconocimiento facial, la detección de rostros y la extracción de características shape_predictor.

Supongo que te gusta

Origin blog.csdn.net/weixin_40425640/article/details/124055144
Recomendado
Clasificación