Goalist Developers Blog

Azureの顔認識APIで感情分析!社内の幸福ランキングを作成する

こんにちは、開発部のイイオです。

機械学習、はやりですね。
ゴーリスト社内でもモデル作成に勤しむ青年の姿が見受けられます。
でもパンピ〜の我々は、機械学習でいったいどんなことできるのか、手っ取り早くその果実を味わいたいですよね。

というわけで
Microsoft Azure が提供している顔認識の分類器を使って、会社の人々の幸福度を測定してみました。

今回計測にかけたのは、採用のために人事がやってるブログのこちらの記事です

blog.goalist.co.jp

上記ブログの写真から人間の顔を検出し、以下の8つの感情に分類します。
anger, contempt, disgust, fear, happiness, neutral, sadness, surprise

手順

1. APIキーを取得

API利用のためのキーを取得します、無料のゲストでOK
1分あたり20回のリクエストが可能です。

azure.microsoft.com

2. プログラムを書く

こんなかんじで、、

Python界に生まれて3日目くらいの人間が書いているので、お作法的にnot goodかもしれません
間違ってる部分あったらこっそり教えてください〜

やってることは

  1. 人事ブログ記事をクロール
  2. スクレイプして画像のURLを入手
  3. Face API に投げる
  4. 顔認識された座標で画像を切り取ってローカル保存
  5. 感情分析の結果をCSV出力

プログラム全体はこちら

3. 実行する

画像フォルダに切り出されたみんなの顔が増えていくのは正直わろうた

結果

同率1位

喜び以外の感情が全く検出されない、
フルハピネスなお祭り野郎はこいつらだ!!!

f:id:y-iio:20181115165702j:plain HRogの顔、営業部を統括する男

anger contempt disgust fear happiness neutral sadness surprise
0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0


f:id:y-iio:20181115165103j:plain お調子者の美女っていうのも良いですね

anger contempt disgust fear happiness neutral sadness surprise
0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0


f:id:y-iio:20181115181623j:plain インドからの刺客

anger contempt disgust fear happiness neutral sadness surprise
0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0


f:id:y-iio:20181115165800j:plain 石油王ではない ※参照

anger contempt disgust fear happiness neutral sadness surprise
0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0


f:id:y-iio:20181115181642j:plain こう見えてムッッッッキムキの兄さん

anger contempt disgust fear happiness neutral sadness surprise
0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0


f:id:y-iio:20181115181709j:plain ちからつよそう

anger contempt disgust fear happiness neutral sadness surprise
0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0


f:id:y-iio:20181115181731j:plain 天パ

anger contempt disgust fear happiness neutral sadness surprise
0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0


f:id:y-iio:20181115181821j:plain ドラえもんかな?

anger contempt disgust fear happiness neutral sadness surprise
0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0



2位〜 ハピネス度92.8〜99.9%のみなさん

f:id:y-iio:20181115182643j:plain こんなに破顔しているのに0.1%の悲しみが検出される"闇"

anger contempt disgust fear happiness neutral sadness surprise
0.0 0.0 0.0 0.0 0.999 0.0 0.001 0.0


f:id:y-iio:20181115182932j:plain ちょっと笑顔が足りなかったですかね

anger contempt disgust fear happiness neutral sadness surprise
0.0 0.0 0.0 0.0 0.995 0.0 0.005 0.0


f:id:y-iio:20181115183101j:plain 見切れがたたったか

anger contempt disgust fear happiness neutral sadness surprise
0.0 0.0 0.0 0.0 0.973 0.011 0.021 0.0


f:id:y-iio:20181115183436j:plain 曇りなき(まなこ)です

anger contempt disgust fear happiness neutral sadness surprise
0.0 0.0 0.0 0.0 0.953 0.046 0.0 0.0


f:id:y-iio:20181115183706j:plain 知的な美女というのも良い

anger contempt disgust fear happiness neutral sadness surprise
0.001 0.0 0.0 0.0 0.928 0.071 0.0 0.0



喜び以外の感情と判定された中間層!

f:id:y-iio:20181115184120j:plain 心の中では全く笑っていないのかもしれません

anger contempt disgust fear happiness neutral sadness surprise
0.0 0.004 0.0 0.0 0.202 0.794 0.0 0.0


f:id:y-iio:20181115184238j:plain あまり感情が表に出ない文系エンジニア

anger contempt disgust fear happiness neutral sadness surprise
0.001 0.001 0.0 0.0 0.122 0.866 0.011 0.0


f:id:y-iio:20181115184724j:plain 真面目な話をしているので…

anger contempt disgust fear happiness neutral sadness surprise
0.0 0.0 0.0 0.0 0.049 0.938 0.012 0.0


f:id:y-iio:20181115184854j:plain 菩薩

anger contempt disgust fear happiness neutral sadness surprise
0.0 0.0 0.0 0.0 0.002 0.981 0.016 0.0


f:id:y-iio:20181115185112j:plain 下向きの顔だとハピネス度が下がるのかもしれません

anger contempt disgust fear happiness neutral sadness surprise
0.001 0.0 0.0 0.0 0.0 0.833 0.166 0.0



最下位の中からPick UP!

f:id:y-iio:20181115182105j:plain 99.9%の無と0.1%の悲しみをたたえたフェイス

anger contempt disgust fear happiness neutral sadness surprise
0.0 0.0 0.0 0.0 0.0 0.999 0.001 0.0



感想

Pythonで何かしら動く、ふざけた楽しいプログラムを作りたいという気持ちで気軽に始めましたが
スクレイプ、画像処理、外部API利用、ファイル出力と色々試せて有意義でした。有意義でした!
決して、決して仕事の時間中に遊んでいたわけではないのですよ!