[PYTHON] J'ai essayé d'utiliser l'API de reconnaissance faciale des services cognitifs de Microsoft

J'ai essayé d'utiliser l'API de reconnaissance faciale des services cognitifs de Microsoft

___ Remarque: l'utilisation de l'API a considérablement changé, je suis donc en train de réécrire l'article. ___

Promotion du blog: http://jotarout.hatenablog.com/

Votre visage est-il une fenêtre de votre cœur?

En connaissant l'expression faciale d'une personne, il peut être possible d'estimer les conditions physiologiques et internes de la personne. Reconnaissons les expressions faciales de chacun à l'aide d'un ordinateur.

Utilisez [l'API de reconnaissance faciale de Microsoft](https://www.microsoft.com/cognitive-services/en-us/emotion-api «l'API de reconnaissance faciale de Microsoft»).

Après vous être enregistré sur le site ci-dessus et avoir obtenu la clé API, enregistrez-la dans api_key.txt dans le même répertoire que le code __source. __

C'est le code. Ayez la clé API et votre image préférée dans le même répertoire. Pour le moment, écrivez du code comme tirer une interface utilisateur qui affiche 5 émotions et niveaux à côté de l'expression.

ms_emotion.py


# Calling Emotion APIs is
# restricted to 20 transactions per minute
# and 30,000 transactions per month.
# 20 transactions per 60 seconds
# 1 transaction per 3 seconds

import httplib
import urllib
import base64
import os
import sys
import cv2
import numpy as np
import json
import math

def get_emotion(file_path, headers):
    try:
        conn = httplib.HTTPSConnection('api.projectoxford.ai')
        conn.request("POST", "/emotion/v1.0/recognize?",
                     open(file_path, 'rb'), headers)
        response = conn.getresponse()
        data = response.read()
        conn.close()
        return data
    except Exception as e:
        print("[Errno {0}] {1}".format(e.errno, e.strerror))
        print(e.message)

def display_expression(data,img):
    font = cv2.FONT_HERSHEY_PLAIN
    text = "test cyber"
    font_size = 1
    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']
        f_rec  =  face['scores']
        f_rec = sorted(f_rec.items(), key=lambda x:x[1],reverse = True)
        cv2.rectangle(img,(left,top),(left+width,top+height),(130,130,130),2)
        cv2.rectangle(img,(left+width,top),(left+width+150,top+50),(130,130,130),-1)

        for i in range(0,5):
            val = round(f_rec[i][1],3)
            emo = f_rec[i][0]
            cv2.rectangle(img,(left+width,top+10*i),(left+width+int(val*150),top+10*(i+1)),(180,180,180),-1)
            cv2.putText(img, emo+" "+str(val),(left+width,top+10*(i+1)),font, font_size,(255,255,255),1)

if __name__ == '__main__':
    if len(sys.argv) != 2:
        print 'Usage: # python %s /path/to/image' % sys.argv[0]
        quit()

    with open('api_key.txt', 'r') as f:
        key = f.read().rstrip('\n')
    f.close()
    headers = {
        'Content-Type': 'application/octet-stream',
        'Ocp-Apim-Subscription-Key': key,
    }

    data = get_emotion(sys.argv[1], headers)
    img = cv2.imread(sys.argv[1],-1)

    display_expression(data,img)

    cv2.imshow('image',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

Il peut être exécuté avec python ms_emotion.py your_image.png.

20160517002308.png スクリーンショット 2016-05-25 21.06.06.png スクリーンショット 2016-05-25 21.08.03.png

Screenshot from 2016-08-21 02-58-00.png

Je pense que la précision est assez bonne (je ne peux pas beaucoup avoir un petit visage). Il existe environ 10 types d'expressions faciales, il sera donc amusant de jouer avec elles.

Il semble qu'il puisse également être utilisé pour l'analyse d'images en mouvement! Tant que l'API le permet ...

Recommended Posts

J'ai essayé d'utiliser l'API de reconnaissance faciale des services cognitifs de Microsoft
Reconnaissance faciale à l'aide de l'API de Pepper
J'ai essayé la reconnaissance faciale avec Face ++
J'ai essayé d'utiliser l'API checkio
J'ai essayé d'utiliser l'API de reconnaissance vocale docomo et l'API Google Speech en Java
J'ai essayé d'utiliser l'API de données YOUTUBE V3
J'ai essayé d'utiliser l'API UnityCloudBuild de Python
J'ai essayé d'utiliser l'API BigQuery Storage
J'ai essayé de vérifier l'identification du locuteur par l'API de reconnaissance du locuteur d'Azure Cognitive Services avec Python. # 1
J'ai essayé de vérifier l'identification du locuteur par l'API de reconnaissance du locuteur d'Azure Cognitive Services avec Python. # 2
J'ai essayé d'utiliser l'API à distance avec GAE / J
J'ai essayé d'utiliser l'API Google Cloud Vision
Lorsque j'ai essayé d'utiliser l'API Computer Vision de Microsoft, j'ai reconnu le signe Galapagos "Stop"
J'ai essayé d'utiliser paramétré
J'ai essayé d'utiliser argparse
J'ai essayé d'utiliser la mimesis
J'ai essayé d'utiliser anytree
J'ai essayé d'utiliser aiomysql
J'ai essayé d'utiliser Summpy
J'ai essayé d'utiliser coturn
J'ai essayé d'utiliser Pipenv
J'ai essayé d'utiliser matplotlib
J'ai essayé d'utiliser "Anvil".
J'ai essayé d'utiliser Hubot
J'ai essayé d'utiliser ESPCN
J'ai essayé d'utiliser openpyxl
J'ai essayé d'utiliser Ipython
J'ai essayé d'utiliser PyCaret
J'ai essayé d'utiliser cron
J'ai essayé d'utiliser ngrok
J'ai essayé d'utiliser face_recognition
J'ai essayé d'utiliser Jupyter
J'ai essayé d'utiliser doctest
J'ai essayé d'utiliser du folium
J'ai essayé d'utiliser jinja2
J'ai essayé d'utiliser du folium
J'ai essayé d'utiliser la fenêtre de temps
J'ai essayé APN (notification à distance) à l'aide de l'API REST Parse.com
J'ai essayé d'utiliser l'API de Sakenowa Data Project
J'ai essayé de rechercher des vidéos à l'aide de l'API de données Youtube (débutant)
Détection d'expression à l'aide de Yolov5
[J'ai essayé d'utiliser Pythonista 3] Introduction
Reconnaissance de l'âge à l'aide de l'API de Pepper
J'ai essayé d'utiliser easydict (mémo).
J'ai essayé d'utiliser RandomForest
J'ai essayé la reconnaissance faciale du problème du rire en utilisant Keras.
J'ai essayé d'utiliser BigQuery ML
J'ai essayé d'utiliser Amazon Glacier
J'ai essayé d'utiliser git inspector
[Python] J'ai essayé de collecter des données en utilisant l'API de wikipedia
J'ai essayé d'utiliser magenta / TensorFlow
J'ai essayé la reconnaissance de caractères manuscrits des caractères runiques avec CNN en utilisant Keras
J'ai essayé d'utiliser AWS Chalice
[Pour les débutants] J'ai essayé d'utiliser l'API Tensorflow Object Detection
J'ai essayé d'utiliser l'émojinateur Slack
J'ai essayé de créer une expression régulière de "montant" en utilisant Python
J'ai essayé de créer une expression régulière de "temps" en utilisant Python