Bonjour. Ceci est un post après une longue période. Récemment, Google et Microsoft ont fourni de très bonnes API pour l'apprentissage automatique. Jusqu'à présent, ce que j'avais créé en utilisant OpenCV et le framework de réseau Neural peut être facilement utilisé en appelant simplement l'API, donc je pense que le seuil a été considérablement abaissé pour ceux qui veulent l'utiliser pendant un certain temps. .. Donc, cette fois, j'aimerais essayer l'API Face de Microsoft. Il semble que ce soit la reconnaissance faciale maintenant, mais c'est une API assez excellente qui peut rechercher et regrouper des visages similaires ainsi que la position des yeux et du nez, ainsi que l'âge et le sexe. Quel âge ai-je?, qui était populaire il y a quelque temps, devrait utiliser la même API. Probablement, c'est mieux que d'écrire l'algorithme par vous-même en utilisant OpenCV, etc. ..
Tout d'abord, allons sur la page Microsoft et récupérons l'API Face. https://www.microsoft.com/cognitive-services/en-us/face-api Appuyez sur Acheter sur Azure en bas de la page pour vous inscrire à un compte Azure. Après l'enregistrement, sélectionnez l'API que vous souhaitez utiliser. Ici, sélectionnez "30 000 transactions par mois" gratuites.
Si vous obtenez la clé en toute sécurité, elle sera affichée sur votre page comme suit. Appuyez sur le bouton "Afficher" pour afficher la clé. Vous aurez besoin de cette clé plus tard, alors copiez-la et enregistrez-la.
Cette fois, c'est un essai, je vais donc écrire le code rapidement en Python.
import httplib, urllib, base64
import cv2
import numpy as np
import json
import sys
headers = {
# Request headers
'Content-Type': 'application/octet-stream',
'Ocp-Apim-Subscription-Key': '[Input your key]',
}
params = urllib.urlencode({
# Request parameters
'analyzesFaceLandmarks': 'false',
'analyzesAge': 'true',
'analyzesGender': 'true',
'analyzesHeadPose': 'false',
})
def display_expression(data,img):
font = cv2.FONT_HERSHEY_PLAIN
font_size = 2
data = json.loads(data)
for face in data:
f_rec = face['faceRectangle']
width = f_rec['width']
height = f_rec['height']
left = f_rec['left']
top = f_rec['top']
cv2.rectangle(img,(left,top),(left+width,top+height),(0,200,0),2)
f_attr = face['attributes']
gender = f_attr['gender']
age = f_attr['age']
cv2.putText(img, gender, (left, 30+top+height), font, font_size, (0, 200, 0), 2)
cv2.putText(img, str(age), (left, 60+top+height), font, font_size, (0, 200, 0), 2)
if __name__ == '__main__':
if len(sys.argv) < 1:
quit()
file_path = sys.argv[0]
conn = httplib.HTTPSConnection('api.projectoxford.ai')
conn.request("POST", "/face/v0/detections?%s" % params, open(file_path, 'rb'), headers)
response = conn.getresponse()
data = response.read()
print(data)
img = cv2.imread(file_path)
display_expression(data, img)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
conn.close()
** Explication du code ** Entrez la clé que vous avez obtenue précédemment dans [Entrez votre clé].
'Ocp-Apim-Subscription-Key': '[Input your key]',
Vous pouvez modifier les informations à acquérir en désactivant / activant les paramètres envoyés à la requête.
# Request parameters
'analyzesFaceLandmarks': 'false',
'analyzesAge': 'true',
'analyzesGender': 'true',
'analyzesHeadPose': 'false',
La partie d'affichage utilise OpenCV.
Même plusieurs personnes peuvent le faire. (Bien que l'exactitude du sexe et de l'âge soit douteuse)
Nous avons pu détecter assez précisément la position du visage, mais il semble qu'il y ait encore des soupçons sur le sexe et l'âge. (Surtout pour les visages asiatiques, j'ai l'impression que la précision est médiocre) Il existe de nombreuses autres API pour l'audio et la vidéo dans l'API Microsoft, je voudrais donc en utiliser d'autres également. Cependant, si vous voulez vraiment l'utiliser, vous devez passer à un forfait payant. ..
À l'avenir, j'ai senti que la vérification initiale et la prise en compte pouvaient être beaucoup plus faciles en appelant les API de Google et de Microsoft pour des projets liés à l'apprentissage automatique et au traitement d'images. Nous attendons également avec impatience l'émergence de services Web et d'IoT intéressants qui les utilisent. J'ai récemment reçu un Raspberry Pi3 et j'aimerais faire un IoT intéressant en attendant!
Recommended Posts