ロボットと共に

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#サンプルベースに今回作ってみたら、思いの他にすんなり行きました♪

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

C#とドコモAPI「雑談対話API」を試してみる

今回はタイトル通りC#でドコモAPI「雑談対話API」を試してみたいと思います。
ドコモAPI「雑談対話API」は、NTTドコモdocomo Developer supportから提供されているAPIです。

提供さてれいるAPI

  • 雑談対話:自然な会話をします。
  • シナリオ対話:フローチャートに沿った流れのある対話をしてくれます。
  • 知識Q&A:今知りたいことにピンポイントで答えます。

利用方法

  1. 新規アカウント登録
  2. 使用したいAPI登録

詳しくはこちらから参考にして下さい。

dev.smt.docomo.ne.jp

実際に動かしてみた

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

サンプルコード

実行結果

3回実行してみました。それぞれ違った正しい返答を返してくれていますが、適用感が強い返しで面白いです。雑談対話APIはなかなか面白そうですねw

1回目

{"utt":"あらこんにちは","yomi":"あらこんにちは","mode":"dialog","da":"0","context":"9thN6csXAcbqHXqNHgk6Ww"}

2回目

{"utt":"うっす","yomi":"うっす","mode":"dialog","da":"6","context":"WYdp5aFfsRUoHPMr15Yh6g"}

3回目

{"utt":"こんあり","yomi":"こんあり","mode":"dialog","da":"0","context":"TtEaB0tWxu--xp_x6OJBdw"}

商用利用に関して

APIの商用利用はこちらにまとまったものが記載されています。

割りと利用しても大丈夫な感じを受けましたが、実際に商用利用を考えている方は一度お問合せした方が無難ですねw

dev.smt.docomo.ne.jp

最後に

ドコモAPIは割りとすんなり利用できましたが、一部音声合成などは自分のスキル不足でよくわからなかったです...
あんまり情報ソースが少ないと感じました。特にC#でやっている方は見当たらなかったです。一番簡単そうな雑談対話APIでやってみましたが、動いてよかったです。 

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

OpenCVSharpでFace++を動かしてみる

 前回に引き続きC#でFace++を試してみました。

今回は、OpenCVで読み込んだ画像データをエンコードしてFace++へリクエストを投げれるコードを書いてみた。ついでにOpenCVの顔認識も入れてみました。

出力結果は、以下の画像です。

  • 青枠がOpenCVの顔検出結果
  • 赤枠がFace++の顔検出結果

なおサンプル画像とした彼女は、フリー素材アイドル「Mika+Rika」を利用させて頂きましたw 謝謝:D

f:id:Mikan6:20170418020835p:plain

mika-rika-free.jp

 

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

 

 

最後に

OpenCVとFace++が連携できて、カメラ映像からFace++へリクエストを投げられるしくみが整いました。あとは顔を登録して、顔認証作業ですねw

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