はじめに
Microsoft Cognitive Services の顔認識サービスである、Face APIをPythonで試してみました。
- azure を試してみたい
- 顔認識サービスを使ってみたい
- Face API の使用感を知りたい方向けのチュートリアルです
- python が書けなくてもコピペで気軽に試せるような内容です
Face API の概要
- Microsoft Cognitive Services の API
- 顔の認識に特化したAPI
- 顔の検出、比較や類似の顔の検索、グルーピングなど様々な機能が利用できます。
- 顔の情報を蓄積して、顔認証に使用できます
例えばロボットが顔を見てその人の名前を答えるなど、サービスのパーソナライズが可能になります。
チュートリアル
APIキーの取得
Face APIを利用するには、まずAzureポータルにてAPIキーを取得する必要があります。
Azureポータルにサインインしたら、サービス一覧から「Cognitive Services accounts」を選択します。
リスト左上の「+追加」をクリックすると「Create」のペインが表示さます。
下記の項目を入力、選択して「作成」をクリックします。
項目 | 入力 |
---|---|
Account name | 任意の名称 |
API type | 「Face API (preview)」を選択 |
場所 | 任意のリージョンを選択(現在は「米国西部」のみ) |
Pricing tier | 「F0 Free」または「S0 Standard」を選択 |
Resource group | 「新規作成」または「既存のものを使用」を選択し、リソースグループを入力 |
Legal terms | 「I Agree」 |
しばらくするとFace APIの項目が追加されます。
追加された項目をクリックし、表示されるメニューから「Keys」をクリックすると
APIキーが表示されるので、「KEY1」、「KEY2」のいずれかをコピーして控えておきます。
Face API を使う
APIキーが取得できたら、実際に Python を使って Face API の顔検出機能を利用してみます。
今回は簡単に、Face API のリファレンスの Python 2.7サンプルを使用して、Azure Storage上にある画像ファイルの顔検出を試してみます。
下記コードの’Ocp-Apim-Subscription-Key’に取得したAPIキー、変数「image_url」に対象の画像のURLを入力します。
・Python 2.7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
import httplib, urllib, base64 import json # Request header headers = { # Request headers 'Content-Type': 'application/json', 'Ocp-Apim-Subscription-Key': '***********{APIキー}', } params = urllib.urlencode({ # Request parameters 'returnFaceId': 'true', 'returnFaceLandmarks': 'true', 'returnFaceAttributes': 'age,gender,smile,facialHair,headPose,glasses', }) image_url = '{画像のURL}' body = { # Request body 'url': image_url } try: conn = httplib.HTTPSConnection('api.projectoxford.ai') conn.request("POST", "/face/v1.0/detect?%s" % params, json.dumps(body), headers) response = conn.getresponse() data = json.loads(response.read()) print(json.dumps(data, indent=4)) conn.close() except Exception as e: print("[Errno {0}] {1}".format(e.errno, e.strerror)) |
コードの「Request parameters」ではレスポンスの内容を設定できます。今回はすべての情報を取得するよう設定していますが、必要な情報だけに絞ることでAPIのレスポンスを速くすることもできます。
設定項目 | 内容 |
---|---|
‘returnFaceId’ | 24時間有効な顔のID |
‘returnFaceLandmarks’ | 顔の特徴点情報 |
‘returnFaceAttributes’ | age (年齢)、gender (性別)、headPose (頭の角度)、smile (笑顔)、facialHair (ヒゲ、もみあげの有無)、glasses (メガネの有無)の取得 |
上記コードを実行するとレスポンスがJSON形式で出力されます。
今回は以下の写真から顔検出を行いましたが、
faceLandmarksの情報を画像に当てはめてみると、確かに顔の特徴を捉えて検出できていることが分かりました。
おわりに
想像以上に細かい検知ができることがわかりました。
顔認識させる機能は、アプリケーションの幅広いジャンルで使われているので
このサービスをシステムに取り入れたら簡単に活用できるようになりそうですね!