Xamarin.Forms Cognitive Services Face APIのデモアプリを作ってみた
Cognitive ServicesのFace APIを使った顔認識のデモを作りました。
アプリ作成にあたり、かずきさんの以下の記事を参考にさせて頂きました。
ありがとうございます(*‘▽’)
FACE APIの準備
以下の記事を参考に準備をします。
注意事項
ひょっとすると無料プランだと「20 Calls per minutes」に引っ掛かるかもしれません。
私はいろいろ試しているうちに無料プランが何やらExpireしたのでStandardにプランを変えました。
まぁそれでも1000 Callsで150円位かと。
使用するAPI一覧
以下のAPI一覧の中から必要なものを使っています。
機能としては以下を使用しています。
人情報の一覧取得(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などから作成しておく必要があります。
アプリの画面構成
アプリの画面構成は以下になります。
メイン画面
人の一覧画面
人への顔の登録画面
顔認識のデモ画面
になります。
アプリの概要
人の一覧画面には現在登録されている人の一覧が表示され、人の追加・削除が可能
ここから人を選択して顔の登録画面へ遷移する顔の登録画面で撮った写真を登録し学習させる
デモ画面で写真を撮影すると、顔の識別を行い登録データと同一の人がいれば、登録名が表示される
信頼度や、おまけで年齢と笑顔値も表示
実装
GitHubにソースをあげてあります。
Xamarin Forms + Prismで作成しています。
MVVMでやった事がなかったので挑戦してみましたが、ViewとViewModelのみです(・ω・`) どの部分がMになるのかピンと来ませんでした。精進します。
カメラ部分はPluginにお任せです。
大事な処理はSDKやPlugin任せです。
意外と簡単にサクッと動作する所まで作る事が出来ました。
※どちらかと言うと画面のレイアウトとか別な部分で悩みました・・・orz
実際の製品や受託開発となると、また違うとは思いますが、こういったデモレベルであればサクッと作れるは良いですね。
実行
人を登録して、写真を撮影して顔の登録も行った後で、
デモ画面から写真を撮影すると、撮影した人が登録されていれば名前や年齢が表示されます。
顔の角度によっては顔として認識しなかったりしますが、結構良い精度で認識できていると思います。
次に試すのはFaceAPI以外にしてみたいなと思います。(・ω・)ノ