vision
vision.detectvision.detect
vision.detect ノードで定義された入力、出力、実行環境を確認します。
動画チュートリアル
04実際の LaiCai Flow ワークフローで vision.detect ノードを設定して実行する方法を動画で確認します。
ノードチュートリアル: Object Detect
YouTube で見る入力
5入力項目値の型必須区分利用可能なソース
modelIdstring必須literalallClassesbool任意literalclassNamesarray任意literalminScorenumber必須literalroirect必須literal出力
9出力パス値の型座標空間
data.bestobject—data.best.scorenumber—data.best.modelIdstring—data.best.classNamestring—data.best.centerpointscreenRatiodata.best.center.xnumberscreenRatiodata.best.center.ynumberscreenRatiodata.best.rectrectscreenRatiodata.itemsarray—実行環境
デスクトップ対応
Android Agent対応
モデルの互換性と技術要件
拡張子が ONNX でも、それだけで互換性が保証されるわけではありません。LaiCai は入力、出力テンソル、ボックス座標、信頼度、クラス順を解釈できる必要があります。
モデルファイル
ONNX にエクスポートした標準 YOLO 物体検出モデルを使用します。PyTorch の .pt、クラウド API のモデル ID、分類・セグメンテーション・姿勢・回転ボックスモデルは直接読み込めません。
.onnxtype: yolo入力テンソル
3 チャンネルの NCHW RGB 入力を 1 つ使用し、float32 または float16 を 0–1 に正規化します。LaiCai は RGB 114 の letterbox で縦横比を維持し、動的サイズを特定できない場合は 640 × 640 を使います。
[1, 3, H, W]float32 / float16クラス対応
クラス ID は 0 から連続し、学習時の順番と一致する必要があります。id2label と label2id を一致させ、className は設定済みラベルと完全一致させます。
id2labellabel2idclassNameサイズと速度
連続検出は Nano または Small から始めてください。大きいモデルは精度が上がる場合がありますが、メモリ消費と実行時間も増えます。実機のデスクトップと Android で測定してください。
n / s / m / l / x対応する出力テンソル
出力テンソルは 1 つだけで、次のいずれかの形式が必要です。raw YOLO 出力には LaiCai が信頼度フィルターと NMS を適用します。
出力形式対応 shape意味
raw_yolo_no_objectness[1, 4 + nc, N] / [1, N, 4 + nc]独立した objectness を持たないボックスとクラススコア。raw_yolo_with_objectness[1, 5 + nc, N] / [1, N, 5 + nc]ボックス、objectness、クラススコア。postprocessed_xyxy[1, N, 6] / [N, 6]NMS 後の x1、y1、x2、y2、スコア、クラス ID。インポート前の確認
- ONNX 物体検出モデルであり、.pt やクラウド API ID ではない。
- NCHW RGB 入力が 1 つ、対応出力テンソルが 1 つである。
- INT8 / UINT8 ではなく float32 または float16 を使う。
- クラス順と出力形式を確認し、単一クラスでは outputFormat を明示する。
- モデルフォルダーの .onnx は 1 つ、または config.json の modelFile で指定する。
- まずデスクトップの現在画面で試し、Android Agent でも別に検証する。
config.json の例
ラベルと outputFormat は例です。エクスポートしたモデルの実際のクラス順とテンソル形式に置き換えてください。
{
"id": "game-objects",
"name": "Game Objects",
"type": "yolo",
"modelFile": "model.onnx",
"outputFormat": "raw_yolo_no_objectness",
"id2label": {
"0": "ore",
"1": "tree"
},
"label2id": {
"ore": 0,
"tree": 1
}
}