😸

M5Stack Module LLM で カスタムモデルを動かす ~ 0.概要

2024/12/08に公開

はじめに

この記事では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