初めはみんな初心者

何か人の役に立つブログになればいいです。特にこれから挑戦する初心者の方にやさしいブログにしたいと思います。

スポンサーリンク

FaceAPIを試してみた【Python】

FaceAPIとは

FaceAPIとは、Microsoft Azureで使用することができる顔検出・顔認識を行うことができるAPIとなります。

azure.microsoft.com

 

 

 

準備

今回、FaceAPIのページにあるドキュメントからPythonのコードを使ってみます。

そのために下記のものを準備しました。

  • Python2.7
  • Anaconda
  • Atom

 

ここではそれぞれのダウンロード方法など説明しませんので、私が説明するよりも分かりやすく書いてあるサイトを載せておきます。

 

Python

わかりやすい!Pythonインストール方法まとめ(Windows,Mac,Linux対応) | 侍エンジニア塾ブログ | プログラミング入門者向け学習情報サイト

 

Anaconda

Anaconda を Windows にインストールする手順 | WEB ARCH LABO

 

Atom

【すぐわかる!】Atomエディタのインストールと日本語化、便利な使い方

 

また、AtomにHydrogenパッケージを入れておくと便利なのでその方法も

Atom と Hydrogen で Jupyter が Atom で動くよ!(インストール、準備、使い方まで) | ごみばこいん Blog

 

以上のことを準備してFaceAPIを試してみましょう。

 

 

 

FaceAPIを試す

まず、Microsoft AzureのFaceAPIのページ(

https://azure.microsoft.com/ja-jp/try/cognitive-services/?api=face-api

)に行きます。そして、FaceAPIのAPIキーの取得を押します。

f:id:kyuji48000:20180422214044p:plain

 

 

そして、パスワード等々入力することでサブスクリプションキーが表示されるのでそのキーを必ずコピーしておいてください、後で使います。

f:id:kyuji48000:20180422214239p:plain

 

そのままクイックスタートガイドを押し、左側にあるPythonを押すと、Pythonのドキュメントが出てくるのでそれに沿ってプログラムを打ち込んでいきます。

f:id:kyuji48000:20180422214543p:plain

 

 

次にAtomを開きドキュメントに載っていた以下のプログラムを打ち込んでいきます。(多少変更点あり)

下記のプログラムが見づらかったらことらを見てくださいFaceAPI Pythonコード - 初めはみんな初心者

 

 

 

subscription_key = "自分のサブスクリプションキー"
assert subscription_key
face_api_url = 'https://westcentralus.api.cognitive.microsoft.com/face/v1.0/detect'
image_url = '画像のURL'
import requests
from IPython.display import HTML

headers = { 'Ocp-Apim-Subscription-Key': subscription_key }

params = {
'returnFaceId': 'true',
'returnFaceLandmarks': 'false',
'returnFaceAttributes': 'age,gender,headPose,smile,facialHair,glasses,emotion,hair,makeup,occlusion,accessories,blur,exposure,noise',
}

response = requests.post(face_api_url, params=params, headers=headers, json={"url": image_url})
faces = response.json()
HTML("<font size='5'>Detected <font color='blue'>%d</font> faces in the image</font>"%len(faces))

#%matplotlib inline
import matplotlib.pyplot as plt

from PIL import Image
from matplotlib import patches
from io import BytesIO

response = requests.get(image_url) #画像データの取得を行っている模様
image = Image.open(BytesIO(response.content))

plt.figure(figsize=(8,8))
ax = plt.imshow(image, alpha=0.6) #alphaが画像の濃度調整
for face in faces:
fr = face["faceRectangle"]
fa = face["faceAttributes"]
origin = (fr["left"], fr["top"])
p = patches.Rectangle(origin, fr["width"], fr["height"], fill=False, linewidth=2, color='b') #顔枠
ax.axes.add_patch(p)
plt.text(origin[0], origin[1], "%s, %d"%(fa["gender"].capitalize(), fa["age"]), fontsize=20, weight="bold", va="bottom") #性別年齢等文字系
plt.axis("off")

 

 

 

Hydrogenを使って実行するとこんな感じに顔検出を行うことができました。

f:id:kyuji48000:20180423134306p:plain

 

 

FaceAPIのドキュメントのコードでは以上のことができます。

FaceAPIのページでは他の画像URLもあるので画像を変えてやってみてはいかがでしょうか。

 

 

今後は画像検出した画像を取り込めるようにしてみたいと思います。

スポンサーリンク