Azure Custom Vision を使って「ハムスターが起きているか?」を判定してみた

で発表した内容のフォローアップです。

5分厳守なガチLTは久しぶりだったので、タイムキープには特に注意しました。1分余らせるつもりがちょうど良い感じでしたが、ちょっとテンパってしまいましたね。

LT大会自体も、多種多様なネタを聞くことができてとっても参考になりましたね。 最近は特定のテクノロジー向けの勉強会・イベントしか参加してなかったので思わぬ発見ができてよかったです。

当日の録画が

にあるので、年末年始のテレビがつまらないと思う人はどうぞ。たぶんそれよりもずっと面白いです。

さて自分の発表は、

だったわけですが、かいつまんで言うと、

  • ハムスター飼っている
  • ケージの様子をライブ配信している
  • ハムスターが起きているか寝ているかを判定したい
  • Azure Custom Vision でやってみた

というものです。普段ウケを狙う事はないのですが、笑っていただけたので良かったです。

投入したデータについて

約2000枚の画像にタグ付けをしたわけですが、「ハムスターはほとんど寝ている」ので、必然的に「寝ている画像」の方が多くなります。

それをそのまま Custom Vision にぶっこんだら、Train の結果で Warning が出ました。 内容は「タグ毎のデータ量に偏りがあるから是正したほうが良いよ(意訳)」というものでした。

その後機械学習のデータ準備について少し学んだら同じ情報が得られたので、Custom Vision は、その辺りのアドバイスもしてくれるのだなあ、親切!と感じました。

Performance について

スライドにもあるように、タグ付けしたデータの一部を「検証用データ」としてとっておいて、学習後の Custom Vision に与えて Validation しようと思っていたのですが、 Performance というタブになんだか評価結果が出ているようでした。

各タグについて Precision と Recall のパーセンテージが出ており、それぞれ

  • Precision - 「起きてる」とタグ付けされた画像が、「起きてる」と判定された確率
  • Recall - 「起きてる」と判定された画像の内、「起きてる」とタグ付けされた画像の確率

であると、こちらも学習して理解しました。 そして、Custom Vision がこの数値を出しているということは、Custom Vision の中で検証のプロセスも行っていると判断しました。

Free(Trial)版について

無償の Free 版では、以下の 制約 があります。

  • 2 Project まで
  • アップロード画像 5000 画像まで

複数のデータセットを用意して、同時に評価したい場合は 2 project だと足りません。 その場合は Azure の有償サブスクリプションに紐づけて利用することになります。

今回は Standard(S0) という有償プランを使いましたが、数日利用していて現在までの利用料は「247円」でした。 アップロード、学習、判定の各トランザクションで課金され、額は $1 per 1,000 transactions とのことなので、判定APIが大量に利用されるようなサービスでは要注意になるのでしょう。

判定結果の所感

今回は、配信PCのスクリーンショットを教師データとして使用しました。これはアプリウィンドウのフレームやカメラ映像以外の部分も含まれたものですが、加工が面倒だったのでこのまま使用しました。 その状態でも Precision:94%, Recall:69% というのは実用に耐えられる数値ではないかと思います。

ポイントとなる箇所のみに画像をトリミングしたところ、100% に近い数値になったので、「簡単な加工をするだけでかなりの精度向上が見込める」ことも分かりました。

趣味やお仕事で使うことも増えそうな、よいサービスだなと改めて思いました。