C#でMicrosoft『Face API』で顔認識を試してみる
Microsoftから提供されているクラウドサービスAzureにあるCognitive Services APIには、顔認識や音声認識、Bing検索エンジンなどMicrosoftの技術が存分に使えて嬉しいサービスです。
提供さてれいるAPI
特に気になるサービスとして2つ
- 「Speaker Recognition API」の音声認証
話者認証、話者識別とトンデモナイ機能が使える!! - 「Computer Vision API」の画像分析
状況認識("プール""泳いでいる""水""男""人間"など画像・映像から状況キーワードを抽出してくれる。)、文字認識(テキストから手書きまで抽出してくれる。)とこちらもトンデモナイ機能がある。
それ以外にも顔認証、感情検出、翻訳機能、商品推薦など面白い機能が多くGoogle以上の技術力のアピールポイントが大きですw
こちらのサービスを利用するには、Azureの登録が必要です。
今回は、はじめてなのでFaceAPIをC#で簡単なものをサンプルとして書いてみました。
Azureの使い方は、ググって見て下さい。
利用方法
簡単な流れです。
- Azureの登録
- Azureダッシュボードから「Cognitive Services」を登録
- 「Cognitive Services」からAPI種類「Face API」を選択
※サーバ先は自由に選んでも問題ないですが、リクエスト時にURLが異なります。 - リソース管理→キー→キー1を利用・コピペします
詳しくはこちらをご覧ください。
こちらの「Open API testing console」から自分の取得したAPIキーをテストすることができます。
- 私の場合は、サーバ先としてアジアだったのでsoutheastasiaを選択します。
- Query parametersはデフォルトのまま利用しますので、すべてRemoveボタンを押して削除します。
- Headersは、URLから画像取得する場合場「application/json」で、Ocp-Apim-Subscription-Keyにコピペしたキー1を入力します。
- Request bodyのJSON文の
{
"url":"http://cdn-ak.f.st-hatena.com/images/fotolife/f/famirror/20151213/20151213235438.jpg"
}
を入力します。※画像URLは適当に - 最後にSendボタンを押します。
- ResponseStatus 200 OKと正しく返ってきたら登録した情報は問題なしです。
{
"faceId": "cc45325e-01ec-4e36-a069-8e700b913f2b",
"faceRectangle": {
"top": 94,
"left": 319,
"width": 75,
"height": 75
}
}
とサンプル画像の結果がこちらです。
実際に動かしてみた
以下は、動かしてみたサンプルコードです。
サンプルコード
URLは下記に書き換えて下さい。
- West US - westus.api.cognitive.microsoft.com
- East US 2 - eastus2.api.cognitive.microsoft.com
- West Central US - westcentralus.api.cognitive.microsoft.com
- West Europe - westeurope.api.cognitive.microsoft.com
- Southeast Asia - southeastasia.api.cognitive.microsoft.com
なお、Content-Typeを「application/octet-stream」に書き換えて、rs.Writeに書き込むバイナリデータをURL先してのJSON分から画像データを読み込んでバイナリーにした記述にするとローカルで読み込んだ画像で顔認識した結果が返ってきます。
画像データのバイナリへの変換は下記を参照下さい。
実行結果
Response:
[{"faceId":"cc45325e-01ec-4e36-a069-8e700b913f2b","faceRectangle":{"top":94,"left":319,"width":75,"height":75}}]
と「Open API testing console」と同じ結果になりました。
最後に
Microsoftはサンプルソースを豊富に用意されています。
他にもたくさんの方がサンプルソースを後悔されていましたが、即座に真似すれば動かせる感じではありませんでしたので、今までこちらで作っていたAPI用C#サンプルベースに今回作ってみたら、思いの他にすんなり行きました♪
サンプルソースコードは、あくまでも参考としてご利用下さい。また、各種ライブラリのライセンスにも目を通して、ご利用下さい。
ご利用した方は、コメント頂けると個人的に励みになります。