PyLadies Tokyo 2周年パーティに間に合わなかったかわいそうなシステムの話。

どーも。まーやです。今日はタイトルの通り。Pythonで簡易WEBシステムを久々に作ってみた話です。

2016年10月22日に、PyLadies Tokyo – 二周年記念パーティがありました。 私は当日関東におらず、欠席だったんですが、私もどうにかお祝いできないかなーと思って、簡単なWEBシステムの作成を開始しました。

  • 写真をアップロードする
  • アップロードされた画像がEmotion APIの規定サイズより大きい場合は 4096×4096 にリサイズ
  • Azure Cognitive Services Emotion APIの実行
  • 得られた結果を累計し、一番大きな数値を持った感情名を表示&累計された感情指数をグラフ化

と、Emotion APIをいじってみたかったというのもあるけれど、基本的には技術的なLTとかにする気はなく、その場で集合写真とってもらって、「ほら今年もみんな笑顔でハッピーだね!」てな感じで場が盛り上がってくれればいいなぁ・・・くらいの気持ちで作成してました。

システム自体は結構前に出来上がってたんです。資料も実はこっそり作ってました(自分がその場にいないので、ページをめくればストーリーになるやつを)。これです↓

①写真を選択して・・・実行!
92388ee8-6125-aa7b-0fe2-4f0452734007

②Emotion APIから取得した感情情報を足し上げて、一番数値の高かった感情を表示(ちなみにここに上げてる写真は1周年パーティの時のもの。今年はどうやら撮らなかったらしい・・・)
7c46bcbb-df12-55d1-959c-d3524a01d785

だがしかし。
クラウドにアップロードするのを忘れていた。そして出先でなんとWi-Fi難民だった。

なんということでしょう。その場で写真を撮って遊んでもらうことが目的だったのに。それができなくなってしまったのです。悲しみに暮れてこっそり飛び込みLTに参加することを断念しました。。。

が。個人的には初チャレンジだったライブラリやAPIの利用ばかりで楽しかったので、ここに使った技術とその感想だけしたためておきたいと思います。

Emotion API

今回のシステムを考えるきっかけとなったサービス。Microsoft Azure 内のCognitive Services の一つとして公開されているAPIです。APIドキュメントAPIテストコンソールの両方が用意されているのは心強かった。実際触ってみても、難しいことはなにもありませんでした。
今回は、複数人の表情データを取得した場合はそれぞれの感情値を単純にSUMしました。

利用時に気を付ける制限は以下の通り。

  • 検知できる顔の数は1枚の画像につき64人まで
  • 取得できる感情は8種類
  • 利用できる拡張子は4種類。ただしGIFについては最初のフレーム画像のみで判定します。
    •  JPEG
    •  PNG
    •  BMP
    •  GIF
  • 画像容量は4MBまで
  • 画像の大きさは 36×36 ~ 4096×4096 まで
  • 返却されるJSONオブジェクトは顔の面積順にソートされている

ちょっと気になったのは、例えば今回のように「写真全体としての感情判断」を取得したい場合は、今回のように各感情を足し上げるだけでよいのか、それとも得た結果から重みづけや再分析をするべきなのかは分析初心者な私には判断つきませんでした。写っている顔面積などで重みづけしても面白いかもしれない・・・?!

今回使った静止画版Emotion APIのほかに動画版Emotion APIもあるので、次回機会があったらこちらを試してみたいと思います。

Tornado

PythonのWEBフレームワークであり非同期通信ライブラリです(今回は単純にWEBフレームワークとして利用しています)。Facebook製で軽量。Python2系でも3系でも動作OKです(今回はPython3系で作成しました)。テンプレートエンジンが入っているので、画面にPythonから値を渡したい時は指定の記法を行えば引き渡して表示されることが出来ます。個人的に御気に入りのフレームワーク。PyLadies Tokyoのワークショップでも利用したフレームワークなので思い入れあります。

Pillow

Python Imaging Library (PIL)の fork プロジェクトで、左記読んで字のごとくPythonの画像処理ライブラリです。

>pip install pillow

だけで使えるようになっちゃうので大変便利です。そして画像をいじるライブラリの割にわかりやすい感じで個人的には好みでした。作成途中で楽しくなって横道それて遊んでいたのは内緒の話。今回は画像のリサイズ機能のみ使用しましたが、色の反転や画像の結合、テキストの書き込みなんかもできてしまう万能ライブラリです。

Chart.js

グラフ描画JSです。動きがかわいいこと、使い方がシンプルなこと、描画できるグラフの種類がとても豊富なので気に入っています。ラベルをクリックすることで表示のon/offが切り替えられるんですよ。

全部表示した場合↓
859d1fdc-d440-e897-49ac-7e5dac56efb0

happinessとneutralを非表示にした場合↓
6abf2651-dc83-06d5-0a02-aab65374be1b

以上です。PyLadies Tokyo 生誕2周年、おめでとうございました。来年はちゃんとパーティに参加するぞーーー!

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中