Logic App Service × Face APIでお手軽に顔認識処理を実装してみる
ご無沙汰です。
今回はAzureのLogic App Service × Face APIで顔認識を試してみます。
というのも、某イベントでは顔認識を活用して参加者の表情から感情を読み取ってセッションの関心度
を測っていると聞いてなかなかおもしろそうだったので、早速自社のイベントにも取り入れようと思い色々と
試し始めています。要は思いつきってやつですね。
多分10分ぐらいで出来ちゃいます。
今回使うメインで使うサービスはこの2つ
azure.microsoft.com
アーキテクチャ
今回のアーキテクチャはこんな感じです。
スマホで撮影した写真をOnedriveアプリでアップしてblobに転送。
blobの写真をFaceAPIに渡して分析するといった簡単なフローです。
分析結果のテキストはblobに保管します。
FaceAPIを作成
まずは分析するためのFaceAPIを作成します。
https://portal.azure.com/#create/Microsoft.CognitiveServicesFace
最初はフリープランで作成しましょう。
作成できたら一旦FaceAPIは置いてLogicAppsを作り込んでいきます。
この画面は後ほど使うので残しておきます。
Logic Apps作成
https://portal.azure.com/#create/Microsoft.EmptyWorkflow
ちゃちゃっと必要項目を埋めて作成しましょう。
作成したLogicAppsを開くと初期デザイナー画面が表示されます。
空のロジックを選択して新規作成します。
OneDriveに写真が置かれたらblogに転送
今回の処理はスマホからonedriveに写真がアップロードされたタイミングをトリガーとしています。
Onedriveのトリガーを作成します。
この画面で様々な要素を選択できます。
onedriveで絞り込んで対象トリガーを選択。
選択するとOnedriveのログイン処理を求められますので対象アカウントでログインしましょう。
あとは写真アップロード先のフォルダと試行タイミングを設定。
写真をblobに転送
Onedriveの写真をblobに転送します。
ぶっちゃけOnedrive上でも処理できますが、容量の関係やAzure上で色々いじる際にblobにあったほうが何かと便利なので移動しています。この辺りはお好みでどうぞ。
新しいステップをクリックすると次のステップを作成できます。
blobの作成を選択します。
アップロード先のストレージアカウントを選択しましょう。
作成していない方は新たにストレージアカウントとblob作成してください(ここでは省略するのでググってください)
フォルダーのパス:任意のフォルダー
Blob名:ファイル名
Blobコンテンツ:ファイルコンテンツ
Blob名等は動的に前ステップから引き継ぐことが出来ます。便利。
FaceAPIで写真を分析(detectface)
さて、ここからがある意味本番ですね。
FaceAPIの処理を設定します。
ここでは最初に作成したFaceAPIの情報を入力していきます。
先程作成したFaceAPIを開きます。
1~3を記載します。
特に3のSiteURLは必須になっていませんが、空欄だとエラーになるので注意です(ドハマリしました・・・)
ImageURLはBlobのURLとblobパスを設定
これでFaceAPIの設定は完了です。
分析結果を保存
最後に分析結果のテキストをBlobに保存します。
for each処理を使います。
画像の保存先と保存対象を設定。
これで完成。
動作確認
てなわけで早速動作確認です。
今回はMSのCEO、サディア・ナデラ氏で試してみる。
画像はwikipediaから拝借。
Onedriveにアップしてみましょう。
成功するとこんな感じでログに表示されます。
Blobにも結果が保存されていますね!
分析結果確認
では軽く答え合わせしてみます。
"gender":"male","age":43.0
ちゃんと男性と識別していますね。
サディア氏は現在51歳前後なので、結構近い。
そもそも撮影時の年齢がわからないと比較にならないという。
glasses":"ReadingGlasses"}
メガネ判定も正解。
{"moustache":0.1,"beard":0.1,"sideburns":0.1}
青ひげレベルのひげも判定してる!