Determine el sexo y la edad de la foto.





En la práctica de la auditoría interna, hay tareas en las que es necesario realizar una verificación para identificar la entrada incorrecta de los datos del cliente. Uno de estos problemas puede ser la discrepancia entre los datos ingresados ​​y la foto del cliente en el momento del registro del producto.



Por ejemplo, está disponible la siguiente información: sexo, edad y enlace a la foto. Para verificar el cumplimiento, usaremos la biblioteca py-agender del lenguaje Python.



La biblioteca funciona en dos etapas. Primero, opencv determina la posición de la cara en la foto. En el segundo, la red neuronal de la arquitectura EfficientNetB3, que se entrena en el UTKFace DataSet, determina el género y la edad del propietario de la cara en la foto.



Primero, importemos las bibliotecas necesarias:



import cv2
from pyagender import PyAgender


Creemos un objeto detector de género y edad:



agender = PyAgender()


Sube una foto usando opencv:



img = cv2.imread("habensky.jpeg")


A continuación, definimos las características del rostro utilizando el método detect_genders_ages del objeto agender:



face_info = agender.detect_genders_ages(img)


donde la variable face_info contiene la siguiente información:



[{'left': 0,
  'top': 5,
  'right': 299,
  'bottom': 299,
  'width': 299,
  'height': 294,
  'gender': 0.0075379927,
  'age': 41.585840644804094}]


Aquí los parámetros ('izquierda', 'arriba', 'derecha', 'abajo', 'ancho', 'alto') caracterizan la posición de la cara en la foto. El parámetro de género caracteriza la pertenencia a un género en particular, donde 0 corresponde a un hombre, 1 a una mujer. Aquellos. después del procesamiento de la imagen, en un umbral de 0,5, dividimos la muestra procesada en hombres y mujeres.







El algoritmo determinó que esta imagen representa a un hombre (el valor de género es muy cercano a cero: 0.0075379927), y también que en esta foto tiene 41 años y medio (41.5858), no sé cuántos años tiene Konstantin Khabensky en esta foto, pero creo que el algoritmo está cerca a la verdad.



Un buen ejemplo, una imagen nítida y un resultado bastante impresionante. Sin embargo, cuando comienza a aplicar el algoritmo a datos reales, las cosas no son tan optimistas como nos gustaría. Y el punto aquí no está tanto en el algoritmo, sino en la calidad de los datos iniciales.



En mi caso, fue un conjunto de 1542 imágenes con una resolución de 300x300. Para 64 imágenes, el algoritmo no pudo determinar las características del rostro. El motivo principal es la poca iluminación a la hora de fotografiar (los rostros son casi invisibles). Para 1478 imágenes, la mediana del error de edad fue de 4,96 años. La siguiente figura muestra la distribución del error:







Para el 8,5% de las imágenes (125 de 1478), el algoritmo cometió un error al determinar el sexo de una persona. De estos, en 122 casos, el algoritmo confundió a una mujer con un hombre. Nuevamente, no culpe al algoritmo en todos los casos. En la mayoría de los ejemplos erróneos, hay muchas caras con gafas que pueden ocultar algunos rasgos faciales. La siguiente figura muestra la distribución por edades del UTKFace DataSet:







Puede ver que la mayoría del conjunto de datos contiene imágenes de personas de entre 20 y 40 años. A pesar de esto, el algoritmo cometió un error con mayor frecuencia precisamente para el intervalo especificado, es decir, lo más probable es que los errores estén relacionados con la peculiaridad del conjunto de datos para el que se aplicó el algoritmo. La siguiente figura muestra la distribución de la edad de las personas en las que el algoritmo estaba equivocado:







Py-Agender es una herramienta interesante que puede ayudar a automatizar una serie de tareas rutinarias, o al menos reducir el tamaño de la muestra para el análisis manual. El artículo proporciona una estimación para un conjunto de datos específico, quizás en su caso, el algoritmo funcionará de manera más eficiente.



All Articles