Prima di iniziare
Utilizzare il rilevamento degli oggetti quando LaiCai deve trovare dove un oggetto è sullo schermo. La classificazione delle immagini risponde solo a ciò che un'intera immagine contiene e non restituisce una scatola di rilegatura.
Questa guida ti porta da screenshot grezzi a un modello ONNX compatibile con LaiCai. Utilizza un vero e proprio set di dati di gioco a piccoli oggetti come l'esempio lavorato, ma lo stesso processo si applica ai controlli delle app, prodotti, icone, strumenti e altri obiettivi visibili.

Utilizzare il rilevamento degli oggetti quando LaiCai deve trovare dove un oggetto è sullo schermo. La classificazione delle immagini risponde solo a ciò che un'intera immagine contiene e non restituisce una scatola di rilegatura.
Di solito sì quando appaiono nello stesso gioco o app, utilizzare la stessa scala di screenshot, e devono essere rilevati nello stesso flusso. Modelli separati solo quando le scene non sono correlate, l'elenco di classe diventa molto grande, o un gruppo ha bisogno di una dimensione di input o target di prestazioni diverse.
Raccogliere cornici dal dispositivo esatto, risoluzione, livello di zoom e qualità visiva che LaiCai vedrà. La diversità conta più che salvare molti frame video consecutivi che sembrano quasi identici.
Una classe dovrebbe rappresentare una decisione visiva che il Flusso deve prendere. Mantenere i nomi brevi, unici e stabili perché lo stesso ordine viene utilizzato inYOLOetichette, data.yaml, config.json e il selettore di classe vision.detect.
Se una risorsa raccolta assomiglia ancora alla risorsa disponibile, etichetta entrambi gli stati, per esempio Copper e CopperDepleted. Non aspettatevi una soglia di fiducia da sola per separare in modo affidabile due stati visivi reali.

MakeSense.ai è uno strumento di etichettatura gratuito basato sul browser. Per i modelli LaiCai, scegliere Detezione oggetti, utilizzare scatole rettangolari ed esportareYOLOannotazioni. (Object Detection)
Apri MakeSense.ai e carica le immagini sorgente. Mantenere la cartella di immagine originale; l'etichetta esportata ZIP non lo sostituisce.
Scegliere Detezione oggetti, non Riconoscimento immagine. (Object Detection · Image Recognition)
Creare l'elenco di classe finale in un ordine fisso, quindi disegnare un rettangolo intorno ad ogni istanza di destinazione.
Rivedere immagini vuote, oggetti mancati, classi sbagliate e scatole sciolte prima di esportare.
Export Rect annotazioni come pacchetto ZIP inYOLOformato. (Rect annotations)
Coppia ogni immagine con un file di etichetta .txt con lo stesso nome. Spalato da sessione di registrazione o intervallo di tempo, non disperdendo casualmente fotogrammi video adiacenti su treno e validazione.
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: MonsterUna pratica divisione di partenza è 80% treno e 20% di validazione. Il set di validazione deve contenere scene veramente invisibili.

L'esempio seguente utilizza le versioni verificate con questo flusso di lavoro. Un modello Nano è il punto di partenza più sicuro per il rilevamento continuo. Utilizzare 640 px per oggetti più grandi e 960 px quando obiettivi importanti sono piccoli.
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| Parametro | Valore di partenza | Perché? |
|---|---|---|
model | YOLO26n | Piccolo e abbastanza veloce per la prima iterazione. |
imgsz | 960 / 640 | Utilizzare 960 per piccoli obiettivi; utilizzare 640 quando gli obiettivi sono più grandi o più velocità. |
epochs | 200 | Imposta un soffitto generoso mentre l'arresto precoce può finire prima. |
patience | 40 | Stops dopo la convalida non è migliorato per 40 epoche. |
batch | 8 | Ridurre a 4 o 2 se la memoria si esaurisce; aumentare solo dopo la misurazione. |
device | mps / 0 / cpu | Apple silicio utilizza mps, NVIDIA utilizza 0, e qualsiasi macchina può usare cpu. |
workers | 4 | Un punto di partenza trasversale conservatore. |
seed | 42 | Rende i confronti di dataset e formazione più facili da riprodurre. |
close_mosaic | 15 | Disattiva il mosaico vicino alla fine così le epoche finali vedono immagini più naturali. |
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,
)Utilizzare il miglior checkpoint, ispezionare le previsioni sugli screenshot invisibili e rivedere ogni classe separatamente. Un alto punteggio globale può nascondere una classe rara debole.


LaiCai importa ONNX, non il file .pt di formazione. Esportare un ingresso NCHW RGB statico, lotto 1, float32 o float16, e previsioni grezze one-to-many in modo che LaiCai possa applicare il filtraggio della fiducia e 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,
)Selezionare la directory stessa nella libreria Model di LaiCai. La directory deve contenere config.json e il file ONNX chiamato da modelFile. Gli ID di classe devono iniziare a 0 e rimanere contigui.
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
}
}Se LaiCai dice che config.json è mancante o illeggibile, hai selezionato un file ONNX o una cartella incompleta. Importa la directory completa del modello e assicurati che id2label o label2id definisca ogni classe.
ApriLaiCai Flow, vai alla libreria Model, importa la directory preparata e conferma che il modello è contrassegnato Compatibile prima di utilizzarlo in visione. Rileva. (vision.detect)
Salvare le immagini originali,YOLOEtichette, liste, dati. yaml, comando di addestramento e best.pt insieme. Questi file sono la vostra fonte di dataset riutilizzabile; il file ONNX esportato da solo non è sufficiente per la riqualifica affidabile. (data.yaml)
No. Etichetta il nuovo lotto, esportalo, e uniscilo con il vecchio dataset salvato offline. Re-importare vecchi dati solo quando è necessario correggere vecchie annotazioni.
Sì, ma lo ammetta dopo le classi esistenti e rimostra la nuova esportazione per nome di classe. Poi ripercorrere il set di dati completo in modo che le vecchie classi rimangano rappresentate.
I due stati sono visivamente simili e il modello non ha imparato la distinzione. Aggiungi una classe di stato depletato separata o esempi verificati negativi, poi riqualificare e rivedere la matrice di confusione.
No. Una soglia può commerciare richiamo per precisione, ma non può sostituire le classi mancanti, le etichette inconsistenti, o confondere esempi negativi.
I comandi e le scelte di compatibilità in questa guida sono stati controllati contro l'attuale documentazione ufficiale e il contratto di modello LaiCai.
Dopo che il modello è compatibile, utilizzare la visione. individuare per scegliere una classe, una soglia e una regione dello schermo, quindi collegare il percorso di successo o fallimento alla prossima azione Flow. (vision.detect)