最近、多くの企業が社内交流ツールとしてSlackを利用することが増えてきました。
私が勤めている会社でもSlackを利用しております。
社内では従業員を識別するため、
Slackのプロフィール画像を自分の顔にすることをルール化しています、
でも従業員数が増えてくると毎日確認するだけで大変な作業量になってしまいます。
そこでAI(顔認識)の力を利用してSlackのプロフィール写真に顔が写っていることを確認するところをC#で実装してみました。
今回はこちらのプログラムの実装方法ついて紹介したいと思います。
プログラムの大まかな動き
1. Slackからユーザのリストを取得します。
2. FaceAPIで各ユーザが設定しているプロフィール写真に顔が写っているかどうかの確認を行います。
3. 顔が写っているユーザと顔が写っていないユーザをフォルダごとに分類します。
前提知識
必要なステップは大きく分けて3つ
- SlackAPIのTokenKeyの作成
- FaceAPIのSubscriptionKeyの作成
- プログラムの実装
プログラムで利用するキーの作成
SlackAPIのTokenKeyの作成
Slackのサイトにアクセスして、画面中央にある「レガシートークン」のリンクをクリックします。
「Legacy tokens」画面では「Legacy token generator」の項目にあるボタンをクリックしてください。
最後に作成されたトークンキーをメモ帳などにコピーしてください。(プログラムで使います)
FaceAPIのSubscriptionKeyの作成
AZUREポータルのサイトにアクセスして、
「新規」のメニューから「AI + Cognitive Services」、「FaceAPI」の順にクリックします。
「FaceAPI」作成画面では「Name」を入力して、「場所」を「東アジア」にします。
(注意:場所はプログラムのAPIエンドポイントに関係してきます)
「価額レベル」は「価額の詳細を表示」をクリックすればプランごとのコール回数制限や金額が表示されます。
「Resource group」は新規または既存のものを選択してください。
最後に「作成」ボタンをクリックするとFaceAPIのサービスが作成されます。
作成された「FaceAPI」のサービスを開いてメニュー欄の「RESOURCE MANAGEMENT」から「Keys」をクリックします。
表示されたサブスクリプションキーをメモ帳などにコピーしてください。(プログラムで使います)
プログラムの実装
SlackAPIの実行プログラムの作成
SlackAPIの「users.list」methodを利用してユーザのリストを取得します。
FaceAPIの実行プログラムの作成
FaceAPIの「Face.Detect」methodを利用して画像内の顔情報を取得します。
プログラムを実行する上で必要になるNUGETを追加してください。
Microsoft.ProjectOxford.Face
メインプログラムの作成
SlackAPIとFaceAPIの実行プログラムを使ってメインプログラムを実装していきます。
プログラム内の「設定ファイルの読み込み」の変数に対しては、
「Step1」で用意した「SlackAPI」の「TokenKey」と
「Step2」で用意した「FaceAPI」の「SubscriptionKey」を指定してください。
まとめ
今回はSlackのプロフィール写真が顔の写真になっているかどうかをFaceAPIで判断させてみました。
実行してみると分かるのですが、
FaceAPIはかなり高い精度でプロフィール写真が顔の写真になっていないことを見つけたり、
また、Slackのデフォルトアイコンが利用されていることを見つけてくれます。
Cognitive ServicesのFaceAPIは顔の検出以外に顔から人物の認証まで行うことができます。
次回はこのプログラムを更に拡張させて、プロフィール写真の顔写真を利用して人物登録を行います。