M5Stack Module LLM で カスタムモデルを動かす ~ 0.概要
はじめに
この記事ではM5Stack Module LLMでビジョン系のAIモデルを動かしたいと思っている方向けの記事です。
題材としてYOLOv9のカスタムモデルであるYOLOv9-Wholebody17を取り上げ、モデル変換、python用runtimeビルド、pythonデモコード制作の3回に分けてまとめたいと思います。
この記事は概要のみのまとめですので次に進みたい方はスルーしてください。
YOLOv9のモデル変換についてはax-modelsの推論実行用バイナリをコンパイルしつつAXERA model-zooの変換済みモデルを利用してpulsar2 tool chainを参考に実行すれば動きます。
今回はアプリケーション開発を楽にしたいので、YOLOv9のruntimeをビルドしてpythonから推論実行できる環境を作ります。
全記事リスト
0.概要
1.モデル変換
2.python用runtimeビルド
3.pythonデモコード制作
スキルレベル
スキルレベルは私と同程度を想定しています。
自分でAIのモデルを作ったり学習させたりするのは荷が重いがruntimeと推論モデルがあればラズパイとかGoogle colabで走らせたりすることはできるぜ、ぐらいの感じです。
あと、runtimeのビルドでは若干c++の知識も必要ですが、Arduinoのコードってcだよね、、、あれなら書ける。ぐらいのレベルでOKかと思います。
wholebody17について
今回取り上げるYOLOv9 wholebody17はAIを触っている人なら誰でも一度はお世話になったであろうPINTO_model_zooの@PINTO03091さんが、魂を削ったアノテーションデータをもとにカスタムしたYOLOv9モデルです。
魂を削ったアノテーション物語(現在進行形)も超絶面白いのでいつかまとめたいのですが、今回は割愛させていただいてwholebody17の変換についてまとめます。
PINTOさんのアノテーションは私の知る範囲ではPINTO_model_zooの420_Gold-YOLO-Handの頃に始まっており、ベースモデルをYOLOX、YOLOv9と変えながら、現在はwholebody25まで進化しています。
wholebody25の前身のwholebody17は、量子化返還に対応するため、活性化関数をReLUに変更したモデルも用意されています。
今回使用するM5Stack Module LLMは、AXERA社のA630CというNPU(3.2TOPs@Int8)を持つSoCを搭載しているため、量子化返還の際の精度劣化を抑えられるwholebody17 ReLU版を量子化変換して実行します。
M5Stack Module LLMについて
M5Stack Module LLMはM5Stack社が開発したローカルLLMが動かせるM5Coreシリーズ用モジュールです。StackFlowというワークフレームを使ってM5StackCoreから容易にLLMをはじめとする多様な機能を扱えるのが特徴です。
また、Linuxの走るエッジAIボードとしても優秀で、LLMだけでなく種々のAIモデルを動かすことができます。
M5Stack LLM ModuleをLinuxボードとして利用する際のFAQ/Tipsに発売当初の種々の情報をまとめていますので参考にしてください。
M5Stack社の公式サイト、ドキュメント
使用機材
使用する機材は以下の通りです
M5Stack Module LLM
今回の主役です。11月1日にファーストロットが発売されました。
12月中にセカンドロットが販売される見通しです。
M5Stack Module LLM Debug Board
M5Stack Core Basic/Core2/CoreS3 ※いずれか
USBカメラ使用時の電源供給に使用しますのでモデルは問いません。
Type C to A USB HUB
USBカメラを接続するのに使用します。
ドライバの関係で使えるものと使えないものが在るようです。私は手元にあったブランドがよくわからないもので動きました。
DAISOのUSBハブが動いたとの報告があります。
USB Web Camera
一般的なUSBカメラが使用できます。
MicroSD Card
8GB以上のMicroUSBカードをext4フォーマとして使用します。
モデル変換から実行までのおおよその流れ
変換
dockerイメージをダウンロードしてロード
wholebody17をダウンロード
onnxモデルの刈込
コンフィグの設定
model変換
python用runtimeビルド
M5Stack Module LLMの接続
M5Stack Module LLMへのログイン
ax-models?
python用runtime
cmakelistfiles
ビルド
pythondemoコード
Module LLM デバグボード接続方法
画像変換
動画変換
カメラリアルタイム変換
カメラリアルタイム変換ストリーム
Discussion