アオカケスの鳥かご

日々の出来事を綴っていきたい

FaceAPIで表情を採点するアプリケーション

2019年11月3日(日)と11月4日(月)に大学で学園祭がありました。

今年は少しだけやる気があって学園祭で何をやるか1週間以上前から考えていたのですが、実装しては諦めて中々最後まで形になるものがありませんでした。

そんな中出来上がったのが「FaceAPIで表情を採点する」ものです。


中核となる部分は去年のやつとほぼ同じ。
aokakes.hatenablog.com


FaceAPI

過去記事でも紹介していますが、FaceAPIは画像を投げると様々なパラメータを返してくれます。

その中に「emotion」というものがあり、「笑顔」、「幸福」、「真顔」、「悲しみ」、「驚き」、「怒り」、「軽蔑」、「嫌気」、「恐怖」という項目で数値を出してくれます。
今回はこれらの数値をそのまま流用することで、表情を採点するアプリケーションを実装しました。

用意したもの

  • RasberryPi 3 modelB
  • Webカメラ(BSWHD06MBK)
  • キーボード

実装

手順

  1. OpenCVでリアルタイム顔認識して、顔を認識したら顔に赤枠を描画
  2. 赤枠が表示されている間にエンターキーを押させる
  3. 画像をバイナリでFaceAPIに送信
  4. 結果をJSONで取得
  5. レーダーチャート作成
  6. 描画

前半部分(1~4)

手順の1~4は去年のやつをほぼそのまま使っているのでとくに何もありません。

表情が9種類あるので、9回写真を撮るぐらいの変更しかありません。

レーダーチャート作成

レーダーチャートを一番こだわりました。

pythonでmatpotlibを使ってレーダーチャートを作成していたのですが、普通にグラフを表示するだけだとつまらないのでアニメーションさせようと思ったら一筋縄ではいかなかったりして結構試行錯誤してました。

レーダーチャートの作成はまた別に記事を書こうかと思います。

なお、FaceAPIで取得した性別をもとにレーダーチャートの色を変えるようにしています。
男性が青で女性が赤です。


レーダーチャートのはこんな感じで出力されます。
f:id:aokakes:20191105141050p:plain

私の最高スコアです。
恐怖はどうあがいても点数が上がりませんでした。

ソースコード

githubにも置いてます。
github.com

色々盛り込んでいたり、コメントを書きまくったりでちょっと長くなっています。

感想

総製作時間は15時間ぐらいでした。
レーダーチャートに無駄にこだわり過ぎています。しょうがない。


学園祭では1日目の午後だけ展示していました。

完成して満足してしまったので、とくにセールスすることもなくほぼずっと放置していたおかげであまり人の目に触れることもなく役目を全うしました。
ごくわずかな遊んでくれた方、ありがとうございました。


そして、撤収しているときに「これで学園祭で何か展示することも無くなるのか...」なんてことを考えて、学生生活が終わることを実感しました。


あとは卒論だけです。年内に終わるように頑張ります。