ロボットと共に

Life with Robot

C#でMicrosoft『Face API』で顔認識を試してみる

Microsoftから提供されているクラウドサービスAzureにあるCognitive Services APIには、顔認識や音声認識、Bing検索エンジンなどMicrosoftの技術が存分に使えて嬉しいサービスです。

提供さてれいるAPI

特に気になるサービスとして2つ

  1. Speaker Recognition API」の音声認証
    話者認証、話者識別とトンデモナイ機能が使える!!
  2. Computer Vision API」の画像分析
    状況認識("プール""泳いでいる""水""男""人間"など画像・映像から状況キーワードを抽出してくれる。)、文字認識(テキストから手書きまで抽出してくれる。)とこちらもトンデモナイ機能がある。

それ以外にも顔認証、感情検出、翻訳機能、商品推薦など面白い機能が多くGoogle以上の技術力のアピールポイントが大きですw

こちらのサービスを利用するには、Azureの登録が必要です。

今回は、はじめてなのでFaceAPIをC#で簡単なものをサンプルとして書いてみました。

Azureの使い方は、ググって見て下さい。

利用方法

簡単な流れです。

  1.  Azureの登録
  2. Azureダッシュボードから「Cognitive Services」を登録
  3. Cognitive Services」からAPI種類「Face API」を選択
    ※サーバ先は自由に選んでも問題ないですが、リクエスト時にURLが異なります。
  4. リソース管理→キー→キー1を利用・コピペします

詳しくはこちらをご覧ください。

Face API - V1.0リファレンス

こちらの「Open API testing console」から自分の取得したAPIキーをテストすることができます。

  1. 私の場合は、サーバ先としてアジアだったのでsoutheastasiaを選択します。
  2. Query parametersはデフォルトのまま利用しますので、すべてRemoveボタンを押して削除します。
  3. Headersは、URLから画像取得する場合場「application/json」で、Ocp-Apim-Subscription-Keyにコピペしたキー1を入力します。
  4. Request bodyのJSON文の
    {
    "url":"http://cdn-ak.f.st-hatena.com/images/fotolife/f/famirror/20151213/20151213235438.jpg"
    }
    を入力します。※画像URLは適当に
  5. 最後にSendボタンを押します。
  6. ResponseStatus 200 OKと正しく返ってきたら登録した情報は問題なしです。
    {
    "faceId": "cc45325e-01ec-4e36-a069-8e700b913f2b",
    "faceRectangle": {
    "top": 94,
    "left": 319,
    "width": 75,
    "height": 75
    }
    }
    とサンプル画像の結果がこちらです。

実際に動かしてみた

以下は、動かしてみたサンプルコードです。

サンプルコード

URLは下記に書き換えて下さい。

なお、Content-Typeを「application/octet-stream」に書き換えて、rs.Writeに書き込むバイナリデータをURL先してのJSON分から画像データを読み込んでバイナリーにした記述にするとローカルで読み込んだ画像で顔認識した結果が返ってきます。
画像データのバイナリへの変換は下記を参照下さい。

 

robot-egg.hatenablog.com

 

実行結果

Response:
[{"faceId":"cc45325e-01ec-4e36-a069-8e700b913f2b","faceRectangle":{"top":94,"left":319,"width":75,"height":75}}]

と「Open API testing console」と同じ結果になりました。

最後に

Microsoftサンプルソースを豊富に用意されています。

github.com

他にもたくさんの方がサンプルソースを後悔されていましたが、即座に真似すれば動かせる感じではありませんでしたので、今までこちらで作っていたAPIC#サンプルベースに今回作ってみたら、思いの他にすんなり行きました♪

サンプルソースコードは、あくまでも参考としてご利用下さい。また、各種ライブラリのライセンスにも目を通して、ご利用下さい。
ご利用した方は、コメント頂けると個人的に励みになります。