Switch Scienceで面白そうなボードを見つけたので買ってみました。
最近注目されているTiny MLのためのRaspberry Pico互換ボードです。
もともとマイコンのような安価なガジェットを使った高度な処理をするというところに魅力を感じていて、そのポテンシャルを触って体感したいなと思ってました。
というわけで今回は一通りデモを触るだけですがボードを動かしてみたいと思います。
開封の儀
付属品はマニュアルとスイッチ付きのマイクロUSBケーブルです。
このスイッチ付きっていうところがファームウェアを書き込む作業をするときのことを想定されていていいですね!
環境構築
こちらで紹介されている方法でRaspberry Pi 400で構築していきます(デモプログラムを動かすだけなら飛ばしてもいいですが、今後自作モデルを動かすために一応やっておきます)。
以下のコマンドでスクリプトをクローンしてセットアップしていきます
git clone https://github.com/raspberrypi/pico-setup.git ./pico-setup/pico_setup.sh
スクリプトを実行したら一度Raspberry Piを再起動してUARTの設定を完了させます。
デモプログラムを動かす
環境構築を終えたら今回使用するデモプログラムを動かしてみます。
以下のコマンドでサンプルプログラムのレポジトリをクローンします。
git clone https://github.com/ArduCAM/pico-tflmicro cd pico-tflmicro
このレポジトリにはビルド済みのファームウェアが用意されているのでいくつか試してみましょう。
micro speech
まずは特定の単語に反応するデモを試します。
書き込むときには BOOTSEL
ボタンを押しながらボードの電源を入れて書き込みモードにします。(このときにスイッチ付きのケーブルを使えばそこで電源のON・OFFができるのでとても効率いいです)
以下のコマンドでRaspberry Piのストレージとマイコンボードのストレージをマウントします。
sudo mkdir -p /mnt/pico sudo mount /dev/sda1 /mnt/pico
マウントしたら以下のコマンドで使用するuf2ファイルをコピーします。
sudo cp bin/micro_speech.uf2 /mnt/pico sudo sync
書き込みを終えると以下のようにボードに実装されたマイクに「yes」か「no」を話して認識するとディスプレイに文字が表示されるようになります。(動画ではyesしか認識してませんが頑張ればnoも認識できますw)
とりあえずWake Wordのデモしてみた
— KMiura (@k_miura_io) 2022年3月18日
小さいのにやるなコイツ(このデモはyesにしか反応しないw pic.twitter.com/AfB0gNpzS5
ちなみにスマートスピーカーのWake Word(「Alexa」とか「OK, Google」みたいに最初の声掛けのこと)の認識にはこのTiny MLが使われているそうです。
person detection
次はカメラを使って人を識別するデモを試します。
書き込みモードにしたら以下のコマンドでファームウェアを書き込みます。
sudo mkdir -p /mnt/pico sudo mount /dev/sda1 /mnt/pico sudo cp bin/person_detection_int8.uf2 /mnt/pico sudo sync
書き込んだら以下のように人の画像にカメラを向けると人の認識率が表示されるようになります。
Person detection もそこそこいい感じの精度が出てる!
— KMiura (@k_miura_io) 2022年3月18日
エッジコンピューティングの可能性を感じる(言ってみたかっただけ pic.twitter.com/q9ezRqqkGJ
画像認識は定番のデモですが、やっぱり小さいガジェットで識別するとなると楽しいもんですね。
magic wand
最後はmagic wandという魔法の杖のようにボードを振り回してそのジェスチャーを認識するデモをやってみます。
書き込みモードにしたら以下のコマンドでファームウェアを書き込みます。
sudo mkdir -p /mnt/pico sudo mount /dev/sda1 /mnt/pico sudo cp bin/magic_wand_ble.uf2 /mnt/pico sudo sync
以下のようにボードを持ちながら手で数字を書くジェスチャーをするとディスプレイにその軌跡と認識した数字・識別率が表示されます
Magic Wand もやってみた
— KMiura (@k_miura_io) 2022年3月19日
MNISTの派生かもしれんがジェスチャーの手書き認識も面白いな pic.twitter.com/XDMBVlxsI0
これはマイコンならではのセンサーを使ったデモで面白いですね。
まとめ
というわけでTiny MLのマイコンボードを触ってみました。
ソースコードがC++なのでソースコードをいじるにはちょっと気合が入りますが、いずれ自前モデルを用意してなにかデモ作ってみたいですね。
それはいつかまたやります(こういうときに限って結局やらなかったり…)