micro:bit CreateAI(プログラミング編)
AI(Artificial Intelligence/人工知能)の一つである「機械学習モデル」を、micro:bitで手軽に扱えるようにした「micro:bit CreateAI」の使い方を紹介します。本記事では、機械学習モデルを作成したあとのプログラミングについて解説します。機械学習モデルの作成については「17-1.micro:bit CreateAI(加速度センサー編)」で解説しています。
1.サンプルコードの実行
本記事は、機械学習モデルの作成が完了していることが前提となります。まだの場合は「17-1.micro:bit CreateAI(加速度センサー編)」をご覧ください。
micro:bit CreateAIツールから「Edit in MakeCode」をクリックして遷移してきた直後はサンプルコードが表示されています。このサンプルコードは、それぞれの動作を認識したときにアイコンを表示するものです。まずは、このサンプルコードをmicro:bitへダウンロードして実行してみましょう。
「Download」をクリックします。
ダウンロードするプログラムに機械学習モデルが含まれ、micro:bitがmicro:bit CreateAIツールと接続されていなくても単体で動作する旨のメッセージが表示されます。「Next」をクリックします。
どのmicro:bitにダウンロードするか選択画面が表示されます。現在接続されているmicro:bitを選択する場合は左側のアイコン、別のmicro:bitの場合は右側のアイコンをクリックします。本記事では、同じmicro:bitを選択します。
同じmicro:bitを選択した場合、データー収集用のプログラムが上書きされるため、micro:bitとmicro:bit CreateAIツールの接続が切れます。データーの再取得などを行う場合は再接続が必要です。
ダウンロードが完了するまで、しばらく待ちます。
ダウンロードが完了したら、micro:bitを動かしてアイコンの表示が変わることを確認しましょう。
サンプルコードに「不一致(unknown)」を追加してみましょう。ツールボックスの「Machine Learning」をクリックして「on ML start」ブロックを選択します。
「show icon」ブロックを追加して、アイコンを選びます。
ダウンロードして動きを確認しましょう。「不一致(unknown)」は、すべての動作において確信度が「Recognition point」未満の状態を示しています。
2.シミュレーター
シミュレーターには「ML event」というプルダウンメニューが追加されています。
プルダウンから動作を選ぶと...
その動きを確認できます。
3.「Machine Learning」カテゴリーのブロックの使い方
micro:bit CreateAIツールから遷移してきたMakeCodeでは、あらかじめ「Machine Learning」と「Machine Learning Runtime」という二つの拡張機能が組み込まれ、ツールボックスには「Machine Learning」というカテゴリーが表示されています。さきほどのサンプルコードはこのカテゴリーのブロックを使っていました。
では、「Machine Learning」カテゴリー内のブロックを見てみましょう。
on ML start【認識したとき】
機械学習モデルが、動作を認識したときに実行されます。認識の対象はプルダウンリストからデーターの収集時に付けた名前を選択します。
サンプルコードです。それぞれの動作を認識したとき、中のブロックが実行されます。
on ML stop【認識を終えたとき】
機械学習モデルが、動作の認識を終えたときに実行されます。認識の対象はプルダウンリストからデーターの収集時に付けた名前を選択します。
サンプルコードです。それぞれの動作を認識した後、その認識を終えたとき(他の動作を認識、またはunknownとなったとき)、中のブロックが実行されます。
on ML stop【認識を終えたとき(継続時間あり)】
機械学習モデルが、動作の認識を終えたときに実行されます。認識の対象はプルダウンリストからデーターの収集時に付けた名前を選択します。このブロックには、認識していた時間(継続時間)が「duration」という変数に入ります。
サンプルコードです。小刻みに揺れている状態が終わったとき、小刻みに揺れていた時間をミリ秒で表示します。
is ML detected【認識中なら】
機械学習モデルが、動作を認識しているかどうかを真偽値で返します。認識の対象はプルダウンリストからデーターの収集時に付けた名前を選択します。
サンプルコードです。それぞれの動作を認識したとき、アイコンを表示します。いずれにも一致しない「unknown」の場合は×を表示します。
certainty (%) ML【確信度】
確信度を返します。認識の対象はプルダウンリストからデーターの収集時に付けた名前を選択します。
このブロック単体では、機械学習モデルの推論が実行されないため、確信度が取得できません。下のサンプルコードのように他のブロックと組み合わせて使います。
サンプルコードです。静止している状態の確信度を表示します。このブロック単体では、機械学習モデルの推論が実行されないため「on ML start【認識したとき】」ブロックを使ってトリガーしています。
4.データーの再収集
どうしてもうまく動かないなどデーターの再収集が必要な場合は、MakeCodeの画面左上にある「<」をクリックします。
micro:bit CreateAIツールのテスト(推論)画面に戻るので「Edit data samples」をクリックします。
データー収集画面に戻るので再収集を行います、micro:bitとmicro:bit CreateAIツールの接続が切れている場合は「Connect」をクリックして、画面の指示に従います。
5.サンプルコードの初期化
どうしても最初のサンプルコードに戻したくなった場合は、初期化することができます。ただし、作成中のプログラムは消去されます。MakeCodeの画面左上にある「<」をクリックします。
micro:bit CreateAIツールのテスト(推論)画面に戻るので、画面右下の「︙」をクリックして「Reset to default blocks」を選択します。