tonkunの備忘録

色々調べた事、試した事などを載せます

Xamarin.Forms Cognitive Services Face APIのデモアプリを作ってみた

Cognitive ServicesのFace APIを使った顔認識のデモを作りました。

アプリ作成にあたり、かずきさんの以下の記事を参考にさせて頂きました。
ありがとうございます(*‘▽’)

blog.okazuki.jp

FACE APIの準備

以下の記事を参考に準備をします。

tonkun-no.hatenablog.com

注意事項

ひょっとすると無料プランだと「20 Calls per minutes」に引っ掛かるかもしれません。
私はいろいろ試しているうちに無料プランが何やらExpireしたのでStandardにプランを変えました。 まぁそれでも1000 Callsで150円位かと。

使用するAPI一覧

以下のAPI一覧の中から必要なものを使っています。

Microsoft Cognitive Services

機能としては以下を使用しています。

  • 人情報の一覧取得(List Persons in a Person Group)

  • 人情報の登録(Create a Person)

  • 人情報の削除(Delete a Person)

  • 人情報への顔の登録(Add a Person Face)

  • 学習(Train Person Group)

  • 顔の検出(Detect)

  • 顔の識別(Identify)

Personを作る前にPerson Groupの作成が必要ですが、本アプリではそこは省略しています。
予め以下のURLなどから作成しておく必要があります。

https://westus.dev.cognitive.microsoft.com/docs/services/563879b61984550e40cbbe8d/operations/563879b61984550f30395244/console

アプリの画面構成

アプリの画面構成は以下になります。

  • メイン画面

  • 人の一覧画面

  • 人への顔の登録画面

  • 顔認識のデモ画面

になります。

アプリの概要

  1. 人の一覧画面には現在登録されている人の一覧が表示され、人の追加・削除が可能
    ここから人を選択して顔の登録画面へ遷移する

  2. 顔の登録画面で撮った写真を登録し学習させる

  3. デモ画面で写真を撮影すると、顔の識別を行い登録データと同一の人がいれば、登録名が表示される
    信頼度や、おまけで年齢と笑顔値も表示

実装

GitHubにソースをあげてあります。

github.com

Xamarin Forms + Prismで作成しています。

MVVMでやった事がなかったので挑戦してみましたが、ViewとViewModelのみです(・ω・`) どの部分がMになるのかピンと来ませんでした。精進します。

カメラ部分はPluginにお任せです。

github.com

大事な処理はSDKやPlugin任せです。
意外と簡単にサクッと動作する所まで作る事が出来ました。 ※どちらかと言うと画面のレイアウトとか別な部分で悩みました・・・orz

実際の製品や受託開発となると、また違うとは思いますが、こういったデモレベルであればサクッと作れるは良いですね。

実行

人を登録して、写真を撮影して顔の登録も行った後で、
デモ画面から写真を撮影すると、撮影した人が登録されていれば名前や年齢が表示されます。

f:id:tonkun_no:20170602042335p:plain

顔の角度によっては顔として認識しなかったりしますが、結構良い精度で認識できていると思います。

次に試すのはFaceAPI以外にしてみたいなと思います。(・ω・)ノ