Deepface: el marco de análisis de atributos faciales y reconocimiento facial ligero más avanzado explicado

introducir

Deepface es un marco ligero de reconocimiento facial y análisis de atributos faciales (edad, género, emoción y etnia) para Python. Es un marco híbrido de reconocimiento facial.

deepface contiene modelos de última generación: VGG-Face, Google FaceNet, OpenFace, Facebook DeepFace y DeepIDArcFaceDlib. Todos estos modelos se empaquetan juntos, y Deepface tiene una tasa de precisión del 97 % para el reconocimiento facial y se ha demostrado que tiene más éxito en la detección de rostros que los marcos generales de reconocimiento facial. Facebook usa Deepface para evitar la suplantación de identidad y el robo de identidad en su plataforma.

Una representación gráfica: (fuente sitio web oficial)
inserte la descripción de la imagen aquí

Puntuación para cada modelo:
inserte la descripción de la imagen aquí

Construcción del entorno

Mi entorno de software:

  • pycharm2021
  • pitón3.9.6

Instalación del módulo:

pip install deepface

verificación facial

Compare las dos imágenes para ver si son la misma persona. La imagen es:
inserte la descripción de la imagen aquí
se pueden implementar las siguientes tres líneas de código. Al ejecutarlo, se descargará automáticamente el archivo de peso relevante vgg_face_weights.h5 para usted:

from deepface import DeepFace

verification = DeepFace.verify(img1_path = "img1.jpg", img2_path = "img2.jpg")
print(verification)

El resultado es el siguiente:

{
    
    'verified': True, 'distance': 0.1600321561950978, 
'threshold': 0.4, 'model': 'VGG-Face',
 'detector_backend': 'opencv', 'similarity_metric': 'cosine'}

El tipo es un diccionario, analicemos los siguientes significados:

  • verificado=Verdadero: Indica la misma persona. Este es el resultado de la verificación.
  • parámetro de distancia: cuanto menor sea el valor, mayor será la similitud, cuanto mayor sea la menor similitud.
  • modelo: El modelo predeterminado VGG-Face. También puedes probar otros modelos.
  • detector_backend: significa tener soporte opencv

También puede configurar el modelo usted mismo, por ejemplo, en OpenFace:

rom deepface import DeepFace

models=["VGG-Face", "Facenet", "Facenet512", "OpenFace", "DeepFace", "DeepID", "ArcFace", "Dlib"]

verification = DeepFace.verify(img1_path = "img.png", img2_path = "img_1.png",model_name=models[3])
print(verification)

El funcionamiento es el siguiente:
inserte la descripción de la imagen aquí
ver claro:
el primero, la ubicación de la descarga:

To: C:\Users\hp\.deepface\weights\openface_weights.h5

El segundo es el resultado:

{
    
    'verified': False, 'distance': 0.17080708434087122, 
'threshold': 0.1, 'model': 'OpenFace', 
'detector_backend': 'opencv', 
'similarity_metric': 'cosine'}

búsqueda de cara

from deepface import DeepFace

img_path1 = r'img.png'

img_path2 = r'img_1.png'

img_path1 = img_path1.replace('\\', '/')

img_path2 = img_path2.replace('\\', '/')

models=["VGG-Face", "Facenet", "Facenet512", "OpenFace", "DeepFace", "DeepID", "ArcFace", "Dlib"]

db_path = r'data'

db_path = db_path.replace('\\', '/')

recognition = DeepFace.find(img_path = img_path2, db_path = db_path, model_name = models[0], enforce_detection=False)

print(recognition)

La salida es la siguiente:

ind function lasts  4.07146143913269  seconds
         identity  VGG-Face_cosine
0  data/img_2.png         0.160032
1    data/img.png         0.265129

Identidad significa identidad, VGG-Face_cosine significa similitud, obtendrá el gráfico de similitud más alto.

¿Por qué establecer enforce_detection=False? Si no se establece, se informará un error y no se detectará la cara, porque Deepface obtendrá todas las fotos en la carpeta de fotos especificada por db_path, y almacenará las características de cada foto en la misma ruta (la extensión se llama pkl), y luego utilícelo para comparar la próxima vez. No es necesario volver a ejecutar el modelo para obtener características. Sin embargo, si hay fotos con caras que no se pueden detectar, si enforce_detection=False, se producirá un error y se detendrá la ejecución, para recordarnos que hay fotos con caras que no se pueden detectar en la carpeta, vuelva a revisar. Después de confirmar que las fotos en la carpeta son correctas, podemos configurar enforce_detection=False para decirle a Deepface que no se necesita ningún recordatorio para mejorar la velocidad de la ejecución posterior.

Reconocimiento de atributos faciales (edad, etiqueta, género, raza)

DeepFace viene con un poderoso módulo de análisis de atributos faciales para predicción de edad, género, emoción y raza/etnicidad. Mientras que el módulo de reconocimiento facial de DeepFace encapsula los modelos de última generación existentes, su análisis de atributos faciales tiene su propio modelo. Actualmente, el error absoluto medio de los modelos de predicción de edad es de +/- 4,6 años; los modelos de predicción de género tienen una precisión del 97 %.

Deepface también proporciona análisis de atributos faciales que incluyen , , edad (incluyendo ira, miedo, neutral, triste, asqueado, feliz y sorprendido) y (incluyendo predicciones asiáticas, caucásicas, del Medio Oriente, indias, latinas y negras).

Probemos la edad de los siguientes dioses masculinos:

from deepface import DeepFace

analysis = DeepFace.analyze(img_path="img.png", actions=["age", "gender", "emotion", "race"])
print(analysis)

El resultado es:
inserte la descripción de la imagen aquí
Descripción: Edad, 21; Género, Masculino; Expresión, Natural; Raza: Asiática (oficialmente solo puede proporcionar personas de qué continente)

Complemento: si encuentra un error OSError: no se puede abrir el archivo (archivo truncado: eof = 5865472, sblock->base_addr = 0, store_eof = 588, puede ir a la ruta de pesos para eliminar el original y volver a ejecutar el código para descargar el archivo,
como yo Error:
inserte la descripción de la imagen aquí

Simplemente vuelva a ejecutar el código para descargar, a veces encontrará fallas en la descarga: debido a que la parte que se conecta no responde correctamente después de un período de tiempo o el host conectado no responde, el intento de conexión falla, puede intentarlo varias veces (incluso una docena de veces), después de todo github Algunos estudiantes no son estables en la comprensión. Si no funciona o informa un error, descárguelo manualmente, uso el comando wegt para descargar, por ejemplo:
inserte la descripción de la imagen aquí
use el siguiente comando para descargar al local (o haga clic directamente en el enlace para descargar):

wget -c  https://github.com/serengil/deepface_models/releases/download/v1.0/gender_model_weights.h5

Después de descargarlo, colóquelo en la carpeta de pesos de la siguiente manera:
inserte la descripción de la imagen aquí

identificación de transmisión de video

from deepface import DeepFace
a=DeepFace.stream()
print(a)

Intente ejecutarlo usted mismo.

Referirse a

https://pypi.org/project/deepface/
https://www.cs.toronto.edu/~ranzato/publications/taigman_cvpr14.pdf

Supongo que te gusta

Origin blog.csdn.net/weixin_46211269/article/details/124095978
Recomendado
Clasificación