ぞんがいすこやかに

今のところクラウドメインです。タイトルに意味はないです。

Logic App Service × Face APIでお手軽に顔認識処理を実装してみる

ご無沙汰です。

今回はAzureのLogic App Service × Face APIで顔認識を試してみます。
というのも、某イベントでは顔認識を活用して参加者の表情から感情を読み取ってセッションの関心度
を測っていると聞いてなかなかおもしろそうだったので、早速自社のイベントにも取り入れようと思い色々と
試し始めています。要は思いつきってやつですね。
多分10分ぐらいで出来ちゃいます。


今回使うメインで使うサービスはこの2つ
azure.microsoft.com

azure.microsoft.com


アーキテクチャ

今回のアーキテクチャはこんな感じです。


f:id:kamoppusan:20180822162638p:plain


スマホで撮影した写真をOnedriveアプリでアップしてblobに転送。
blobの写真をFaceAPIに渡して分析するといった簡単なフローです。
分析結果のテキストはblobに保管します。

FaceAPIを作成

まずは分析するためのFaceAPIを作成します。

https://portal.azure.com/#create/Microsoft.CognitiveServicesFace


f:id:kamoppusan:20180822170404p:plain

最初はフリープランで作成しましょう。
作成できたら一旦FaceAPIは置いてLogicAppsを作り込んでいきます。
この画面は後ほど使うので残しておきます。

Logic Apps作成

https://portal.azure.com/#create/Microsoft.EmptyWorkflow


f:id:kamoppusan:20180822170950p:plain

ちゃちゃっと必要項目を埋めて作成しましょう。


f:id:kamoppusan:20180822171332p:plain

作成したLogicAppsを開くと初期デザイナー画面が表示されます。
空のロジックを選択して新規作成します。

OneDriveに写真が置かれたらblogに転送

今回の処理はスマホからonedriveに写真がアップロードされたタイミングをトリガーとしています。
Onedriveのトリガーを作成します。

f:id:kamoppusan:20180822172125p:plain

この画面で様々な要素を選択できます。
onedriveで絞り込んで対象トリガーを選択。


f:id:kamoppusan:20180822172214p:plain

選択するとOnedriveのログイン処理を求められますので対象アカウントでログインしましょう。
あとは写真アップロード先のフォルダと試行タイミングを設定。


写真をblobに転送

Onedriveの写真をblobに転送します。
ぶっちゃけOnedrive上でも処理できますが、容量の関係やAzure上で色々いじる際にblobにあったほうが何かと便利なので移動しています。この辺りはお好みでどうぞ。

f:id:kamoppusan:20180822173025p:plain

新しいステップをクリックすると次のステップを作成できます。


f:id:kamoppusan:20180822173056p:plain


blobの作成を選択します。
アップロード先のストレージアカウントを選択しましょう。
作成していない方は新たにストレージアカウントとblob作成してください(ここでは省略するのでググってください)


f:id:kamoppusan:20180822173252p:plain

フォルダーのパス:任意のフォルダー
Blob名:ファイル名
Blobコンテンツ:ファイルコンテンツ

Blob名等は動的に前ステップから引き継ぐことが出来ます。便利。


FaceAPIで写真を分析(detectface)

さて、ここからがある意味本番ですね。
FaceAPIの処理を設定します。

f:id:kamoppusan:20180822173738p:plain


f:id:kamoppusan:20180822173906p:plain

ここでは最初に作成したFaceAPIの情報を入力していきます。
先程作成したFaceAPIを開きます。


f:id:kamoppusan:20180822174918p:plain


f:id:kamoppusan:20180822174928p:plain

1~3を記載します。
特に3のSiteURLは必須になっていませんが、空欄だとエラーになるので注意です(ドハマリしました・・・)


f:id:kamoppusan:20180822180444p:plain

ImageURLはBlobのURLとblobパスを設定
これでFaceAPIの設定は完了です。

分析結果を保存

最後に分析結果のテキストをBlobに保存します。
for each処理を使います。

f:id:kamoppusan:20180822181204p:plain


f:id:kamoppusan:20180822182600p:plain


画像の保存先と保存対象を設定。
これで完成。

動作確認

てなわけで早速動作確認です。
今回はMSのCEO、サディア・ナデラ氏で試してみる。
画像はwikipediaから拝借。

f:id:kamoppusan:20180822181721j:plain

Onedriveにアップしてみましょう。


f:id:kamoppusan:20180822183444p:plain


f:id:kamoppusan:20180822183450p:plain

成功するとこんな感じでログに表示されます。


f:id:kamoppusan:20180822183609p:plain

Blobにも結果が保存されていますね!


分析結果確認

では軽く答え合わせしてみます。

"gender":"male","age":43.0

ちゃんと男性と識別していますね。
サディア氏は現在51歳前後なので、結構近い。
そもそも撮影時の年齢がわからないと比較にならないという。

glasses":"ReadingGlasses"}

メガネ判定も正解。

{"moustache":0.1,"beard":0.1,"sideburns":0.1}

青ひげレベルのひげも判定してる!


まとめ

Logic App Service × Face APIで簡単に写真を分析する処理を実装できました。
Logic App Serviceを触るのは初めてでしたが、コードを書かずに簡単に処理を組めるのはなかなか強力ですねー。
今回FaceAPIでは画像の処理だけを行いましたが、学習した人物を判定することも可能です。
最近流行りの画像判定アプリなんかもノンコーディングでお手軽に作成できちゃいますね。
ほんとすごい便利な時代になったなぁ。