20190816のTensorFlowに関する記事は1件です。

機械学習×Scratch!? 使ってみた

先日六本木ヒルズで行われた子供向けScratchのワークショップが面白そうだったので、見学させて頂いた。お題目は「機械学習×スクラッチで、どこにもないアプリを作ろう」で、画像認識ができる拡張機能を使ったワークショップだった。それがなかなかおもしろかったので、備忘録として「使ってみた」を以下に書いていきたいと思う。  

ML2Scratch

Scratchについては今回は説明を省略する。

今回利用する拡張機能であるML2ScratchはPCに接続されたカメラから画像を取得してラベル付け、学習を行い、画像認識を行う。そこにScratch特有のGUIプログラミングを織り交ぜることができるものになっている。

ml2scratch.png

準備

Chromeブラウザで、ML2Scratchを使えるようにカスタマイズされたScratchにアクセスする

左下の+マークから拡張機能を追加する
1.png

ML2Scratchを選択する(EV3を動かす拡張機能もあるよ!ステマ)
2.png

以下のように拡張ブロックが追加され、PCに接続されているカメラ画像が右側の実行画面に映される
3.png

ラベルラベル1の枚数ラベル2の枚数ラベル3の枚数ブロックの横のチェックボックスにチェックを入れて実行画面に表示する
4.png

これで学習前の準備は整った!  

カメラ画像の学習

ここからカメラ画像を収集して学習させていくわけだが、やり方はとっても簡単だった。小学生でも1回教えてもらえば扱えるレベルまで落とし込まれている。

以下が今回作るモノについてだ。  

  • なにも写っていない時、ラズパイが写っている時、SDカードが写っている時を認識させる
  • 上記の3パターン時にそれぞれネコが吹き出しでコメントする

では、さっそく画像の学習を行なっていく。

まずは、なにも写っていない状態を学習させるので、カメラ前方はそのままにして、ラベル1を学習するブロックをクリックする。この操作で「何もない風景」をラベル1として撮影し学習させる。
目安としては20回程度学習させるのが良いらしい。撮影回数は実行画面のラベル1の枚数として表示されている。(このためのチェックボックスだったのだ)

5.png

次に「ラズパイ(RaspberyPi)」をカメラに映し、同様にラベル2の枚数が20になるまでラベル2を学習するブロックをクリックする。この際、ラズパイなどモノはいろいろな位置に動かして撮影すると認識率が向上する。
13.png

上記と同様に「SDカード」をカメラに映して、ラベル3の枚数が20になるまでラベル3を学習するをクリックしていく。
9.png

たったこれだけで学習が完了する。

カメラ映像からの認識

学習を行うと実行画面のラベルの数字が各状況に合わせて変動するのがわかる。何も映していない時は「1」、ラズパイを映している時は「2」、SDカードを映しているときは「3」と表示して各状況を識別しているのがわかる。
movie.gif

各状況に合わせてネコにコメントさせるためにラベルのどれかを受け取ったときを配置し、どれかを1~3に変更し、ネコがコメントするブロックをそれぞれ配置する。プログラムをみるとわかるが、それぞれ

- なにも映していないときは「なにもねえ・・・」
- ラズパイを映しているときは「ラズパイがあるぞぉ」
- SDカードを映しているときは「こいつぁSDカードって言うんだぜ」
と言うように設定。

movie2.gif

まとめ

いい感じに学習部分をブラックボックス化できていて、かなり小学生でも使いやすい感じになっている。見学させて頂いたワークショップでも画像認識でキャラクターを動かしたり、音楽を流したり様々な工夫が見られた。  
拡張ブロックの中身としてはTensorFlow.jsを用いて実装されている。開発者の石原氏がGitHubにソースコードを公開しているので、興味があれば確認してほしい。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む