始める前に
LaiCaiが画面上のオブジェクトの位置を特定する必要がある場合は、オブジェクト検出を使用します。画像分類は、画像全体に含まれる内容のみを返し、境界ボックスは返しません。
このガイドでは、生のスクリーンショットからLaiCai互換のONNXモデルまでお手伝いします。実際の小さなオブジェクトゲームデータセットを作業例として使用していますが、同じプロセスはアプリのコントロール、製品、アイコン、ツール、およびその他の表示可能なターゲットにも適用されます。

LaiCaiが画面上のオブジェクトの位置を特定する必要がある場合は、オブジェクト検出を使用します。画像分類は、画像全体に含まれる内容のみを返し、境界ボックスは返しません。
通常、同じゲームやアプリに表示され、同じスクリーンショットスケールを使用し、同じフローで検出する必要がある場合、はいを使用します。シーンが関連性がなく、クラスリストが非常に大きくなる場合、またはグループが異なる入力サイズまたはパフォーマンスターゲットを必要とする場合にのみ、別のモデルを使用します。
LaiCaiが表示する正確なデバイス、解像度、ズームレベル、および視覚品質からフレームを収集します。 ほとんど同じに見える連続したビデオフレームを保存するよりも、多様性が重要になります。
クラスは、フローが取る必要がある1つの視覚的決定を表す必要があります。同じ順序が使用されるため、名前は短く、ユニークで安定したものでなければなりません。YOLOラベル、data.yaml、config.json、およびvision.detectクラスセレクタ。
収集されたリソースがまだ使用可能なリソースに似ている場合は、たとえば銅と銅枯渇の2つの状態の両方をラベル付けします。 信頼水準だけで2つの実際の視覚状態を確実に区別できるとは期待しないでください。

MakeSense.aiは、ブラウザベースの無料ラベル付けツールです。LaiCaiモデルの場合、オブジェクト検出を選択し、長方形ボックスを使用し、エクスポートします。YOLO注釈。 (Object Detection)
MakeSense.aiを開き、ソース画像をアップロードします。元の画像フォルダを残しておいてください。エクスポートされたラベルZIPはそれを置き換えるものではありません。
画像認識ではなく、オブジェクト検出を選択してください。 (Object Detection · Image Recognition)
固定された順序で最終クラスのリストを作成し、各ターゲットインスタンスの周りに長方形を描画します。
エクスポートする前に、空の画像、見逃したオブジェクト、間違ったクラス、そして緩いボックスを確認してください。
Rect 注釈を ZIP パッケージとしてエクスポートするYOLOフォーマット。 (Rect annotations)
各画像を同じ名前の.txtラベルファイルとペアリングします。トレーニングと検証間で隣接するビデオフレームをランダムに散らばらせるのではなく、録画セッションまたは時間範囲で分割します。
dataset/
├── images/
│ ├── train/
│ └── val/
├── labels/
│ ├── train/
│ └── val/
└── data.yamlpath: /absolute/path/to/dataset
train: images/train
val: images/val
names:
0: Copper
1: CopperDepleted
2: Wood
3: Monster実用的で最初の分割率は80%のトレーニングと20%の検証です。検証セットには、実際に見たことのないシーンが含まれている必要があります。

以下の例は、このワークフローで検証されたバージョンを使用しています。ナノモデルは、継続的な検出の最も安全な出発点です。大きなオブジェクトの場合は640ピクセル、重要なターゲットが小さい場合は960ピクセルを使用してください。
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install ultralytics==8.4.138 onnx==1.22.0 \
onnxruntime==1.29.0 onnxslim==0.1.96| パラメータ | 開始値 | なぜ |
|---|---|---|
model | YOLO26n | 最初の回のために小さくて速い。 |
imgsz | 960 / 640 | 小さなターゲットには960を使用し、ターゲットが大きい場合や速度がより重要な場合は640を使用します。 |
epochs | 200 | 寛大な上限を設定し、早期停止により早く終了できます。 |
patience | 40 | 検証が40エポック連続で改善されない場合、停止します。 |
batch | 8 | メモリが足りなくなる場合は、4または2に減らします。測定後にのみ増やしてください。 |
device | mps / 0 / cpu | アップルのシリコンはmpsを使用し、NVIDIAは0を使用し、どのマシンでもCPUを使用できます。 |
workers | 4 | 保守的なクロスプラットフォームの出発点。 |
seed | 42 | データセットとトレーニングの比較を再現しやすくなります。 |
close_mosaic | 15 | 最後のエポックがより自然な画像を見るように、最後の部分近くのモザイクを無効にします。 |
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.train(
data="dataset/data.yaml",
imgsz=960,
epochs=200,
patience=40,
batch=8,
device="mps", # NVIDIA: 0 · CPU: "cpu"
workers=4,
seed=42,
close_mosaic=15,
)最高のチェックポイントを使用し、見えないスクリーンショットでの予測を確認し、各クラスを個別にレビューします。 高いグローバルスコアは、弱いレアクラスを隠すことができます。


LaiCaiは、training.ptファイルではなくONNXをインポートします。静的NCHW RGB入力、バッチ1、float32またはfloat16、および生のワンツーマニー予測を1つエクスポートして、LaiCaiが信頼度フィルタリングとNMSを適用できるようにします。
from ultralytics import YOLO
model = YOLO("runs/detect/train/weights/best.pt")
model.export(
format="onnx",
imgsz=960,
batch=1,
dynamic=False,
simplify=True,
nms=None,
)LaiCaiのモデルライブラリのディレクトリ自体を選択します。ディレクトリには、config.jsonとmodelFileで名前付けられたONNXファイルが含まれている必要があります。クラスIDは0から始まり、連続している必要があります。
game-objects/
├── config.json
└── model.onnx{
"id": "game-objects-v1",
"name": "Game Objects v1",
"type": "yolo",
"modelFile": "model.onnx",
"outputFormat": "raw_yolo_no_objectness",
"id2label": {
"0": "Copper",
"1": "CopperDepleted",
"2": "Wood",
"3": "Monster"
},
"label2id": {
"Copper": 0,
"CopperDepleted": 1,
"Wood": 2,
"Monster": 3
}
}LaiCaiがconfig.jsonが欠落しているか読み込めないと表示される場合は、ONNXファイルまたは不完全なフォルダを選択した可能性があります。完全なモデルディレクトリをインポートし、id2labelまたはlabel2idがすべてのクラスを定義していることを確認してください。
開くLaiCai Flow、モデルライブラリに移動し、準備されたディレクトリを読み込み、モデルが「互換性がある」とマークされていることを確認してから、vision.detectで使用してください。
元の画像を保存してください。YOLOラベル、クラスリスト、data.yaml、トレーニングコマンド、およびbest.ptを一緒に使用します。これらのファイルは、再利用可能なデータセットソースです。エクスポートされたONNXファイルだけでは、信頼性の高い再トレーニングには十分ではありません。
いいえ。新しいバッチにラベルを付け、エクスポートして、オフラインで保存した古いデータセットと統合します。古い注釈を修正する必要がある場合にのみ古いデータを再インポートします。
はい、ただし、既存のクラスの後に追加し、新しいエクスポートをクラス名で再マッピングします。 次に、完全なデータセットで再トレーニングして、古いクラスを引き続き表示できるようにします。
2つの状態は視覚的に似ており、モデルは区別を学習していません。別の消耗状態クラスまたは検証済みのハードネガティブ例を追加し、その後、混同行列を再訓練してレビューします。
いいえ。閾値は、精度をリコールと交換できるかもしれませんが、欠落したクラス、一貫性のないラベル、または混乱を招く否定的な例を補うことはできません。
このガイドのコマンドと互換性選択は、現在の公式ドキュメントとLaiCaiモデル契約と比較してチェックされています。
モデルが互換性がある後、vision.detectを使用してクラス、閾値、および画面領域を選択し、成功または失敗パスを次のFlowアクションに接続します。