Détection de l’âge et du sexe avec Python – Code source

Détection de l'âge et du sexe avec la Machine Learning en utilisant le langage de programmation Python.

Dans cet article, je vais vous expliquer la tâche de détection de l’âge et du sexe avec l’apprentissage automatique en utilisant le langage de programmation Python. La détection de l’âge et du sexe est la tâche de la vision par ordinateur, donc j’utiliserai la bibliothèque OpenCV de Python.

Avant de commencer la tâche de détection de l’âge et du sexe avec Python, je vais d’abord vous expliquer ce que signifie le concept et comment traiter le problème de la détection de l’âge et du sexe. Comprendre le concept est important pour qu’à l’avenir vous puissiez facilement effectuer la tâche de détection de l’âge et du sexe avec non seulement Python mais avec n’importe quel langage de programmation.

Introduction à la détection de l’âge et du sexe

Cependant, la tâche de détection de l’âge et du sexe est un problème intrinsèquement difficile, plus que de nombreuses autres tâches de vision par ordinateur. La principale raison de cet écart de difficulté réside dans les données nécessaires pour former ces types de systèmes.

Alors que les tâches générales de détection d’objets peuvent souvent avoir accès à des centaines de milliers, voire des millions d’images pour la formation, les ensembles de données avec des étiquettes d’âge et/ou de sexe sont considérablement plus petits, généralement des milliers ou, au mieux, des dizaines de milliers.

La raison en est que pour avoir des balises pour de telles images, nous devons accéder aux informations personnelles des sujets dans les images. À savoir, nous aurions besoin de leur date de naissance et de leur sexe, et en particulier la date de naissance est une information rarement publiée.

À lire aussi  Projet de système de gestion d'hôtels en C++

À savoir, nous aurions besoin de leur date de naissance et de leur sexe, et en particulier la date de naissance est une information rarement publiée. Par conséquent, nous devons nous contenter de la nature de ce problème que nous abordons et adapter les architectures de réseau et les approches algorithmiques pour faire face à ces limitations.

Détection de l’âge et du sexe avec Python

Les domaines de la classification par âge et par sexe sont étudiés depuis des décennies. Diverses approches ont été adoptées au fil des ans pour résoudre ce problème, avec plus ou moins de succès. Commençons maintenant par la tâche de détection de l’âge et du sexe à l’aide du langage de programmation Python.

Je présenterai le problème de la détection du sexe comme un problème de classification et le problème de la détection de l’âge comme un problème de régression. Cependant, il est difficile d’estimer l’âge avec précision à l’aide de la régression. Même les humains ne peuvent pas prédire avec précision un âge en regardant une personne. Cependant, nous savons s’ils sont dans la trentaine ou la quarantaine. C’est aussi ce que je vais suivre en utilisant Python.

Commençons maintenant avec la tâche de détection de l’âge et du sexe à l’aide du langage de programmation Python. Je vais d’abord commencer par écrire le code de détection des visages car sans détection des visages, nous ne pourrons pas aller plus loin dans la tâche de prédiction de l’âge et du sexe.

Vous pouvez télécharger les modèles pré-formés OpenCV nécessaires dont vous aurez besoin dans la tâche de détection de l’âge et du sexe à partir d’ici. Maintenant, après avoir importé le module OpenCV dans votre fichier python, vous pouvez commencer avec le code ci-dessous.

Code Python pour la détection de visage

def getFaceBox(net, frame, conf_threshold=0.7):
frameOpencvDnn = frame.copy()
frameHeight = frameOpencvDnn.shape[0]
frameWidth = frameOpencvDnn.shape[1]
blob = cv.dnn.blobFromImage(frameOpencvDnn, 1.0, (300, 300), [104, 117, 123], True, False)

net.setInput(blob)
detections = net.forward()
bboxes = []
for i in range(detections.shape[2]):
confidence = detections[0, 0, i, 2]
if confidence > conf_threshold:
x1 = int(detections[0, 0, i, 3] * frameWidth)
y1 = int(detections[0, 0, i, 4] * frameHeight)
x2 = int(detections[0, 0, i, 5] * frameWidth)
y2 = int(detections[0, 0, i, 6] * frameHeight)
bboxes.append([x1, y1, x2, y2])
cv.rectangle(frameOpencvDnn, (x1, y1), (x2, y2), (0, 255, 0), int(round(frameHeight/150)), 8)
return frameOpencvDnn, bboxes

Maintenant, la prochaine étape consiste à prédire le sexe des humains dans l’image. Ici, je vais charger le réseau de genre dans la mémoire et transmettre le visage détecté sur le réseau pour la tâche de détection de genre.

À lire aussi  Projet de système d'annuaire téléphonique en C++

Code Python pour la détection du genre

genderProto = "gender_deploy.prototxt"
genderModel = "gender_net.caffemodel"
ageNet = cv.dnn.readNet(ageModel, ageProto)
genderList = ['Male', 'Female']
blob = cv.dnn.blobFromImage(face, 1, (227, 227), MODEL_MEAN_VALUES, swapRB=False)
genderNet.setInput(blob)
genderPreds = genderNet.forward()
gender = genderList[genderPreds[0].argmax()]
print("Gender Output : {}".format(genderPreds))
print("Gender : {}".format(gender))

Maintenant, la tâche suivante consiste à prédire l’âge de l’humain dans l’image. Ici, je vais charger le aging network et utiliser la passe avant pour obtenir la sortie. Étant donné que l’architecture du réseau est similaire à celle du Gender Network, nous pouvons tirer le meilleur parti de toutes les sorties pour obtenir le groupe d’âge prévu pour la tâche afin de détecter l’âge.

Code Python pour la détection de l’âge

ageProto = "age_deploy.prototxt"
ageModel = "age_net.caffemodel"
ageNet = cv.dnn.readNet(ageModel, ageProto)
ageList = ['(0 - 2)', '(4 - 6)', '(8 - 12)', '(15 - 20)', '(25 - 32)', '(38 - 43)', '(48 - 53)', '(60 - 100)']
ageNet.setInput(blob)
agePreds = ageNet.forward()
age = ageList[agePreds[0].argmax()]
print("Gender Output : {}".format(agePreds))
print("Gender : {}".format(age))

Le dernier code que nous devons écrire est d’afficher la sortie :

label = "{}, {}".format(gender, age)
cv.putText(frameFace, label, (bbox[0], bbox[1]-20), cv.FONT_HERSHEY_SIMPLEX, 0.8, (255, 0, 0), 3, cv.LINE_AA)
cv.imshow("Age Gender Demo", frameFace)

code source python - détection age et sexe

Ainsi, comme vous pouvez le voir sur la sortie, nous sommes en mesure de prédire à la fois le sexe et l’âge avec un haut niveau de précision. J’espère que vous avez aimé cet article sur la classification par âge et par sexe avec le langage de programmation Python. N’hésitez pas à poser vos précieuses questions dans la section des commentaires ci-dessous.


Articles similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Bouton retour en haut de la page