ソフトウェアサポート
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
サポートされているソフトウェアの概要
Grove Vision AI Module V2 を有効にする方法は2つあります:
SenseCraft AI を使用したコード不要のスタートガイド
このセクションでは、SenseCraft AI Model Assistant を使用して、コードや他の開発ボードを必要とせずに、迅速にデプロイして結果を観察する方法を説明します。
SenseCraft AI とは?

SenseCraft AI は、ユーザーが公開されている膨大な AI モデルライブラリをエッジデバイスに簡単にデプロイできるようにするツールです:
- reComputer (NVIDIA Jetson)
- Seeed Studio XIAO S3 ボード
- Vision AI モジュールなど
SenseCraft AI は、公開されている AI モデルをエッジデバイスに数クリックで直接デプロイできる、シームレスで使いやすい体験を提供します。
SenseCraft AI には以下が含まれます:
- Model Assistant ソフトウェアサービス
- Device Workspace ソフトウェアサービス
このセクションでは、「Model Assistant」を使用してモジュールを有効にします。SenseCraft AI Model Assistant の機能を活用することで、多種多様な共同作成モデルを簡単にアップロードし、結果を直接観察できます。
SenseCraft AI Model Assistant を使ったスタートガイド
ここでは、SenseCraft AI を使用してモジュールを迅速に開始する方法を説明します。このプロセスではモジュールのみが必要です。
ステップ 1. モデルを選択
まず、SenseCraft AI Model Assistant のメインページを開きます。
デプロイしたいモデルを選択し、それをクリックします。

ここでこのモデルの説明を確認できます。適している場合は、右側の Deploy Model ボタンをクリックします。

ステップ 2. モジュールを接続し、適切なモデルをアップロード
Type-C ケーブルを使用して Grove Vision AI V2 をコンピュータに接続し、Connect ボタンをクリックします。

Confirm ボタンをクリックします。このページの左上隅で USB Single Serial を選択できます。その後、Connect ボタンをクリックします。

このページに 1~2 分間留まり、モデルが正常にアップロードされるのを待ちます。このプロセス中に別のページタブに切り替えると、アップロードが失敗する可能性があることに注意してください(現在、この問題を解決するためにチームが積極的に取り組んでおり、近いうちに修正される予定です)。
ステップ 3. 観察
モデルが正常にアップロードされると、左側のプレビューで Grove Vision AI V2 カメラからのライブフィードが表示されます。

プレビュー設定の左側には、モデルの認識精度を最適化するために変更可能な2つの設定オプションがあります。
- Confidence(信頼度): 信頼度は、モデルが予測に割り当てる確信度や確率を指します。

- IoU(Intersection over Union): IoU は、予測されたバウンディングボックスと真実のバウンディングボックスの精度を評価するために使用されます。

- Confidence(信頼度): これは、コンピュータビジョンモデルがその予測についてどれだけ確信しているかを示します。パーセンテージのように考えてください。信頼度が高いほど、モデルがより確信していることを意味します。
- IoU(Intersection over Union): これは、2つのボックス間の重なり具合を測定します。画像内のオブジェクトの周りにボックスを描き、モデルもボックスを描いたと想像してください。IoU は、これらのボックスがどれだけ一致しているかを示します。IoU が高いほど、ボックスがより近いことを意味します。
この時点で、モデルのアップロードと結果の観察が完了しています。
ArduinoでSeeed Studio XIAOボードを接続してプログラムする
Arduinoライブラリの紹介
Arduinoを初めて使用する場合は、Arduinoの使い方を参照することを強くお勧めします。
Grove Vision AIはWiseEye2 HX6538チップを使用しており、画像処理とモデル推論はGrove Vision AI内でローカルに処理され、その結果がIICまたはUARTを介してXIAOに出力されます。このライブラリの主な目的は、Grove Vision AIのデータストリームを処理することであり、モデル推論や画像処理には関与しません。
Grove Vision AIはIICを介してXIAOと通信し、デバイスのIICアドレスは0x62
です。画像情報の転送はUSBシリアルポートを介して行われます。
機能
スケッチの開発を始める前に、ライブラリで利用可能な機能を見てみましょう。
bool begin(TwoWire *wire = &Wire, uint16_t address = I2C_ADDRESS, uint32_t wait_delay = 2, uint32_t clock = 400000)
—— Grove Vision AI V2を初期化します。入力パラメータ:
TwoWire *wire
—— TwoWireオブジェクトを指すポインタで、通常I2Cデバイスとの通信に使用されます。uint16_t address
—— I2Cバスに接続された特定のデバイスを識別するためのI2Cデバイスのアドレス。uint32_t wait_delay
—— コマンドを送信する前に応答を待つ遅延時間(ミリ秒)。uint32_t clock
—— I2Cバスのクロックレート(Hz)。
戻り値:
True
またはFalse
。初期化が成功した場合はTrue
、失敗した場合はFalse
。int invoke(int times = 1, bool filter = 0, bool show = 0)
—— Grove Vision AI V2にINVOKEコマンドを送信し、モデルの呼び出し、推論、認識を開始します。入力パラメータ:
int times
—— Invokeの回数。fileter
—— 最後の結果が前回の結果と異なる場合にのみイベント応答を送信します(ジオメトリとスコアで比較)。bool show
—— 最後の結果が前回の結果と異なる場合にのみイベント応答を送信します(ジオメトリとスコアで比較)。
Grove Vision AIのプロトコル定義に関する詳細は、プロトコルドキュメントを参照してください。
戻り値: CMD_OK
またはCMD_ETIMEDOUT
。モデルが正常に有効化された場合はCMD_OKを返し、そうでない場合はCMD_ETIMEDOUTを返します。
int available()
—— 接続されたデバイスからIICを介して読み取ることができるデータのバイト数を確認します。入力パラメータ: なし。
戻り値: デバイスから読み取ることができるデータのバイト数。
int read(char *data, int length)
—— IICインターフェースを介してGrove Vision AIからデータを読み取ります。この関数の目的は、提供されたデータポインタが指す配列に読み取ったデータを格納することです。入力パラメータ:
char *data
—— データを格納するための配列。int length
—— 読み取るデータの長さ。
戻り値: 読み取るデータの長さ。
int write(const char *data, int length)
—— I2Cインターフェースを介して指定されたデバイスにデータを書き込みます。入力パラメータ:
const char *data
—— 書き込むデータの内容。int length
—— 書き込むデータの長さ。
戻り値: 書き込むデータの長さ。
std::vector<boxes_t> &boxes() { return _boxes; }
—— 結果をボックス形式で出力します。
typedef struct
{
uint16_t x; // ボックスの中心の水平座標
uint16_t y; // ボックスの中心の垂直座標
uint16_t w; // 識別ボックスの幅
uint16_t h; // 識別ボックスの高さ
uint8_t score; // ターゲットとして識別された信頼度
uint8_t target; // ターゲット
} boxes_t;
std::vector<classes_t> &classes() { return _classes; }
—— 結果をカテゴリ形式で出力します。
typedef struct
{
uint8_t target; // ターゲット
uint8_t score; // ターゲットとして識別された信頼度
} classes_t;
std::vector<point_t> &points() { return _points; }
—— 結果を点形式で出力します。
typedef struct
{
uint16_t x; // 識別点の水平座標
uint16_t y; // 識別点の垂直座標
uint16_t z; // 識別点の相対的な深度座標
uint8_t score; // ターゲットとして識別された信頼度
uint8_t target; // ターゲット
} point_t;
ここでの深度座標は相対的なものであり、Grove Vision AIが深度カメラ機能を備えていることを意味するわけではありません。むしろ、アルゴリズムが相対的な深度座標を計算し、一部のモデル(例: face-3dモデル)で有効です。
perf_t &perf() { return _perf; }
—— 画像処理と推論時間。
typedef struct
{
uint16_t prepocess; // 前処理時間
uint16_t inference; // 推論時間
uint16_t postprocess; // 後処理時間
} perf_t;
モデルによっては、出力がボックスやポイントを識別する情報を常に出力するわけではありません。
インストール
ZIPライブラリをダウンロードした後、Arduino IDEを開き、スケッチ > ライブラリを含める > .ZIPライブラリを追加をクリックします。ダウンロードしたZIPファイルを選択し、ライブラリが正しくインストールされると、通知ウィンドウにライブラリがライブラリに追加されましたと表示されます。これでライブラリが正常にインストールされたことを意味します。

Seeed Studio XIAO を使った入門
機械視覚機能を備えたセンサーのプロトタイプを作成したい場合は、XIAOを追加することを検討するかもしれません。XIAOとGrove Vision AI V2を使用することで、使用したいモデルを選択し、アプリケーション領域に迅速に展開することができます。
準備
ステップ 1. 必要な材料
このチュートリアルでは、Arduinoプログラムの使用方法を紹介するためにXIAO ESP32S3を例として使用します。そのため、以下のハードウェアを準備することをお勧めします。
Seeed Studio XIAO ESP32S3 | Grove Vision AI V2 | OV5647-62 FOV カメラモジュール Raspberry Pi 3B+4B用 |
---|---|---|
![]() | ![]() | ![]() |
次に、XIAOとGrove Vision AI V2をピン列を介して接続する必要があります(または拡張ボードとGroveインターフェースを使用します)。

接続の方向に注意してください。Grove Vision AIのType-CコネクタはXIAOのType-Cコネクタと同じ方向である必要があります。
ステップ 2. Arduinoアプリケーションを起動します。

ステップ 3. 開発ボードモデルを選択し、Arduino IDEに追加します。
以下はGrove Vision AI V2の例でサポートされているボードのリストです。使用したいボードを選択して、次の例を完成させてください。このチュートリアルでは、XIAO ESP32S3を例として使用します。
Seeed Studio XIAO SAMD21を後のルーチンで使用したい場合は、このチュートリアルを参照して追加を完了してください。
Seeed Studio XIAO RP2040を後のルーチンで使用したい場合は、このチュートリアルを参照して追加を完了してください。
Seeed Studio XIAO nRF52840を後のルーチンで使用したい場合は、このチュートリアルを参照して追加を完了してください。
Seeed Studio XIAO ESP32C3を後のルーチンで使用したい場合は、このチュートリアルを参照して追加を完了してください。
Seeed Studio XIAO ESP32S3を後のルーチンで使用したい場合は、このチュートリアルを参照して追加を完了してください。
Seeeduino V4.3を後のルーチンで使用したい場合は、このチュートリアルを参照して追加を完了してください。
ステップ 4. ArduinoJSONライブラリをインストールします。
スケッチメニューに移動し、ライブラリを含める > ライブラリを管理...を選択します。これによりライブラリマネージャが開きます。ライブラリマネージャの検索バーにArduinoJSONと入力します。検索結果にArduinoJSONライブラリが表示されます。ライブラリの横にインストールボタンがあります。そのボタンをクリックしてください。Arduino IDEがライブラリを自動的にダウンロードし、Arduino開発環境にインストールします。

デモ 1. XIAO を使用して認識結果を取得する
以下の手順は、Grove Vision AI V2 が報告する認識情報を取得し解析するための簡単な例です。
#include <Seeed_Arduino_SSCMA.h>
SSCMA AI;
void setup()
{
AI.begin();
Serial.begin(9600);
}
void loop()
{
if (!AI.invoke())
{
Serial.println("invoke success");
Serial.print("perf: prepocess=");
Serial.print(AI.perf().prepocess);
Serial.print(", inference=");
Serial.print(AI.perf().inference);
Serial.print(", postpocess=");
Serial.println(AI.perf().postprocess);
for (int i = 0; i < AI.boxes().size(); i++)
{
Serial.print("Box[");
Serial.print(i);
Serial.print("] target=");
Serial.print(AI.boxes()[i].target);
Serial.print(", score=");
Serial.print(AI.boxes()[i].score);
Serial.print(", x=");
Serial.print(AI.boxes()[i].x);
Serial.print(", y=");
Serial.print(AI.boxes()[i].y);
Serial.print(", w=");
Serial.print(AI.boxes()[i].w);
Serial.print(", h=");
Serial.println(AI.boxes()[i].h);
}
for (int i = 0; i < AI.classes().size(); i++)
{
Serial.print("Class[");
Serial.print(i);
Serial.print("] target=");
Serial.print(AI.classes()[i].target);
Serial.print(", score=");
Serial.println(AI.classes()[i].score);
}
for (int i = 0; i < AI.points().size(); i++)
{
Serial.print("Point[");
Serial.print(i);
Serial.print("] target=");
Serial.print(AI.points()[i].target);
Serial.print(", score=");
Serial.print(AI.points()[i].score);
Serial.print(", x=");
Serial.print(AI.points()[i].x);
Serial.print(", y=");
Serial.println(AI.points()[i].y);
}
}
}
手順の説明
この Arduino スケッチは、Seeed_Arduino_SSCMA ライブラリを使用して Grove Vision AI Module V2 とインターフェースします。setup()
関数では、AI モジュールが初期化され、シリアル通信が開始されます。
loop()
関数では、Grove Vision AI Module V2 の組み込みアルゴリズムを使用して推論を実行するために invoke()
メソッドが繰り返し呼び出されます。推論が成功すると、スケッチはシリアルモニタに前処理、推論、後処理の時間を含むパフォーマンスメトリクスを出力します。
スケッチは推論結果の詳細情報を処理し、以下を出力します:
- バウンディングボックス (
boxes()
):検出されたオブジェクトの位置とサイズを x, y 座標、幅、高さの形式で識別。 - クラス分類 (
classes()
):検出されたオブジェクトのカテゴリと信頼スコアを識別。 - ポイント (
points()
):検出されたオブジェクトの特定の特徴やキーポイントを x, y 座標と信頼スコアとともに表現。
これらの結果は、AI モジュールによって検出されたオブジェクト、その位置、サイズ、および各検出や分類の信頼レベルに関する洞察を提供します。出力はシリアルモニタに表示され、さらなる分析やデバッグに使用できます。
効果
引き続きジェスチャー検出モデルを使用します。アプリケーションをアップロードした後、シリアルモニタを開き、シリアルモニタのボーレートを 9600 に設定してください。「じゃんけん」の手を準備し、カメラの認識エリアに向けてください。シリアルモニタに認識結果が出力されます。

デモ 2. XIAO を介して制御コマンドを送信する
Grove Vision AI V2 は UART プロトコル を介した通信をサポートしており、組み込みプロトコルを使用することで Grove Vision AI V2 の Himax WE2 チップを操作することが可能です。以下のサンプルプログラムは、XIAO を使用して Grove Vision AI V2 とシリアルポート経由で通信する方法を示しています。
#include <Arduino.h>
#include <Wire.h>
#include <Seeed_Arduino_SSCMA.h>
SSCMA AI;
void setup()
{
// 初回実行時にセットアップコードを記述
Wire.begin();
Serial.begin(115200);
while (!Serial)
delay(1000);
Serial.println("Proxy start");
}
char buf[512];
void loop()
{
int s_len = Serial.available();
if (s_len)
{
int len = Serial.readBytes((char *)buf, s_len);
AI.write(buf, len);
}
int t_len = AI.available();
if (t_len)
{
if (t_len > 512)
{
t_len = 512;
}
AI.read(buf, t_len);
Serial.write(buf, t_len);
}
}
手順の説明
この Arduino スケッチは、Seeed Studio の機械学習フレームワーク SSCMA を利用して、シリアルコンソールと Grove Vision AI V2 モジュール間の通信インターフェースを確立します。このスケッチは、シリアルコマンドを介して Grove Vision AI V2 モジュールとのデータの送受信を行うよう設計されています。
スケッチの説明:
setup()
関数では:
- I2C 通信プロトコルが
Wire.begin()
を使用して初期化され、Grove Vision AI V2 モジュールとの通信が可能になります。 - シリアル通信がボーレート 115200 で設定されます。
- シリアル接続がアクティブになるまで待機し、シリアルモニタに「Proxy start」と出力してプロキシ通信チャネルが準備完了であることを示します。
loop()
関数では:
- スケッチは
Serial.available()
を使用して受信したシリアルデータを確認します。データがある場合、バッファbuf
に読み込みます。 - バッファに収集されたデータは
AI.write()
メソッドを使用して Grove Vision AI V2 モジュールに送信されます。 - 次に、Grove Vision AI V2 モジュールが送信するデータがあるかどうかを
AI.available()
を使用して確認します。 - Grove Vision AI V2 モジュールからデータが送信されている場合、
AI.read()
を使用してバッファbuf
にデータを読み込み、バッファサイズ 512 バイトを超えないようにします。 - 最後に、Grove Vision AI V2 モジュールから受信したデータを
Serial.write()
を使用してシリアルコンソールに送信し、シリアルインターフェースと Vision AI モジュール間の双方向通信を完了します。
このセットアップにより、Grove Vision AI V2モジュールとのインタラクティブな通信が可能になり、ユーザーはシリアル接続を介してモジュールに指示を送信し、データを受信することができます。
リソース
トラブルシューティング
Q1: XIAO ESP32C3を使用してDemo1のコードを正常にアップロードした後、ポートで認識結果が表示されないのはなぜですか?
Arduino IDEバージョン1.xxを使用している場合は、C3のリセットボタンを押した後にシリアルモニターを再度開いて結果を確認してください。Arduino IDEバージョン2.xxを使用している場合は、リセットボタンを押すとシリアルモニターにメッセージが更新されます。
技術サポートと製品ディスカッション
弊社製品をお選びいただきありがとうございます!製品の使用体験がスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルをご用意しています。