このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の24日目です。
ナレッジコミュニケーションの大柳です(@oyngtmhr)。
24日目はAzure Cognitive ServicesのFace APIです。静止画から顔に関する情報を抽出できます。
概要
cognitive(コグニティブ)とは日本語で「認知」を意味します。ただ機械的に認識するだけでなく、人間と同じようにモノを理解して推論し、さらに自ら学習する、という意味で使われています。
Azure Congnitive Serviceでは視覚、音声、言語、知識、検索の5つのカテゴリで複数のAPIが提供されています。
今回は画像認識系のサービスの中からFace APIを紹介します。写真に含まれる顔の検出、識別、分析、グループ化、タグ付けができます。
使える機能について説明していきます。
顔検証 Face Recognition
2つの顔が同一人物のものであるかを判別します。
Face Verification 顔認証
写真の中の2つの顔、もしくは写真の中の1つの顔と事前にPerson Groupに登録済の顔が一致するかを判別します。同一人物かどうかと、その確率が返されます。
Finding Similar Face 類似する顔の検索
与えられた顔写真の中から同一人物と推測される顔を返してくれます。matchFace と matchPerson の2つのモードがあります。matchFaceモードではFace Verificationの機能を使って同一人物の顔写真を探します。matchPersonモードでは同一人物かではなく「似た顔」の候補を探してくれます。結果は類似する顔が確率とともに返されます。
Face Grouping 顔のグループ化
顔写真を分類して同一人物であると思われる顔写真にグループ化します。1000枚までの顔写真を分類できます。顔グループと分類できなかった顔グループ(messyGroup)が返されます。
Face Identification 顔識別
person groupと呼ばれる事前に定義した人物データベースから顔の識別を行います。各グループには10000人を登録でき、さらに個人ごとに248パターンの顔を登録できます。
Face Storage 顔ストレージ
Face Identificationなどで登録した顔をFace Storageに登録して使うことができます。1000人までの顔は無料枠で登録できます。
1枚当たり4MBまでの画像を登録できます。
Face Detection(顔検出)
画像内の人間の顔を検出してくれます。最大64人分まで対応できます。検出した顔の位置を示す矩形と、顔の特徴を返してくれます。
顔の特徴は以下のようなものがあります。
faceId
顔を識別するユニークなIDです。
faceAttributes
顔に関連する属性を検出してくれます。
- age: 年齢を予測します。gender: 性別を予測します。
- smile: 笑顔の度合いを検出します。
- facialHair: 口ひげ(moustache)、あごひげ(beard)、もみあげ(sideburns)の長さを検出します。
- headPose:ロール軸・ピッチ軸・ヨー軸(roll/yaw/pitch)の角度を検出します。
- glasses: 眼鏡をかけているか、かけているならそのタイプを検出します。NoGlasses、ReadingGlasses、Sunglasses、SwimmingGogglesの4タイプで判定されます。
- emotion: 感情の度合いを検出します。anger、contempt、disgust、fear、happiness、neutral、sadness、surpriseの8つの感情を判定できます。
- hair: 髪が見えているか、禿げているか、また髪がある場合は髪の色を検出します。髪の色は種類の中から度合いを検出します(brown、blond、black、other、gray、red)。
- makeup: 目と唇が化粧されているかどうかを予測します。
- accessory: 顔周辺のアクセサリとして帽子、眼鏡、マスクをしてるかの度合いを検出します。
- occlusion: 額、目、口が閉じているかを判定します。
- blur: 顔のぼやけ具合を検出します。Low、Medium、Highのレベルと度合いで検出します。
- exposure: 顔の露出具合をGoodExposure、OverExposure、UnderExposureのレベルと度合いで検出します。
- noise:ノイズのレベルを検出します。Low、Medium、Highのレベルと度合いで検出します。
faceLandmarks
顔の特徴点の位置を検出してくれます。
- 瞳孔(pupilLeft、pupilRight)
- 鼻(noseTip、noseRootLeft)
- 口(mouthLeft、mouthRight)
- 眉毛(eyebrowLeftOuter、eyebrowLeftInner、eyebrowRightInner、eyebrowRightOuter)
- 目(eyeLeftOuter、eyeLeftTop、eyeLeftBottom、eyeLeftInner、eyeRightInner、eyeRightTop、eyeRightBottom、eyeRightOuter、noseRootRight、noseLeftAlarTop、noseRightAlarTop、noseLeftAlarOutTip、noseRightAlarOutTip)
- 唇(upperLipTop、upperLipBottom、underLipTop、underLipBottom)
その他
・特定の人物と認識した顔は24時間保持されて、同じfaceIdが返されます。
・無料枠では20トランザクション/分、有料プランでは10トランザクション/秒の処理件数制限があります。
料金
・トランザクション単位の課金です。
・月間30000トランザクションまでの無料枠あり。
・1000トランザクションごとに課金されます。
・有料枠は153円/1000トランザクションから
・Face Storageは画像1000枚あた月額51円
まとめ
顔に関する様々な属性、顔のパーツの位置などいろんなことができてかなり高性能です。顔系の認識は日本だとNECが長年研究して、製品化してましたが、個人はもちろん法人でもコストの面で導入が難しかったですが、今ならAzureのおかげで低コストでなんでもできて、すごい世の中になりました。