Bevor Sie anfangen
Verwenden Sie Objekterkennung, wenn LaiCai herausfinden muss, wo sich ein Objekt auf dem Bildschirm befindet. Die Bildklassifizierung beantwortet nur, was ein ganzes Bild enthält, und gibt keine Begrenzungsbox zurück.
Dieser Leitfaden führt Sie von rohen Screenshots zu einem LaiCai-kompatiblen ONNX-Modell. Es verwendet einen echten Small-Object-Spieldatensatz als Arbeitsbeispiel, aber der gleiche Prozess gilt für App-Steuerelemente, Produkte, Icons, Tools und andere sichtbare Ziele.

Verwenden Sie Objekterkennung, wenn LaiCai herausfinden muss, wo sich ein Objekt auf dem Bildschirm befindet. Die Bildklassifizierung beantwortet nur, was ein ganzes Bild enthält, und gibt keine Begrenzungsbox zurück.
Normalerweise ja, wenn sie im selben spiel oder in derselben app erscheinen, die gleiche screenshot-skala verwenden und im selben flow erkannt werden müssen. Getrennte Modelle nur, wenn die Szenen nicht miteinander verwandt sind, die Klassenliste sehr groß wird oder eine Gruppe eine andere Eingabegröße oder ein anderes Leistungsziel benötigt.
Sammeln Sie Frames von dem genauen Gerät, der Auflösung, der Zoomstufe und der visuellen Qualität, die LaiCai sehen wird. Vielfalt ist wichtiger als das Speichern vieler aufeinanderfolgender Videorahmen, die fast identisch aussehen.
Eine Klasse sollte eine visuelle Entscheidung darstellen, die der Flow treffen muss. Halten Sie Namen kurz, einzigartig und stabil, weil die gleiche Reihenfolge inYOLOlabels, data.yaml, config.json und den Klassenselektor vision.detect.
Wenn eine gesammelte Ressource immer noch der verfügbaren Ressource ähnelt, beschriften Sie beide Zustände, z. B. Copper und CopperDepleted. Erwarten Sie nicht, dass eine Konfidenzschwelle allein zwei reale visuelle Zustände zuverlässig trennt.

MakeSense.ai ist ein kostenloses browserbasiertes Kennzeichnungstool. Wählen Sie für LaiCai-Modelle Objekterkennung, verwenden Sie rechteckige Boxen und exportieren SieYOLOAnmerkungen. (Object Detection)
Öffnen Sie MakeSense.ai und laden Sie die Quellbilder hoch. Behalten Sie Ihren ursprünglichen Bildordner; das exportierte Label ZIP ersetzt es nicht.
Wählen Sie Objekterkennung, nicht Bilderkennung. (Object Detection · Image Recognition)
Erstellen Sie die endgültige Klassenliste in einer festen Reihenfolge und zeichnen Sie dann ein Rechteck um jede Zielinstanz.
Überprüfen Sie leere Bilder, verpasste Objekte, falsche Klassen und lose Boxen vor dem Export.
Rect-Anmerkungen als ZIP-Paket inYOLOFormat. (Rect annotations)
Kombinieren Sie jedes Bild mit einer gleichnamigen .txt-Labeldatei. Split durch Aufnahmesitzung oder Zeitbereich, nicht durch zufällige Streuung benachbarter Videorahmen über Zug und Validierung.
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: MonsterEin praktischer Startsplit ist 80% Zug und 20% Validierung. Das Validierungsset muss wirklich unsichtbare Szenen enthalten.

Das folgende Beispiel verwendet Versionen, die mit diesem Workflow verifiziert wurden. Ein Nano-Modell ist der sicherste Ausgangspunkt für die kontinuierliche Detektion. Verwenden Sie 640 px für größere Objekte und 960 px, wenn wichtige Ziele klein sind.
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| Parameter | Startwert | Warum |
|---|---|---|
model | YOLO26n | Klein und schnell genug für die erste Iteration. |
imgsz | 960 / 640 | Verwenden Sie 960 für kleine Ziele; Verwenden Sie 640, wenn Ziele größer sind oder die Geschwindigkeit wichtiger ist. |
epochs | 200 | Legt eine großzügige Decke fest, während das frühzeitige Stoppen früher beendet werden kann. |
patience | 40 | Stopps nach der Validierung haben sich für 40 Epochen nicht verbessert. |
batch | 8 | Reduzieren Sie auf 4 oder 2, wenn das Gedächtnis abgelaufen ist; erhöhen Sie erst nach der Messung. |
device | mps / 0 / cpu | Apple Silizium verwendet mps, NVIDIA verwendet 0, und jede Maschine kann cpu verwenden. |
workers | 4 | Ein konservativer Cross-Plattform-Startpunkt. |
seed | 42 | Erleichtert die Reproduktion von Datensätzen und Trainingsvergleichen. |
close_mosaic | 15 | Deaktiviert Mosaik am Ende so Endepochen sehen mehr natürliche Bilder. |
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,
)Verwenden Sie den besten Checkpoint, überprüfen Sie Vorhersagen auf unsichtbaren Screenshots und überprüfen Sie jede Klasse separat. Eine hohe globale Punktzahl kann eine schwache seltene Klasse verbergen.


LaiCai importiert ONNX, nicht die Trainings-.pt-Datei. Exportieren Sie einen statischen NCHW-RGB-Eingang, Batch 1, float32 oder float16 und rohe Eins-zu-viele-Vorhersagen, damit LaiCai Konfidenzfilterung und NMS anwenden kann.
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,
)Wählen Sie das Verzeichnis selbst in der LaiCai-Modellbibliothek. Das Verzeichnis muss config.json und die von modelFile benannte ONNX-Datei enthalten. Die Klassen-IDs müssen bei 0 beginnen und zusammenhängend bleiben.
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
}
}Wenn LaiCai sagt, dass config.json fehlt oder nicht lesbar ist, haben Sie eine ONNX-Datei oder einen unvollständigen Ordner ausgewählt. Importieren Sie das komplette Modellverzeichnis und stellen Sie sicher, dass id2label oder label2id jede Klasse definiert.
OffenLaiCai FlowGehen Sie zur Modellbibliothek, importieren Sie das vorbereitete Verzeichnis und bestätigen Sie, dass das Modell als kompatibel markiert ist, bevor Sie es in der Ansicht verwenden. erkennen. (vision.detect)
Speichern Sie die Originalbilder,YOLOLabels, Klassenliste, Daten. Yaml, Trainingskommando und best.pt zusammen. Diese Dateien sind Ihre wiederverwendbare Datensatzquelle; die exportierte ONNX-Datei allein reicht nicht für eine zuverlässige Umschulung aus. (data.yaml)
Nein. Beschriften Sie den neuen Batch, exportieren Sie ihn und verbinden Sie ihn mit dem gespeicherten alten Datensatz offline. Reimportieren Sie alte Daten nur dann, wenn Sie alte Anmerkungen korrigieren müssen.
Ja, aber fügen Sie es nach den vorhandenen Klassen an und ordnen Sie den neuen Export nach Klassennamen neu. Dann trainieren Sie den vollständigen Datensatz um, damit die alten Klassen vertreten bleiben.
Die beiden Zustände sind visuell ähnlich und das Modell hat die Unterscheidung nicht gelernt. Fügen Sie eine separate Depleted-State-Klasse oder verifizierte Hard-Negativ-Beispiele hinzu und trainieren Sie dann die Verwirrungsmatrix neu und überprüfen Sie sie.
Nein. Ein Schwellenwert kann den Rückruf für Präzision handeln, kann jedoch fehlende Klassen, inkonsistente Etiketten oder verwirrende negative Beispiele nicht ersetzen.
Die Befehle und Kompatibilitätsoptionen in diesem Handbuch wurden mit der aktuellen offiziellen Dokumentation und dem LaiCai-Modellvertrag verglichen.
Nachdem das Modell kompatibel ist, verwenden Sie Vision. Erkennen, ob eine Klasse, ein Schwellenwert und eine Bildschirmregion ausgewählt werden sollen, und verbinden Sie dann den Erfolgs- oder Fehlerpfad mit der nächsten Flow-Aktion. (vision.detect)