Essayez rapidement l'API Face de Microsoft en Python

Au début

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. ..

Rendons l'API disponible

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.

Choose Face API.jpg

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.

Face API.jpg

Écrivons le code

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.

résultat

Nozomi.jpg

Ryan.jpg

Même plusieurs personnes peuvent le faire. (Bien que l'exactitude du sexe et de l'âge soit douteuse) Students.jpg

Résumé

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

Essayez rapidement l'API Face de Microsoft en Python
Implémentez rapidement l'API REST en Python
Essayez d'utiliser l'API Wunderlist en Python
Essayez d'utiliser l'API Kraken avec Python
API Evernote en Python
Essayez gRPC en Python
API C en Python 3
Essayez 9 tranches en Python
Essayez d'utiliser l'API BitFlyer Ligntning en Python
Essayez d'utiliser l'API ChatWork et l'API Qiita en Python
Essayez d'utiliser l'API DropBox Core avec Python
Hit API de Mastodon en Python
Essayez LINE Notify avec Python
Implémentons Yuma dans Python 3
Résumé de la détection de visage en Python
API Blender Python dans Houdini (Python 3)
Essayez la reconnaissance faciale avec Python
Essayez d'utiliser l'API Twitter rapidement et facilement avec Python
Obtenir l'API arXiv en Python
Frappez l'API Sesami en Python
Essayez d'utiliser l'API de Pleasant (python / FastAPI)
Essayez d'utiliser LevelDB avec Python (plyvel)
Essayons Fizz Buzz avec Python
Essayez de calculer Trace en Python
Essayez l'accès au registre PLC en Python
Créez Gmail en Python sans utiliser l'API
Accédez à l'API Web en Python
Essayez la reconnaissance faciale avec python + OpenCV
Essayez d'utiliser l'API d'action de Python argparse
Accéder à l'API Twitter avec Python
Essayez d'utiliser LeapMotion avec Python
Essayez Python
Fonctionnement de la souris à l'aide de l'API Windows en Python
Essayez de vous connecter à qiita avec Python
Essayez de travailler avec des données binaires en Python
Essayez d'envoyer un paquet SYN en Python
Essayez de dessiner une animation simple en Python
Essayez l'API de visage de Microsoft Cognitive Services
Obtenez les données de l'API Google Fit en Python
Obtenez des données Youtube en Python à l'aide de l'API Youtube Data
[Python] Créez rapidement une API avec Flask
API de reconnaissance faciale sans serveur conçue avec Python
Essayez de fouiller votre journal avec Python
Essayez un tube de programmation fonctionnel en Python
Essayez quelque chose comme Python for-else dans Ruby
Essayez d'accéder à l'API Spotify dans Django.
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Premiers pas pour essayer Google CloudVision en Python
Python 3.3 avec Anaconda
Essayez d'implémenter Oni Mai Tsuji Miserable avec python
Géocodage en python
SendKeys en Python
Calculons en fait le problème statistique avec Python
3.14 π jour, alors essayez de sortir en Python
Recevoir le websocket de l'API kabu station ® en Python
Essayez auto pour évaluer automatiquement Enum dans Python 3.6