コンテンツにスキップ

SSCMACore ライブラリを使用してモデル情報を出力する

この wiki では、SSCMACore(Seeed SenseCraft Model Assistant Core)ライブラリを使用して、XIAO ESP32S3 Sense ボード向け SenseCraft AI でモデル出力を設定する方法について、ステップバイステップのガイドを提供します。これらの手順に従うことで、事前訓練されたモデルと連携するように XIAO ESP32S3 Sense を設定し、SSCMACore ライブラリを利用してモデルの出力を処理できるようになります。

作業を進める前に、以下のものが揃っていることを確認してください:

  • XIAO ESP32S3 Sense
  • XIAO ESP32S3 Sense をコンピュータに接続するための USB-C データケーブル
  • Seeed_Arduino_SSCMACore ライブラリがインストールされた Arduino IDE
XIAO ESP32S3 Sense

ステップ1. XIAO ESP32S3 Senseにモデルがロードされていることを確認する

Section titled “ステップ1. XIAO ESP32S3 Senseにモデルがロードされていることを確認する”

続行する前に、XIAO ESP32S3 Senseボードに訓練済みモデルがロードされていることを確認してください。まだモデルをロードしていない場合は、デバイスにモデルを訓練してデプロイする方法について、SenseCraft AIのドキュメントを参照してください。

独自の訓練済みモデルを使用したい場合は、以下の2つのWikiを参照してください。

ステップ2. SSCMAライブラリをセットアップする

Section titled “ステップ2. SSCMAライブラリをセットアップする”

GitHubリポジトリからSeeed_Arduino_SSCMACoreライブラリをダウンロードしてください。


以下の手順に従って、ダウンロードしたライブラリをArduino環境に追加してください:

  • Arduino IDEを開きます。
  • スケッチ -> ライブラリをインクルード -> .ZIP形式のライブラリをインストールに移動します。
  • ダウンロードしたSeeed_Arduino_SSCMACoreライブラリに移動して選択します。
  • 開くをクリックして、ライブラリをArduino環境に追加します。

ステップ3. サンプルコードを選択して設定する

Section titled “ステップ3. サンプルコードを選択して設定する”

SSCMAライブラリは、XIAO ESP32S3 Senseボード上でモデル出力を操作する方法を示す2つのサンプルコードを提供しています。要件に基づいて、以下のサンプルの1つを選択してください:

  1. inference.inoサンプルコードを開きます。
cpp
#include <SSCMA_Micro_Core.h>
#include <Arduino.h>
#include <esp_camera.h>
SET_LOOP_TASK_STACK_SIZE(40 * 1024);
SSCMAMicroCore instance;
SSCMAMicroCore::VideoCapture capture;
void setup() {
// Init serial port
Serial.begin(115200);
// Init video capture
MA_RETURN_IF_UNEXPECTED(capture.begin(SSCMAMicroCore::VideoCapture::DefaultCameraConfigXIAOS3));
// Init SSCMA Micro Core
MA_RETURN_IF_UNEXPECTED(instance.begin(SSCMAMicroCore::Config::DefaultConfig));
Serial.println("Init done");
}
void loop() {
auto frame = capture.getManagedFrame();
MA_RETURN_IF_UNEXPECTED(instance.invoke(frame));
for (const auto& box : instance.getBoxes()) {
Serial.printf("Box: x=%f, y=%f, w=%f, h=%f, score=%f, target=%d\n", box.x, box.y, box.w, box.h, box.score, box.target);
}
for (const auto& cls : instance.getClasses()) {
Serial.printf("Class: target=%d, score=%f\n", cls.target, cls.score);
}
for (const auto& point : instance.getPoints()) {
Serial.printf("Point: x=%f, y=%f, z=%f, score=%f, target=%d\n", point.x, point.y, point.z, point.score, point.target);
}
for (const auto& kp : instance.getKeypoints()) {
Serial.printf("Keypoints: box: x=%f, y=%f, w=%f, h=%f, score=%f, target=%d\n", kp.box.x, kp.box.y, kp.box.w, kp.box.h, kp.box.score, kp.box.target);
for (const auto& point : kp.points) {
Serial.printf("Keypoint: x=%f, y=%f, z=%f, score=%f, target=%d\n", point.x, point.y, point.z, point.score, point.target);
}
}
auto perf = instance.getPerf();
Serial.printf("Perf: preprocess=%dms, inference=%dms, postprocess=%dms\n", perf.preprocess, perf.inference, perf.postprocess);
}

この例のコードは、SSCMAライブラリを使用して推論を実行し、バウンディングボックス、クラス、ポイント、キーポイントを含むモデルの出力を取得する方法を示しています。このコードは、ビデオキャプチャ、SSCMA Micro Core を初期化し、カメラによってキャプチャされた各フレームに対して推論を実行します。バウンディングボックス、クラス、ポイント、キーポイントなどのモデルの出力は、シリアルモニターに出力されます。

例 2: コールバックを使用した推論

Section titled “例 2: コールバックを使用した推論”
  1. inference_cb.ino の例のコードを開きます。
cpp
#include <SSCMA_Micro_Core.h>
#include <Arduino.h>
#include <esp_camera.h>
SET_LOOP_TASK_STACK_SIZE(40 * 1024);
SSCMAMicroCore instance;
SSCMAMicroCore::VideoCapture capture;
void setup() {
// Init serial port
Serial.begin(115200);
// Init video capture
MA_RETURN_IF_UNEXPECTED(capture.begin(SSCMAMicroCore::VideoCapture::DefaultCameraConfigXIAOS3));
// Init SSCMA Micro Core
MA_RETURN_IF_UNEXPECTED(instance.begin(SSCMAMicroCore::Config::DefaultConfig));
instance.registerPerfCallback(SSCMAMicroCore::DefaultPerfCallback);
instance.registerBoxesCallback(SSCMAMicroCore::DefaultBoxesCallback);
instance.registerClassesCallback(SSCMAMicroCore::DefaultClassesCallback);
instance.registerPointsCallback(SSCMAMicroCore::DefaultPointsCallback);
instance.registerKeypointsCallback(SSCMAMicroCore::DefaultKeypointsCallback);
Serial.println("Init done");
}
void loop() {
auto frame = capture.getManagedFrame();
MA_RETURN_IF_UNEXPECTED(instance.invoke(frame));
}

この例のコードは、SSCMAライブラリを使用して推論を実行し、モデルの出力を処理するためのコールバック関数を登録する方法を示しています。このコードは、ビデオキャプチャ、SSCMA Micro Core を初期化し、パフォーマンスメトリクス、バウンディングボックス、クラス、ポイント、キーポイントを処理するためのコールバック関数を登録します。推論プロセス中に、登録されたコールバック関数が呼び出され、モデルの出力の処理をカスタマイズできます。

ステップ 4. コードのアップロードと実行

Section titled “ステップ 4. コードのアップロードと実行”

USB-C データケーブルを使用して、XIAO ESP32S3 Sense ボードをコンピューターに接続します。Arduino IDE で選択したサンプルコード(inference.ino または inference_cb.ino)を開きます。

Arduino IDE で適切なボードとポートを選択します:

  • Tools -> Board に移動し、「XIAO ESP32S3 Sense」を選択します。
  • Tools -> Port に移動し、XIAO ESP32S3 Sense が接続されているポートを選択します。
  • Tools -> PSRAM -> OPI PSRAM に移動します。必ず PSRAM をオンにしてください!

Arduino IDE の「Upload」ボタンをクリックして、コードをコンパイルし、XIAO ESP32S3 Sense ボードにアップロードします。アップロードが完了したら、Arduino IDE でシリアルモニターを開いて、モデルの出力を確認します。

このステップバイステップガイドに従うことで、SSCMA ライブラリを使用して XIAO ESP32S3 Sense ボード用の SenseCraft AI でモデル出力を設定できるようになります。選択したサンプルコードに応じて、モデルの出力を直接取得するか、コールバック関数を使用して出力の処理をカスタマイズできます。

特定の要件に合わせてサンプルコードを自由に探索し、変更してください。SSCMA ライブラリは、XIAO ESP32S3 Sense ボードでコンピュータビジョンと機械学習モデルを操作するための強力なツールと機能のセットを提供します。

問題が発生したり、さらに質問がある場合は、SenseCraft AI ドキュメントを参照するか、Seeed Studio コミュニティフォーラムからサポートを求めてください。

XIAO ESP32S3 Sense ボードでコンピュータビジョンと機械学習の世界を探索し、コーディングを楽しんでください!

技術サポートと製品ディスカッション

Section titled “技術サポートと製品ディスカッション”

弊社製品をお選びいただき、ありがとうございます!弊社製品での体験が可能な限りスムーズになるよう、さまざまなサポートを提供しています。さまざまな好みやニーズに対応するため、複数のコミュニケーションチャネルを提供しています。