Servicesに含まれるAPIの1つで、顔検出/画像のグループ化/人物の特定などの機能を提供する。Servicesに含まれるAPIの1つで、画像ファイルから顔を検出したり、グループ化したりといった処理を簡単なAPI呼び出しで実現できる。APIは主に以下の機能を提供する。顔識別ここでいう「顔検出」とは、APIに与えた画像から最大で64人までの(人の)顔を検出すること。このとき、検出した顔の画像内での位置に加えて、性別、年齢などの情報も抽出してくれる。一方の「顔識別」は、複数の画像の中から指定した顔と似た顔を含む画像を識別したり、同じく複数の画像を与えると、顔が似ているかどうかを基にそれらをグループ化したりする機能である。これらの機能が以下のAPIで提供されている。SimilarGroupIdentifyVerifyまた、顔の一覧(リスト)を作成したり、識別用に個人個人の顔を登録したりするためのAPIも用意されている。V1.0」ページで一覧できるので、詳しくはそちらを参照されたい。APIを利用するには、Azureでのサブスクリプションの追加が必要となる。Asia」など、Azureのリージョンの一部でのみ利用可能となっていて、リクエストURLもリージョンごとに異なるものとなる。API」ページを参照のこと。簡単にまとめると、20トランザクション/分、30,000トランザクション/月までは無料で利用できるFree、最大で10トランザクション/秒、1000トランザクションごとに課金が発生するStandardの2つの価格レベルがあり、それとは別に画像を保存するために使用する「フェースストレージ」を使用する場合には、そのための料金が別途発生する。APIのサブスクリプションを追加し、APIの利用に必要なアクセスキーを取得したものとして、幾つかのAPIを実際に使ってみよう。API」などを参考にしてほしい(本稿では割愛する。APIではトークンの作成は不要だ)。APIを使用してみよう。APIのドキュメントページで、APIのテストコンソールを開き、必要な情報を入力して[Send]ボタンをクリックすればよい。詳しい手順は割愛するが、以下にこれを行っている様子を示す。APIのドキュメントを見ると、このAPIを呼び出す際には次のような情報を与えることが分かる。検出された顔に関連付けられたIDを返すか。検出された顔に含まれる目や鼻の位置を返すか。検出された顔を解析して、年齢や性別などの情報のうち、返送するものを指定する。指定可能な値にはage/gender/headPose/smile/facialHair/glasses/emotionなどがある(カンマ区切りで複数を指定可能)これらの情報を基にリクエストURLを組み立て、リクエストボディーには画像ファイルのURLもしくは画像そのものを含める。JavaScriptでこれを行うコード例を以下に示す。ここではreturnFaceIdパラメーターとreturnFaceLandmarksパラメーターについては既定値(それぞれ、true=IDを返送する、false=目や鼻の位置を返送しない)を利用するようにして、returnFaceAttributesパラメーターにはage(年齢)、gender(性別)、smile(笑顔かどうかを0〜1の数値で示す)を指定している。画像ファイルのURLを指定するコードに加えて、リクエストに画像ファイルをそのまま含めるコードも用意してある。APIを使用するコード例(JavaScript)実際に利用した画像を以下に示す(以下ではぼかしを入れてあるが、実際にはぼかしなしの画像を使用)。検出結果はJSON形式のデータとして返送される。以下に上のコードを実行した結果を示す。]呼び出し結果どちらも同じファイルなので、笑顔ではない(smile=0.001)、男性、37歳という結果になっている。APIは、複数の画像ファイルのグループ化するものだ。APIの呼び出しで返送されるfaceIdの値が用いられる。faceId値の配列をAPIに渡すと、それらの値を利用して、画像のグループ化を行い、それがfaceId値の配列として返送される。詳細は割愛するが、実際にこのAPIを呼び出すコードを以下に示す。APIを呼び出すコード(JavaScript)簡単にコードの説明をしておこう。ここでは画像ファイルのURLを含んだ配列を用意して(face1.pngが配列にないのは、うまく顔検出ができなかったため)、それにcallDetectAPI関数を適用している。callDetectAPI関数はJavaScriptのPromiseオブジェクトを返すようになっていて、呼び出し完了時にはfaceId値が得られるようになっている。Promise.allメソッドを使って、配列の全要素のfaceId値が得られるのを待機する。全てのfaceId値がそろったら、callGroupAPI関数を呼び出す。APIの詳細な仕様はドキュメントをご覧いただくとして、簡単にいえば、リクエストボディーにfaceId値を格納した配列を指定して、呼び出せばよい。返送される値は例えば、次のようなものになる。APIが返す値groupsプロパティには、グループ化された画像が配列の配列として格納される。判断できなかったものはmessyGroupプロパティに格納される。上の例であれば、2つのグループに画像がグループ化されたということになる。実際に上のコードを実行した結果を以下に示す。最初の出力は、得られた画像ファイルのfaceId値だ(24時間有効)。その次が、グループ化の結果である。出力結果を見ると分かるが、groupsプロパティに配列が1つしかないことから、うまくグループ化ができていない。APIの動作自体に問題はなさそうだ)。}今度はグループ化がうまくいった興味のある方は、上のコードを利用して、ご自分でも画像ファイルのグループ化をしてみよう。APIは画像ファイルから顔を検出したり、グループ化したりできる。本稿では触れなかったが、faceId値あるいは画像ファイルを保存した「フェースリスト」から、指定した顔をよく似たものを選別したり、「これは誰それの顔」と個人を特定したりもできる。簡単なAPI呼び出しでこうした処理を行えるので、興味のある方はぜひ使ってみよう。クイックスタートページ。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。