こんにちは、テクニカルディレクターのキー坊です。
皆さんはTeachable Machineってご存じですか? Googleが無料で提供してくれている機械学習をWebから行うことができるサービスです。
機械学習をWebからできるってものすごいことで、しかも学習したモデルのダウンロードなどもできるので、アプリを作ったりサービスに組み込んだりもできそうです。しかも無料!
技術者じゃなくても「一回使ってみよっ!」ってなりますよね。そして、チョット遊んでみたんですが、なかなかの精度で感動しました。
なので、本当はこれを使って毎度の如くNode-Redと組み合わせて何か作ってみたいなーと思ったんですが、現状は画像認識しかサポートしていませんでした
(僕としては音声認識を使いたかった……残念)。
ということなので、気を取り直してTeachable Machineを使って「最強のじゃんけんマシンを作る」というところまでをやれたらなーと思います。
それでは、早速作ってみましょー!!
準備
- 準備するもの
-
- Webカメラ
- マイク(オプション)
今回は画像認識を使うので「Webカメラ」が必要です。そして、この記事でのご紹介はしませんが音声認識を使ってみたい方は「マイク」も必要です。
ノートPCなら大体どちらもついていると思うので、ノートPCで試してみると事前準備が必要なくて楽かもしれないです!
実装
まずはブラウザでTeachable Machineを開きます。
- 「使ってみる」というボタンを押します
- 次のページで「画像プロジェクト」、「音声プロジェクト」、「ポーズプロジェクト」を選択できます。今回は「画像プロジェクト」を選択します
- 「標準の画像モデル」と「埋め込み型の画像モデル」が選択できます。今回は「標準の画像モデル」を選択しましょう
- 写真のようにクラスを登録する画面が表示されます
今回はじゃんけんですので、「グー」を認識したら「パー」のように、出された手に対し勝つ手を返します。
クラス1: 「パー」という名称で「グー」を登録
クラス2: 「グー」という名称で「チョキ」を登録
クラス3: 「チョキ」という名称で「パー」を登録
上記のように登録します。つまり、認識の精度が高ければ絶対勝てないというわけです(笑)。
逆に負ける手を登録すれば、「忖度じゃんけんマシン」の出来上がりですね(笑)。
おまけにクラス4に自分の顔でも登録して「じゃ〜んけ〜〜ん」って感じに登録しておくと、いい感じにじゃんけんを初めてくれます。このあたりはお好みでどうぞ!
登録の仕方はクラスについている「ウェブカメラ」ボタンを押して表れる「長押しして録画」ボタンを押しながら、ウェブカメラに認識したいものを撮影します。できるだけ色んな角度で撮影しておくとより精度をあげられそうです。
全部のクラスに登録ができたら、トレーニングにある「モデルをトレーニングする」のボタンを押します。1、2分くらい待つとトレーニングが完了し、右側のプレビューでトレーニングしたモデルでテストできます。
写真は「グー」を出したところですが、ちゃんと「パー」と言ってるので勝ってますね(笑)。学習モデルが甘いと間違える回数が増えるので、そういうときは撮影を工夫してみてください。
では、これをエクスポートしてみましょう。プレビューの上部に「モデルをエクスポートする」というボタンがあるので押します。今回はWebアプリにするので、Tensorflow.jsタブを選択します。
- 学習したモデルをアップロードしますト
- アップロードが完了すると、モデルのリンクが生成されます
- 下のほうにスニペットが出てると思うので、それをコピーしてください
- 適当なエディタを開き貼り付けたら、お好きな場所に保存してください
- 保存が完了したら、ブラウザでそのファイルを開いてみましょう
すると、写真の様にちゃんと画像認識でじゃんけんしてくれます。やばい、全然勝てない(笑)。
まとめ
簡単に機械学習が扱えるので、アイディア次第ではもっと面白いことができるかもしれません。
僕が本当にやりたかったこととしては、いつものようにNode-Redと連携して音声で遊んで見たかったんですよねー。
キー坊:ブラウニーよ起動せよ!
Google:マスターによる起動コマンドを受理。直ちに起動フェーズへの移行を開始。
Google:第3, 第4部位の起動に失敗。迂回路を形成……成功しました。
Google:全部位の起動を確認。独立型家事支援電子精霊ブラウニー起動します。
Google:おはようございますマスター。ご命令をどうぞ。
キー坊:最近のニュースを頼む。それからコーヒーを。
みたいな感じで、「OK Google」のウェイクワードなしでコマンドが出せたらこういう中二病くさいこともはかどるなーと。あとは指パッチンの音を音声認識して、ウェイクワード代わりにしたり(笑)。
まあ上のはネタですが、家には時計もなければ、テレビもないので時間と天気を知りたいと思ったとき、「OK Google」と2回言うのが面倒だったりします。それ用のワードも作れるんですが、状況によって組み合わせが変わったりするので、フィットするときとしないときがあったり……このあたりをもっと自然な感じで拾い上げてくれたらいいんだけどなーと思ったんですが、上でも書いた通り現状では画像認識しか対応しておらず、難しそうです。
対応してくれるのを待つか(多分しない)、他のいい感じのサービスを探すか(多分ない)、自分で作るか(時間isどこ?)、なんとも非常に悩ましいところです。この記事を見て「いいね!」と思ったあなた!! 是非作ってくれると嬉しいです(笑)。
また、何か記事にしたいことを思いついたら筆を取ってみようと思います!