13.6. Edge Impulse

Edge Impulse は、マイクロコントローラー上で動作する機械学習モデルを構築するためのエンドツーエンドプラットフォームです。データの収集とラベル付け、ブラウザ上でのモデルの設計と学習、そしてキロバイト単位のデバイスに収まるように最適化するまでを一貫して行えます。OpenMV へ直接デプロイでき、数クリックで学習済みモデルをカメラ上で実行可能なファイルに変換します。各ステップの詳細は Edge Impulse 独自の ドキュメント で深く解説されています。

13.6.1. データの取り込み

モデルは学習に用いた画像と同じ種類の画像に対して最も高い性能を発揮するため、実際にモデルを動かすカメラでデータセットを撮影してください。IDE の データセットエディタ はまさにこの目的のために作られており、クラスごとのフォルダを作成し、ライブのフレームバッファからラベル付き画像を撮影し、Export サブメニューからデータセットを直接 Edge Impulse プロジェクトにアップロードできます(先にそちらのアカウントにログインしてください)。以降は Edge Impulse Studio 上で作業を進めます。

参考

ツールのインストールとカメラの接続については、Edge Impulse 独自の OpenMV Cam セットアップガイド を参照してください。

13.6.2. 学習

学習はすべてブラウザ上で行います。impulse(入力、処理、学習の各ブロック)を設計して学習させ、保留しておいたテストデータで精度を確認します。

カメラには2種類のモデルが適しています。1つは画像分類器で、クラスごとのスコアのリストを出力し、モデルの出力からそのまま読み取れます。ポストプロセッサは不要です。もう1つは FOMO で、マイクロコントローラー向けに設計された高速な物体検出器です。これにはデコードの手順が1つ必要ですが、カメラには専用のポストプロセッサ(ml.postprocessing.edgeimpulse)が同梱されているため、これらのモデルも追加コードなしで動作します。

13.6.3. カメラへのデプロイ

学習が完了したら、プロジェクトの Deployment ページを開き、OpenMV Library ターゲットを選択して Build をクリックします。ダウンロードされるのは、学習済みモデル(trained.tflite)、そのラベル(labels.txt)、サンプルスクリプトを含む zip です。モデルは整数量子化されています。Edge Impulse はこの方法とカスタムファームウェアによる代替手段を OpenMV での実行ガイド で解説しています。

.tflite ファイルは、IDE の ROMFS エディタ を使ってカメラに追加します。これにより、NPU を搭載したボードではそのファイルが NPU 向けに変換され、スクリプト内では ml.Model で読み込めます。モデルはカメラのフラッシュドライブからも実行できます(ファイルをコピーして ml.Model にそのパスを指定します)が、ROMFS に置く方が望ましいです。ROMFS 上のモデルは RAM へのコピーなしにフラッシュから直接実行されます。

参考

ml モジュールによるモデルの実行(読み込み、推論パイプライン、出力のデコード)については 機械学習の章 を参照してください。