Déterminez le sexe et l'âge à partir de la photo





Dans la pratique de l'audit interne, il existe des tâches dans lesquelles il est nécessaire d'effectuer un contrôle pour identifier une saisie incorrecte des données client. L'un de ces problèmes peut être le décalage entre les données saisies et la photo du client au moment de l'enregistrement du produit.



Par exemple, les informations suivantes sont disponibles: sexe, âge et lien vers la photo. Pour vérifier la conformité, nous utiliserons la bibliothèque py-agender du langage Python.



La bibliothèque fonctionne en deux étapes. Tout d'abord, opencv détermine la position du visage sur la photo. Sur le second, le réseau neuronal de l'architecture EfficientNetB3, qui est formé sur le DataSet UTKFace, détermine le sexe et l'âge du propriétaire du visage sur la photo.



Tout d'abord, importons les bibliothèques requises:



import cv2
from pyagender import PyAgender


Créons un objet détecteur de sexe et d'âge:



agender = PyAgender()


Téléchargez une photo en utilisant opencv:



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


Ensuite, nous définissons les caractéristiques du visage à l'aide de la méthode detect_genders_ages de l'objet agender:



face_info = agender.detect_genders_ages(img)


où la variable face_info contient les informations suivantes:



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


Ici, les paramètres («gauche», «haut», «droite», «bas», «largeur», «hauteur») caractérisent la position du visage sur la photo. Le paramètre de genre caractérise l'appartenance à un sexe particulier, où 0 correspond à un homme, 1 - à une femme. Ceux. après traitement d'image, à un seuil de 0,5, nous divisons l'échantillon traité en hommes et en femmes.







L'algorithme a déterminé que cette image représente un homme (la valeur de genre est très proche de zéro: 0,0075379927), et aussi que sur cette photo, il a 41 ans et demi (41,5858), je ne sais pas quel âge a Konstantin Khabensky sur cette photo, mais je pense que l'algorithme est proche à la vérité.



Un bon exemple, une image nette et un résultat assez impressionnant. Cependant, lorsque vous commencez à appliquer l'algorithme à des données réelles, les choses ne sont pas aussi roses que nous le souhaiterions. Et le point ici n'est pas tant dans l'algorithme, mais dans la qualité des données initiales.



Dans mon cas, il s'agissait d'un ensemble de 1542 images avec une résolution de 300x300. Pour 64 images, l'algorithme n'a pas pu déterminer les caractéristiques du visage. La raison principale est un mauvais éclairage au moment de la photographie (les visages sont presque invisibles). Pour 1478 images, l'erreur d'âge médiane était de 4,96 ans. La figure ci-dessous montre la distribution de l'erreur:







Pour 8,5% des images (125 sur 1478), l'algorithme a commis une erreur en déterminant le sexe d'une personne. Parmi ceux-ci, dans 122 cas, l'algorithme a pris une femme pour un homme. Encore une fois, ne blâmez pas l'algorithme dans tous les cas. Dans la plupart des exemples erronés, de nombreux visages portant des lunettes peuvent masquer certains traits du visage. La figure ci-dessous montre la répartition par âge







de l'ensemble de données UTKFace: Vous pouvez voir que la plupart des ensembles de données contiennent des images de personnes âgées de 20 à 40 ans. Malgré cela, l'algorithme a le plus souvent commis une erreur précisément pour l'intervalle spécifié, c'est-à-dire que les erreurs sont très probablement associées à la particularité de l'ensemble de données pour lequel l'algorithme a été appliqué. La figure ci-dessous montre la distribution de l'âge des personnes sur lesquelles l'algorithme a commis une erreur:







Py-Agender est un outil intéressant qui peut aider à automatiser un certain nombre de tâches de routine, ou au moins réduire la taille de l'échantillon pour une analyse manuelle. L'article présente une estimation pour un ensemble de données spécifique, peut-être que dans votre cas, l'algorithme fonctionnera plus efficacement.



All Articles