「Scratch(スクラッチ)」は、子ども向けプログラミング環境として広く日本でも知られるようになりました。
このScratchを独自拡張し、機械学習を扱えるモジュール(画像認識、音声認識、姿勢検出)が公開され、最近ホットです。
Scratchではじめる機械学習 ―作りながら楽しく学べるAIプログラミング (オライリー・ジャパン)
「子供の自由研究にどうでしょうか?」
と書いてあるセミナー等を見かけるが、「自由工作」なら分かるけど「自由研究」にはどうやったらなるんだろう?
この記事の「ねほり度」 ★★☆☆☆(独自記事はなく、深堀り内容は他のブログ以下)
ML2Scratchとは何か?
石原淳也氏(つくる社LLC)と石原正宗氏が、2018年10月20日に六本木アカデミーヒルズで開かれた「Scratch 2018 Tokyo」で公開したライブラリです。
Scratch 3.0上でTensorFlow.jsとScratchXを使って機械学習の機能を実現しています。
ML2Scratchは、Webカメラでいくつかの画像を撮り、ラベルを付けて学習すれば、似たような新たな画像を、学習結果をもとに分類することができます。
キャプチャした画像はサーバーに送られることはなく、学習および分類はすべてブラウザ上で行われるのが特徴です。
利用するには、石原淳也氏が用意している独自環境の Scratch 3.0 を使います。
まずは、下記にアクセスしてください。
次の画面が開きます。
ここで、「左下の+マーク」から拡張機能を追加します。
左上の「ML2Scratch」を選択してください。
ブロックの組み立て方
まず、ラベル 、ラベル1の枚数、ラベル2の枚数、ラベル3の枚数ブロックの横のチェックボックスにチェックを入れて実行画面に表示します。
学習させる
例えば、「チョキ」を学習させてみるには次にような手順を行います。
まず、カメラ前方に「チョキ」の手を写します。
その状態で「ラベル1」を学習するために「ラベル1を学習する」をクリックします。
この操作で「チョキ」の手を「ラベル1」として学習します(少し待たされます)。
この処理を繰り返し、安定的に学習させるために目安としては20回程度行いましょう。
学習回数は、実行画面のラベル1の枚数として表示されています。
この際に、手の位置、向き、大きさ、角度などが異なる形を学習させるのが良いでしょう。
これを、「パー」「グー」などの手の形でも繰り返します。
今回は、次のような順序で学習させています。
- ラベル1:チョキ
- ラベル2:グー
- ラベル3:パー
- ラベル4:背景
動かしてみる
まだ「公開」サービスは対応していないので、コードだけ。
早く実験してみたいので、プログラム部分は非常に適当です。
ネコが「じゃんけん!」と言い、「パー」を出せば「チョキ」を出すという、後出しジャンケンで勝つプログラムです。
認識精度が80%程度なので、時々負けることもあるため、なんとなくイカサマしてないように感じるところが逆に子供にはウケるかもしれません。
データの保存
これを知らずに「保存」したために、一生懸命学習させたデータが全て消えてました。
ML2Scratch では、学習したモデルを「学習データをダウンロード」ブロックを使うことで、PC上にダウンロードして保存しておくことができます。
まとめ
非常に簡単だけど、自動的に保存できたりマニュアルやサンプルを見てみたいので、MITに公式にサポートして欲しいと思います。
ただし、公式がサポートしていないのに、書籍が出たりセミナーで講師が紹介して使っているなど「機械学習」に対する過熱度は凄まじいです。
ここまでくると、プログラミングを学習経験者で、
「機械学習使ったことねーぜ」
「機械学習って、ちょっと胡散くせー」
という人がいたら、デジタル時代に「アナログと比べて意味不明」・・・・と言っているシニアに等しいかもしれない。
もう機械学習の数学的な知識などが必要となってくる実装部分はブラックボックスのまま、それをアプリケーションにどう応用するか、あるいはどう楽しむかを考えることができるフェーズに移っています。