3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Microsoft Cognitive Services の Face API を試してみる

Posted at

Microsoft Cognitive Services

お試しできるみたいなので、早速使ってみます。

  • Microsoft Cognitive Services を使う
  • 登録して Face API の subscription key を入手
  • Raspberry Pi で使用するので Python 3.x を使う
  • 写真は事前に撮影したものを使う

開発

プログラム

関数にして、呼び出す形にしてみました。
keyFaceapi は自分で登録した subscription key を設定してください

pyFaceapi.py
# -*- encoding:utf-8 -*-
# ----------------------------------------------------------------------
# ■初期設定
# ----------------------------------------------------------------------

# ライブラリインポート
# ------------------------------
import requests
import urllib
import json

# Bing Face API 用設定
# ------------------------------
imgFaceapi = 'faceimage.jpg'
urlFaceapi = 'https://api.projectoxford.ai/face/v1.0/detect'
keyFaceapi = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
retFaceapi = 'age,gender,headPose,smile,facialHair,glasses,emotion,hair,makeup,occlusion,accessories,blur,exposure,noise'


# ----------------------------------------------------------------------
# ■画像分析(Bing Face API) for python 3.x
# ----------------------------------------------------------------------
def useFaceapi(url, key, ret, image):

    # サーバ問合せ
    # ------------------------------
    headers = {
        'Content-Type': 'application/octet-stream',
        'Ocp-Apim-Subscription-Key': key,
        'cache-control': 'no-cache',
    }
    params = {
        'returnFaceId': 'true',
        'returnFaceLandmarks': 'false',
        'returnFaceAttributes': ret,
    }
    data = open(image, 'rb').read()

    try:
        jsnResponse = requests.post(url ,headers=headers, params=params, data=data)
        if(jsnResponse.status_code != 200):
            jsnResponse = []
        else:
            jsnResponse = jsnResponse.json()
    except requests.exceptions.RequestException as e:
        jsnResponse = []

    # 戻り値
    # ------------------------------
    return jsnResponse


# ----------------------------------------------------------------------
# ■分析実行
# ----------------------------------------------------------------------

# Bing Face API を使う
# ------------------------------
resFaceapi = useFaceapi(urlFaceapi, keyFaceapi, retFaceapi, imgFaceapi)
print(resFaceapi)

実行

実行ファイルと同じフォルダに自分の顔写真「faceimage.jpg」を置いて実行する

python3 pyFaceapi.py

実行結果

以下、分析結果

resFaceapi
[
    {
        'faceAttributes': {
            'blur': {
                'value': 0.29,
                'blurLevel':
                'medium'
            },
            'smile': 0.0,
            'headPose': {
                'roll': -2.5,
                'pitch': 0.0,
                'yaw': -15.3
            },
            'hair': {
                'invisible': False,
                'hairColor': [
                    {
                        'color': 'black',
                        'confidence': 1.0
                    },
                    {
                        'color': 'brown',
                        'confidence': 0.98
                    },
                    {
                        'color': 'other',
                        'confidence': 0.17
                    },
                    {
                        'color': 'red',
                        'confidence': 0.12
                    },
                    {
                        'color': 'gray',
                        'confidence': 0.05
                    },
                    {
                        'color': 'blond',
                        'confidence': 0.03
                    }
                ],
                'bald': 0.01
            },
            'age': 31.7,
            'emotion': {
                'anger': 0.002,
                'surprise': 0.0,
                'contempt': 0.049,
                'neutral': 0.853,
                'disgust': 0.002,
                'happiness': 0.0,
                'sadness': 0.094,
                'fear': 0.0
            },
            'gender': 'male',
            'occlusion': {
                'eyeOccluded': False,
                'foreheadOccluded': False,
                'mouthOccluded': False
            },
            'noise': {
                'value': 0.11,
                'noiseLevel': 'low'
            },
            'facialHair': {
                'beard': 0.0,
                'moustache': 0.0,
                'sideburns': 0.1
            },
            'exposure': {
                'value': 0.43,
                'exposureLevel': 'goodExposure'
            },
            'makeup': {
                'lipMakeup': True,
                'eyeMakeup': False
            },
            'glasses': 'NoGlasses',
            'accessories': []
        },
        'faceId': 'dafdf8f1-c910-45ee-aef3-2247b446ea1d',
        'faceRectangle': {
            'height': 98,
            'width': 98,
            'top': 248,
            'left': 380
        }
    }
]

結果確認

結果確認します。

  • 性別(gender)は男性(male)正解!
  • めがね(glasses)なし(NoGlasses)正しく判定されてる!
  • 年齢(age)が31.7才と判定されていました。私の年齢は30後半。。。
  • 口紅(lipMakeup)あり(True)って…してません!!

他の方にも協力してもらい試してみましたが、年齢は全体的に若く判定される模様
2人以上写っている写真なら人数分の分析ができる

次回予告(python)

Raspberry Pi 楽しいです!大人の電子工作って気がするね(笑
今回紹介した Face API 以外に色んな API(Microsoft 以外にも Google、IBMなど)が公開されているので、試してみたいと思います!

3
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?