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}
青ひげレベルのひげも判定してる!
AzureのUpdate ManagementでVMの更新管理をしてみる
Azureの便利な管理ソリューション第2弾です。
今回はUpdate Management機能を使ってVMのWindowsUpdate等の更新管理をしてみたいと思います。
面倒なWindowsUpdateをコンパネ上でよろしく管理してくれる素敵機能と聞いて黙っていられませんね。
この辺りを参考に作業をしてみます。
docs.microsoft.com
更新管理を有効にする
更新管理を有効にしたいVMを選択して更新プログラムを有効化します。
更新管理に必要な下記が有効じゃない場合はこの画面で自動的に有効化されるようです。
自分で作成する場合は事前に作成しておきましょう。
有効化を押すと設定が開始されます。
スケジュール設定
15分ぐらい放置しましたがまだ終わらないようなのでその間に自動更新設定をします。
毎週木曜日の5時から更新が行われる設定にしました。
適用するプログラム、スケジュール間隔等、この
画面で細かく設定できます。
できました。うーん簡単。
更新の確認
数時間程で反映されました。
単発スケジュールを設定して更新の動作確認をしてみます。
こんな感じでコンパネ上から進捗状況を確認できます。
このまましばらく放置。
メンテナンスウィンドウが短かくて全部完了しませんでした。
流石に30分は短すぎたようなので、本番はもう少し余裕をもたせたほうが良さそうです(最低でも60分以上はもったほうがいいかも?)
費用
最後に費用。
サービス利用料自体は無料。あとはLog Analyticsのログ保存料ぐらい。Good。
まとめ
管理がめんどうなVMの更新作業をOSログイン不要でコンパネ上で完結できるのは運用効率を格段に向上させる可能性が高まりそうですね。
複数台構成になればなるほど効果を発揮しそうなサービスです。
更新失敗時どうすんのーとか、実際の運用してみないと見えてこない部分があると思うのでしばらく使ってみて発見があればまた別の記事としてポストしたいと思います。
ではまた。
Azure Log Analyticsを使ってみる
先日参加したGlobal Azure Bootcamp 2018@Tokyoで「Azureはログ管理機能が結構いけてるよー」「監視機能が多すぎて逆につらい」みたいな話を聞いてきました。
行った際のゆるレポはこちら↓
とりあえずAzureに慣れていく一発目として紹介されていたAzure Log Analyticを使ってみることにしました。
ざっと見た感じAWSのCloudWatchLogsかな?という印象を持ちましたがとりあえず触ってみないとわからんやろーということで触ってみました。
ワークスペースを作成
リソース一覧からLog Analyticsを検索してワークスペースを作成
ワークスペース名とプランを選んで作成。
お試しなのでフリープランを選択。
ワークスペースにVMを接続
Azure上のVMはエージェントがインストール済みのようなのでここでは省略。
作成したワークスペースから接続するVMを選択
接続をクリック
しばらくすると接続成功(地味に10分ぐらいかかった・・・)
反映確認
実際にログが反映されたか確認してみます。
OMSポータルをクリック。
反映されていますね。
そのまま赤枠をクリック。
取れてるっぽいですね。
データ収集
それでは早速Windwosシステムログを収集してみます。
詳細設定からWindowsイベントログでsystemログを検索して保存。
パフォーマンス関連のデータも設定して保存。
ログの検索
というわけで取得したログを検索してみます。
ログ検索タブでイベントログを検索。
表示されましたね。
パフォーマンスログも検索できています。
ダッシュボードに可視化
文字列として確認できましたが、パフォーマンスデータは文字で見たって仕方がないのでダッシュボードで可視化します。
ビューデザイナーでCPU使用率のグラフを作成。
折れ線グラフでクエリは下記を入力します(公式から引用)
Perf | where CounterName == "% Processor Time" and ObjectName == "Processor" and InstanceName == "_Total" | summarize AggregatedValue = avg(CounterValue) by bin(TimeGenerated, 1m), Computer | render timechart
入力したら適用して保存
概要で作成したビューを確認できます。
あとはピンマークをクリックすればダッシュボードに表示されるようになります。
まとめ
とりあえずログの収集から検索表示まで簡単に設定できました。
ログに条件を掛けてアラート発砲もできますし、ログ保存という目的でもsyslogサーバーを自前で立てる必要がないのはとても嬉しいですね。操作が管理コンソールだけで全て完結する点もなかなか良よさげです。
オンプレ環境のログも収集できますし、利用の幅がとても広がりますね。
Global Azure Bootcamp 2018@Tokyoに参加。ついでにLTしてきた
何気にJAZUG初参加だったりします。
品川勤務で参加しやすいロケーションにあったにも関わらずなぜか参加できていなかったので休日で思い切って参加してみることに。
ここでは会全体を感想含めつつゆるーく書きます。
場所はいつもの品川マイクロソフト
途中、サブウェイのサンドイッチが支給されたりドリンク無料提供だったりAzure300ドルクーポンもお土産にもらえてなかなかに神っています。運営、スポンサーの方々に超感謝ですね。
18時ぐらいから懇親会@LT大会スタート。
みなさん、5分でこゆい話をされていてガチ感漂っていました。
そんな中私だけ唯一浅いLTでほんとさーせん。
セッションは全体を通してAzure歴1年ぐらいの私でもついていける内容でした。
とりあえず個人的に印象に残ったことと感想を箇条書きで。
- Azureのアーキテクチャーセンターは一読しておくべき。これ読み物にして勉強会とかしたらおもしろそう
- Log Analyticsを筆頭にAzureの監視サービスはとても多機能で使ってみたい。使いこなせば幸せになれそう
- LogicAppsは色々できそうだけどやりたいことが思い浮かばないからとりあえず触ってみるかー
きっとセッション概要は別の方がまとめてくれると思うので、詳細気になる方はTwitterでハッシュタグ(#globalazure #jazug)追えばきっと幸せになります。
途中でセッションが中止になって繰り上がったりトラブルもありましたが、ファシリティも最高だしサブウェイも美味しいしおみやげも色々もらえてとても満足度の高い会でした。運営の皆様に超感謝です。