micro:bit CreateAI(加速度センサー編)
AI(Artificial Intelligence/人工知能)の一つである「機械学習モデル」を、micro:bitで手軽に扱えるようにした「micro:bit CreateAI」の使い方を紹介します。micro:bitに搭載されている加速度センサーを使うことで、micro:bitの動きを機械学習モデルで学習して、プログラミングに活用できます。機械学習モデルについては「第17章 micro:bit CreateAI」で解説しています。
1.用意するもの
micro:bitを身体に装着して自由に動き回れるように、加速度センサーで取得された値は、無線通信によってパソコンへ送信されます。パソコンのBluetooth機能の有無によって用意するものが変わります。以下に、3つの構成を紹介します。
Bluetooth機能あり
パソコンにBluetooth機能がある場合はこちらの構成となります。コードレスのため、micro:bitを身体に装着して、自由に動き回れます。
Bluetooth機能なし
パソコンにBluetooth機能がない場合はこちらの構成となります。micro:bit間の無線通信を利用してパソコンと接続します。コードレスのため、micro:bitを身体に装着して、自由に動き回れます。
とりあえず手軽に試したい場合(Bluetooth機能必須)
ちょっと試してみたい場合はこの構成がおすすめです。Bluetoothを利用した無線接続ですが、電源の供給をUSBケーブルで行います。USBケーブルで接続するため、あまり大きな動きはできません。
2.micro:bitとmicro:bit CreateAIツールの接続
micro:bit CreateAIにアクセスして「Get started」をクリックします。
「New session」をクリックします。
「Connect」をクリックします。
パソコンのBluetooth機能を使う場合は、このまま「Next」をクリックします。
パソコンにBluetooth機能がない場合は「Connect using micro:bit radio instead」をクリックして、以降画面の指示に従って進めます。
micro:bitとパソコンをUSBケーブルで接続して「Next」をクリックします。
「Next」をクリックします。
一覧からmicro:bitを選択して「接続」をクリックします。
micro:bitとmicro:bit CreateAIツールの接続が成功したら、データー収集用のプログラムが自動的にmicro:bitへダウンロードされます。完了するまでしばらく待ちます。
USBケーブルを抜いて、電池ボックスを接続します。電池ボックスにスイッチがある場合はオンにします。「Next」をクリックします。
ちょっと試してみたい場合はUSBケーブルを接続したままにします。電池ボックスは不要です。
micro:bitのLED画面とmicro:bit CreateAIツール上に表示されているパターンが同じであることを確認します。異なる場合はツール上のパターンを操作して同じにします。「Next」をクリックします。
「Next」をクリックします。
一覧からmicro:bitを選択して「ペア設定」をクリックします。
Bluetooth接続が成功すると、micro:bit CreateAIツールに戻ります。
画面下に表示されている「Live data Graph」エリアには、加速度センサーで取得した値がリアルタイムに表示されます。加速度センサーは、左右(X軸)・前後(Y軸)・上下(Z軸)の三方向にかかる加速度を計測しているので、それぞれの値が表示されています。micro:bitを動かして、グラフがどのように変化するか試してみましょう。例えば、micro:bitのLED画面を上にして上下に振ると、Zの値が大きく変化するようすが観察できます。
micro:bitとmicro:bit CreateAIツールの接続が完了しました。続けて、データーの収集を行います。
3.データーの収集
本記事では、micro:bitのLED画面を上にして「静止している状態」「小刻みに揺らした状態」「落とした状態」のそれぞれで得られる加速度センサーの値を収集します。
まず最初に、データーを収集するエリアに名前を付けます。「Name of action」をクリックして「静止している状態」と入力します。
「+ Add action」をクリックすると、エリアが追加されるので「小刻みに揺らした状態」と入力します。もう一つ追加して「落とした状態」と入力します。
3つのエリアができました。それぞれにmicro:bitの動き(加速度センサーの値)を記録します。まず「静止している状態」の右側にある「Record」をクリックします。
3、2、1、Goとカウントダウンが始まります。
「Recording」と表示され、バーが伸びている間、加速度センサーの値が記録されます。およそ1秒間です。この間にmicro:bitを動かしましょう。
記録された値がグラフで表示されます。タイミングがずれたり期待する値でない場合は×印をクリックして削除します。
機械学習モデルの学習には、最低3回分のデーターが必要です。3回分記録すると「At least 3 required」という表示が「3 samples recorded」に変わります。
同様にして「小刻みに揺らした状態」「落とした状態」のデーターをそれぞれ3回分収集します。もちろん、3回より多くデーターを収集することもできます。
「Record」の右側にある「︙」をクリックすると「Record 10 samples」「Record for 10 seconds」と表示されます。「Record 10 samples」はそれぞれカウントダウンしながら連続して10回分のデーターを記録することができます。また「Record for 10 seconds」は、最初だけカウントダウンが行われ、その後連続して1秒×10回分のデーターを記録します。
それぞれ3回以上データーを記録すると「Train model」が有効になり、クリックできるようになります。
以上で、機械学習モデルの学習に必要なデーターの収集が完了しました。
4.機械学習モデルの学習とテスト(推論)
学習
収集したデーターを元に、機械学習モデルの学習を行います。
「Train model」をクリックします。
「Start training」をクリックします。
学習が完了するまでしばらく待ちます。
テスト(推論)
学習が完了するとテスト(推論)画面になります。この画面では、それぞれの動作(Action)に対する機械学習モデルの確信度(Certainty)が表示されています。確信度には「Recognition point」というパラメーターがあります。確信度がその値以上、かつ最大値のものが一致していると認識されます。初期値は80%です。初期の状態では、すべての確信度が80%未満の場合は「不一致(unknown)」となります。認識の結果は右下に表示されます。
実際にmicro:bitを動かして確認してみましょう。小刻みに揺らした場合、確信度が95%となっています。
落とした場合は91%です。なかなかいい結果が出ていますね。
ところが、静止している状態では確信度が78%となり、正しく認識されませんでした。そこで「Recognition point」を60%まで下げました。
このように、micro:bit CreateAIツール上で学習した機械学習モデルをテスト(推論)することができます。期待する結果が得られない場合は、上記のように「Recognition point」を変更したり、データー収集の画面に戻って、データーの再取得などを行います。
5.プログラミング
満足のいく結果が得られた場合は「Edit in MakeCode」をクリックします。
MakeCodeに遷移します。このMakeCodeでは、あらかじめ拡張機能として「Machine Learning」が組み込まれ、ワークスペースにはサンプルコードが書かれています。
サンプルコードは、それぞれの動作を認識したとき(ML start)にアイコンを表示するものです。「不一致(unknown)」も追加しておくといいでしょう。あとは、これまで通りプログラミングするだけです。