ScratchでAI(機械学習)、「子供の科学」に大人が挑んでみた!
近ごろは猫も杓子もAIですよね。家電も教育もみんなAI。ついこないだまでトレンディだったIoTはいまいずこやら。ついに小学生が読む雑誌にまでAIが登場してきちゃったのは先日のnoteで書いた通り。
こんなことを小学生がやってのける世の中で、一応電子機器メーカーに勤務しているいい大人がついていけないようでは…との思いから、紙面に掲載されている「Scratchで機械学習にチャレンジ」に文字通りチャレンジしてみることにしました。
ここで作るものは「PON」というゲーム(下図参照)。
ただし操作はカメラに向かって指差しで行なう。このとき「指差してる方は右か左か」を機械学習で読み取らせるというのがAI的な要素。
まぁとにかくやってみよう!
えーと、なになに、ブラウザはchrome使うのね。
PCにUSB接続のWebカメラを付けてっと。
Scratchなら本当はラズパイ使いたかったけど、Webカメラの対応が怪しかったから今回はWindowsでやりました。
もともと用意されてるURLを打ち込み、そこから追加機能でML2Scratchを読み込むと、おを!Scratchに私が映っとるやん!
(ここに映っている人物はフィクションであり架空のものですw)
で、次はこのプログラムに学習させる工程。このプログラムではラベル(概念がいまひとつ分からんけど変数のようなものなのかな?)が3つあって、3つのラベルにそれぞれ異なった画像を覚えこませることで意味を持たせるといったものらしい。具体的にはこのように行ないます。
ラベル1:何もしないという画像
ラベル2:右を指差している画像
ラベル3:左を指さしている画像
私、部屋でひとり何やってるんだろう…(虚)。
この3つの画像をWebカメラに向かって、位置をずらしたり距離感変えたりして何度も何度も何度も何度も覚えこませるのです。たくさん覚えこませるほど精度が上がるので、ひたすらこの「機械学習」?を繰り返す必要があるというわけ。かくして中年オヤジは部屋に独りきりで物言わぬWebカメラに向かいジェスチャーを繰り返す。
(あとどんだけこの作業を繰り返さなくてはならないのだろうか…)
(そもそも私は何でこんなことやっているのだろうか…)
(人生とはいったい何なのだろうか…)
(…………………………………)
(隣の部屋で子供がやってる「どうぶつの森」楽しそうだな…)
ひとつのラベルあたり20~30の「学習」を終え、思わず悟りが開けそうになった私の次の仕事は、いよいよScratchでゲームの部分作り。実はScratchいじるの初めてだけど、小学生がやってるんだからまぁ何とかなるっしょ…と思ったら以外と手強かった。
「コードエリアで、左のプログラムを「Ball」に追加し」とかしれっと書いてるけど、コードエリアってどこのことよ?プログラムを追加ってどこにコード打ち込めばいいわけよ???
とはいえいろいろやっていたら何とかなった(笑)。
なるほど、これ一番左側の方は命令のアイコンみたいのが並んでて、それを画面真ん中の空いてるところにドラッグ&ドロップするとプログラムになるのですね。イメージとしてはぴゅう太をVisual Basicっぽくしたって感じでしょうか(若い人にはいっさい伝わらない例え)。
これがボールの動きプログラム。
これがパドルの制御プログラム。
ラベル2とラベル3(指の方向を示すジェスチャー)を受け取った時の処理が書かれているのが分かるでしょうか?
かくして、ついにゲームがプレイできるようになったですよ!
RUN!(画面上の緑の旗みたいなボタンをクリック)
プレイ中の様子はこんな感じ。
上に写っているWebカメラに向かってジェスチャーすることでパドルを動かし、ボールをはね返すゲームです。
なお機械学習中に雑念が入ったためか(笑)、右を差ししたときたまに左に動くときがあったりします。うむむ未だ悟りは開けぬか。
独りでは寂しいので、隣の部屋で「どうぶつの森」やってた娘を呼び出して写真とってもらいました。ゲームプレイっぽく写ってますかね?
ちなみに娘は小学生のころ学校でScratchをやってたらしく「懐かしい~!」とテンションあがってました。マジで最近の小学生は油断できん。
ということで、まぁAIってもホントに入口の部分にそっと手を触れてみた程度のもんですが、それでもこういうのはやっぱし自分でいじってみて経験するのが大事。百聞は一見に如かずっていうし。それにScratchを初めて触ったのも勉強になりました。でも私はテキストエディタでコード書いてくようなスタイルの方が好きだなぁ。
ということでレポート以上。なお本件の作業にあたりもっとも時間を要したのは、筆者がかぶっているお面を制作する時間でした。