今回は、遊戯王カードとデュエルマスターズカードを見分けるAIを作ります。
プログラミングには、ML2Scratchという機械学習拡張機能が扱える特別なScratchを使います。
Scratchを使ったことのある人なら、小中学生でも簡単に機械学習プログラムが作れてしまうのが、ML2Scratchのすごいところです。
動画で簡単な手順を紹介しております。
本記事では、動画の内容に加えて、プログラムの中身の解説もします。
動画はこちら
カード判別AIを作ろう
ML2Scratchを開こう
https://stretch3.github.io/ をChromeで開きます。
通常のScratchとほとんど同じ画面が開きます。(ログインやウェブ上への保存等は今のところできません。)
使い方も通常のScratchと同じです。
違うところは、拡張機能でML2Scratchというものが選べます。これを追加することで、機械学習用のブロックが扱えるようになります。追加しましょう。
プログラムしよう
プログラムしていきます。ここでは、今回使うブロックについてだけ解説します。以下の図と同じブロックを用意しましょう。
これらが今回使うブロックです。順に説明します。
まず、左のブロックを実行しましょう。「ビデオを入にする」でwebカメラを起動します。「ビデオを左右反転にする」ことで、画像が反転してしまうのを防ぎます(任意)。「ステージの画像を学習判定する」で、学習するターゲットがステージに移されているものになります。
今回は、デュエルマスターズと遊戯王の2種類のカードを学習するので
「ラベル1を学習する」「ラベル2を学習する」ブロックを使います。
(ラベルの枚数が表示されるようにチェックをつけておくと学習した枚数が確認しやすいです。)
ステージをカスタマイズしていきます。図のように、カードの部分だけが映し出されるように、四角くくり抜いたスプライトを画面に配置しましょう(色は何でもいいです)。また、デュエマと遊戯王のロゴもスプライトとして追加します。
これで学習の準備が整いました。
ディエルマスターズカードをカメラに映るように置いて、「ラベル1を学習する」ブロックを押しましょう。
今回は、20枚の学習用カードを用意したので、この作業を20回繰り返します。
終わったら、次は遊戯王カードです。
遊戯王カードも学習用20枚を用意したので、カメラに映るように配置し「ラベル2を学習する」ブロックをクリック、これを20回行います。
さて、これで学習完了です。
ちゃんと判定できるか確かめていきましょう。
判定プログラム
判定プログラムを作りましょう。まずは、↓のブロックをクリックします。
これで、1秒ごとに判定をしてくれます。
デュエルマスターズカードだと「ラベル1」、遊戯王カードだと「ラベル2」が送られてきます。わかりやすいように、対応するロゴが光るようにしましょう。
周りを黄色くしたコスチュームを追加します。(デュエマロゴも同様)
以下のプログラムを追加して、ラベル1、ラベル2が送られてきたら、対応するロゴのコスチュームが光ったものに切り替り、0.5秒後に元に戻るようにします。
これでプログラム完成です。
実行してみよう!
実行の様子は動画を見てもらった方がわかりやすいと思います。
このように、判定結果と対応するロゴが光ります。
テストデータ20枚(遊戯王10枚、デュエマ10枚)について試したところ、
20枚中19枚を見事的中させました!
簡単に作れる割に高精度に判定できて驚きです。
以上となります。最後までお読みいただきありがとうございました。