先週、インタフェース誌10月号のAIチップ特集を読みながら「メールが届くのを待っています」などとブーたれていたのです。M5StickVのWeb上でのAIトレーニング環境であるV-Training、ここに来て、先月何かの理由で詰まってしまっていたQueueが解消されて動き出したようです。処理完了のメールがとどき、学習済のデータセットをM5StickVにセットすれば、ちゃんと目論見どおり認識をば致しまする。待ち行列解消さえすればこんなにお手軽なものは無い?
まずご存知ない方向けに V-Trainig環境 について簡単にご説明させていただきます。詳しいことは上の方にリンクも貼り付けておきましたので、サイトの方へいかれてください。
-
- エッジ用AIチップ Kendryte K210搭載の小型AIカメラM5StickV用
- M5StickVで写真をとって学習用データセットを作成する
- これをV-Trainigサイトにアップロードすると学習済のモデルを生成してくれる
- このモデルをM5StickVにダウンロードすれば識別ができる
最近ありがちな、ノープログラミングで、AI学習ができちゃう、って奴の一つかと思います。まあ、メモリの小さなM5StickV用なので、学習可能なデータセットには制限あり、
-
- クラスは10種まで
- 総データ量はZIPファイルで200Mバイト
であります。aNo研さまの「MAiX MAniaX」を参考にさせていただいて、ローカル環境のTensorflow liteでモデル構築も行いたいものだ、と思っては居るのであります。しかし、データセットをアップロードさえすれば、「ありがちなトラブル」もなく、M5StickV用のモデルを生成してくれるV-Traningサイトは、「お手軽主義」を標榜しておる(何時から?)本サイトでは外せない?
しかしま、今回はちとトラブルというか、待たされました。8月24日にデータセットをアップロードしたつもりだったのですが、エラーのお知らせが返ってきたのは9月1日でした。その間、サイトを観察するに8月20日頃提出されたらしいJOBから私のも含めて二十数JOBくらい滞留していました。1つのメールアドレスで1度に1JOBしか提出できないので、二十数名お待ちになっていたんだと思います。原因はともあれ、待ち行列が解消された後は、
私が今朝提出した小さなJOBは、コーヒー飲んでいる間に終わっていた
です。ダウンロードし、M5StickVにセット(SDカードで)、起動すれば、ちゃんと意図した感じで識別します。
V-Trainigサイトを使う上でいくつか引っかかったところがあったので書き留めておきます。
M5StickVのファームウエア
8月の頭に多分最新と思われるM5StickVのファームウエアを書き込んでおいたのですが、そのファーム上ではデータセット作成用のboot.pyが起動できませんでした。(普通にMaixPyは起動できるです)V-Trainigのサイトにおいてあるファームウエアの書き込みツールでツール付属のファームを書き込むことでデータセット作成ができるようになりました。
データセットのtrainとvaild
trainフォルダとvaildフォルダに写真を振り分けないとならないのですが、M5StickV上で走る上記のデータセット作成用プログラムは、勝手に31枚目の写真から35枚目の写真までをvaildに振り分け、それ以外をtrainに格納していました。データセットの一つのクラスには最低写真35枚という制限があるのですが、最初の30枚がtrainに振り分けられ、次の5枚がvalid、追加で撮ったものはまたtrainに格納されるようです。
データセットのクラス数
クラス数は10個とあるのですが、今回3個でやってみました。手元にあるもの
-
- M5Stack
- Raspberry Pi modelB
- M5StickC
を、照明条件、角度、背景の色などを変更しながら撮影しました。アイキャッチ画像はそのとき作ったデータセットの一部です。M5StickVのデータセット撮影用プログラムは若干押しづらいM5StickVの側面ボタンでクラスを選択し、正面ボタンで撮影(同時にインストールしたWAVファイルで、さもカメラっぽい音をさせます)するので、クラスの確認は注意した方がいいと思います。生成されるファイルは、連番数字.jpg のような、どのクラスも同じファイル名になっています。後で分類しなおそうとすると、番号をリネームしたりする必要があるかもしれません。今回1クラスあたり60枚ほど、3クラスのAIの学習データセットとしては「極小」的なものをつくりました。この程度なら1時間もあれば作れるのでお手軽。なお、アップロード時にはtrainとvalidの2つのフォルダを1個のZIPにしないとダメです。最初、trainとvalidの階層の一つ上のフォルダをZIP化して送ったら、trainとvalidが無いと怒られました。
識別用のプログラム
識別用のプログラムをM5StickV用のSDに書き込む場合、データ作成用のプログラム同じファイル名なので上書きされます。この横にダウンロードしたモデルを書き込んで起動すればOK。M5Stackとか、ラズパイとか持ってきて画面に写るようにすると、識別してクラス名(単なる数字ですが)を表示します。今朝やってみた限りでは100発100中(100回も試していないが)。なお、学習させた3種以外、例えばマウスとか充電用のアダプタなどに画面を向けると
無理やり3種のうちの1つ
に識別していました。それ以外、という選択肢はないのかしらん。
V-Trainig、ちゃんと学習して、思ったような動きをするです。でもね、今時のスマホ、Goolgeの「レンズ」など、ラズパイの写真とれば、ラズパイ、M5StickCの写真とればM5StickCと認識する。それどころか、M5Stackの写真をとると、M5Stackとでるだけでなく、内部に鎮座している筈のESP32まで出てくる。中身までオミトオシか?Web上の写真で学習しているからだろうけれど、賢いなあ。。。