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など)が公開されているので、試してみたいと思います!