こんにちは すみやです。今回はスイッチサイエンスで好評販売中のM5StickVを紹介していきたいと思います。
という僕自身、Arduinoはよく触りますが、AI(機械学習)の知識、M5Stack製品に関する詳細な知識はありませんので、ご承知おきください。
今回は手軽にM5StickVを触るということで、M5Stack社によるサービス、V-Trainingを利用してみます。V-TrainingはM5StickVで撮影した物体の写真をアップロードして、学習データを作ってもらい、それをSDカードに書き込めばM5StickVで簡単に物体認識が行えるサービスです。
※SDカードについてですが、容量を問わず動作しないものがあるようです。
詳細はM5Stack公式ページを参照ください。
まずは、V-Trainingの公式ドキュメントにしたがい、M5StickVで被写体の写真を撮影するプログラムをダウンロードし、SDカードに書き込みます。

SDカードを挿入して、この画面が表示されれば撮影可能になります。

認識したい対象を撮影します。今回はピンクのルーク、地球コマ、そして平面物のダムカード三枚の合計五つの物体を識別させてみようと思います。
公式ドキュメントにあるとおり「三つ以上の物体を撮影」「35枚以上撮影」などを守って撮影していきます。コツは自身の影を入れずに撮影することでしょうか。ダムカードは近づけたり遠ざけたりして35枚撮影しました。今回は卓上が木目調だったので、白紙を敷いて撮影しました。
撮影した画像をV-Traningにアップロードしていきます。
http://v-training.m5stack.com/

ここで注意が必要なのですが、学習モデルデータの出力結果はメールにて返信されます。メールアドレスを絶対に間違えないようしましょう。また、アップロードが完了しても受付完了を通知するメールはすぐに来ないので、何回も同じ写真をアップロードしないようにしましょう。
通常は1時間以内に結果のメールが届きますが、サーバーの混雑具合やメンテナンスなどによりかなり時間がかかることがあるようです。僕が最初に試したときは半日以上かかりました。

うまく学習モデルが作られるとこのようなメールが届きます。@m5stack.comからのメールを受け取れるようにしておきましょう。メール中のURLから学習モデルをダウンロードできます。モデルの作成に失敗した場合はメールに理由が書いてあるので修正して再度試してみてください。
ダウンロードしたデータを最初同様にSDカードに書き込みます 。

先ほどとは違う起動画面になれば起動成功です。早速ダムカードにかざすと

認識することができました! Type:4となっているのが、撮影時のClassの番号です。
今更ですが、M5StickVはSDカードにあるboot.pyというプログラムを優先して読み込んで実行する様です。プログラムを書くのにOSを問わず好きなエディタでかけるので便利です。
先ほどの物体認識に使用したboot.pyの34行目に物体の名前を入力すれば表示名を自由に編集することができます。



平面状のダムカードもしっかり認識しています!
というわけで五つのモデルの識別に成功しました!ここまで難しいプログラミングなど一切行わずにできるのがすごいですね。本格的な開発環境がなくても簡単に物体認識ができるので、ArduinoやRaspberryPiのセンサとしても利用できそうです。次回は実際にM5StickVについているGROVE互換コネクタを使って、実際に動くものを作ってみたいと思います。
M5StickVはスイッチサイエンスのこちらのページにて販売中です。