初学者でも画像解析が行える Face(Azure AI) を使って年齢を当てよう!!Microsoft 認定資格 AI-900 を取得したい方必見!
本記事では、Azure Cognitive Services の Face で何ができるのか、簡単な実装を交えてご紹介します。
次のような方をターゲットに厳密性よりわかりやすさを重視して書いています。
- Azure Cognitive Services を触ってみたい方
- AI に触れてみたい方
- AI-900 の資格取得を考えている方
上記に該当されるような方々を対象としております。
また見ていただいた方が Microsoft AI-900 の資格試験に合格できるよう、今後シリーズ化して他の Cognitive Services についてもまとめていきます。
AI-900 について
AI-900 とは、下記の3つが主に問われる Microsoft の認定資格です。
- Microsoft の AI に関する戦略、理念
- 機械学習に関する基礎知識
- Azure の機械学習サービス
詳細は公式ページで確認することができます。
https://docs.microsoft.com/ja-jp/learn/certifications/exams/ai-900
この資格を取得することで Azure での機械学習に関する基礎知識を擁する人材であることを証明できます。
今後、 AI 関係の仕事に就きたい方には有利な資格と言えるでしょう。
テスト難易度としてはあまり高くありませんが、日本語での情報が少ないためテスト対策が少し難しいです。
本記事では Azure の機械学習サービスの中の Cognitive Services についてみていきます。
Azure Cognitive Services(Azure AI) と Face
Azure Cognitive Services とは、機械学習の専門知識がなくても「見る、聞く、話す、検索する、理解する」
といった機能を持った AI モデルを簡単に使用することのできる画期的なサービスです。
今回は「見る」に特化したサービスの1つである Face を確認します。
Face とは、人の顔の写った画像から感情などの情報を抽出してくれるサービスです。
具体的には以下のような情報を読み取ることができます。
- 年齢: 年齢
- ぼかし: 顔がどの程度ぼやけているか
(顔が画像でどの程度のメイン フォーカスになっているかを示します) - 感情: 感情
- 顔ひげ: 顔ひげがあるかどうか
- 眼鏡: 人物が眼鏡をかけているかどうか
- 髪: 髪の種類と髪の色
- 化粧: 画像内の顔がメイクされているかどうか
- 笑顔: 画像内の人が笑っているかどうか
また、Face に関しては無料のデモが用意されているので本記事で行う内容はすべて無料で試すことができます。
それでは早速 Face を使用していきましょう!
Face(Azure AI) の使用方法
Azure Portal 上での設定
まずは Azure Portal へサインインをする必要があります。
https://azure.microsoft.com/ja-jp/features/azure-portal/
まだアカウントを作成したことのない方は無料で作成できます。
サインインができましたら、リソースの作成をクリックしてください。
その後、検索窓で Face と検索すると下記のような画面になります。
Face から作成をクリックします。
続けて、下記に従って詳細な設定を行います。
その際に価格レベルを F0 としていただくことで無料で試すことができます。
画像のように入力できたら残りの設定項目はデフォルトのままで先に進み、作成をします。
Face は API コンソール、 C#、 Python を使用して実装を行う事ができます。
今回は Python 形式で顔の情報を取得します。
その際に必要な情報は下記の矢印をクリックすると出てくるキーとエンドポイントの情報です。
キーとエンドポイントの情報は下記のように表示されます。
四角で囲ってある部分をこれから使用するためコピーをしておきましょう。
Google Colaboratory で実装
今回は無料で使用できる Google Colaboratory を実行環境として使用します。
Python で Face を使用する際には下記パッケージをインストールすることで簡単に実装することができます。
パッケージの詳細はこちらからご確認ください。
pip install --upgrade azure-cognitiveservices-vision-face
続けて今回の実装に必要なパッケージをインポートします。
import io
import os
import requests
from io import BytesIO
from PIL import Image, ImageDraw
from azure.cognitiveservices.vision.face import FaceClient
from msrest.authentication import CognitiveServicesCredentials
ノートブックから Face へ接続
まずはノートブックと Face の接続を行いましょう。
その際に先程コピーしたキーとエンドポイントを使用します。
KEY = 'ご自身のキー'
ENDPOINT = 'ご自身のエンドポイント'
クライアント認証を行い、このサービスを使えるようにしましょう。
face_client = FaceClient(ENDPOINT, CognitiveServicesCredentials(KEY))
顔の検出
それでは準備が整いましたので Face を使用して顔を検出します。
今回使用するサンプル画像は商用フリーのストックフォトサイトである Unsplash から取得します。
https://unsplash.com
single_face_image_url = 'https://images.unsplash.com/photo-1438761681033-6461ffad8d80?ixid=MXwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=1950&q=80'
single_image_name = os.path.basename(single_face_image_url)
response = requests.get(single_face_image_url)
img = Image.open(BytesIO(response.content))
Face で用意されている事前学習済みモデルを使用します。
detected_faces = face_client.face.detect_with_url(url=single_face_image_url, detection_model='detection_03')
if not detected_faces:
raise Exception('No face detected from image {}'.format(single_image_name))
推論結果としては、顔を囲む長方形の頂点の座標が出力されます。
それを画像で表示するために下記のように表示方法の指定を行います。
def getRectangle(faceDictionary):
rect = faceDictionary.face_rectangle
left = rect.left
top = rect.top
right = left + rect.width
bottom = top + rect.height
return ((left, top), (right, bottom))
推論し結果を可視化しましょう。
draw = ImageDraw.Draw(img)
for face in detected_faces:
draw.rectangle(getRectangle(face), outline='red')
img
このように正しく検出ができていることがわかります。
皆さんは画像の少女が何歳に見えますでしょうか?
Face に聞いてみましょう!
検出した顔から情報を取得
まずは画像からどのような情報を取得したいか指定します。
今回は年齢、性別、感情を取得しましょう。
return_face_attributes = ['age', 'gender', 'emotion']
取得したい要素を face_client.face.detect_with_url
に画像と一緒に渡します。
response = face_client.face.detect_with_url(single_image_url, return_face_attributes=return_face_attributes)
結果を表示してみましょう。
response[0].as_dict()
結果を見ると age:18
gender:female
であることがわかります。
emotion
は今回は neutral
が一番高いようです。
簡単に写真から顔と顔の詳細な情報を検出することができることがわかっていただけたのではないでしょうか?
Face には様々な機能があり、顔認証システムなども簡単に開発することができます。
AI-900 の受験を考えている方は Face を使用する事によって何ができるのかをしっかり抑えましょう。
最後まで読んでいただき、ありがとうございました!