Antes de começar
Use a detecção de objetos quando LaiCai deve encontrar onde um objeto está na tela. A classificação das imagens só responde ao que uma imagem inteira contém e não devolve uma caixa delimitadora.
Com o Recognition Training do LaiCai Screen Mirroring, você grava, rotula, treina e testa sem sair do app. Se já tem um conjunto de dados YOLO ou quer controlar todo o treinamento, siga o fluxo avançado mais abaixo.

No LaiCai Screen Mirroring, abra , crie um projeto e siga as sete etapas da barra lateral.
Adicione as classes que deseja reconhecer, como minérios, árvores ou botões.
Conecte um celular, use normalmente e grave a tela como vídeo de demonstração.
Percorra a demonstração arrastando ou quadro a quadro e salve os quadros úteis para o treinamento.
Desenhe uma caixa em volta de cada alvo em cada imagem. Imagens sem alvos podem ser salvas como imagens sem alvo.
Treine uma nova versão do modelo com as imagens rotuladas.
Execute o reconhecimento ao vivo em um celular conectado, corrija omissões e detecções falsas e salve-as novamente como amostras.
Revise as versões anteriores do modelo e os resultados do treinamento.
Se você já tem um conjunto de dados YOLO ou quer controlar a arquitetura do modelo e os parâmetros de treinamento, pode rotular e treinar fora do app e depois importar o modelo ONNX no LaiCai.
Use a detecção de objetos quando LaiCai deve encontrar onde um objeto está na tela. A classificação das imagens só responde ao que uma imagem inteira contém e não devolve uma caixa delimitadora.
Normalmente sim quando eles aparecem no mesmo jogo ou aplicativo, use a mesma escala de captura de tela, e precisa ser detectado no mesmo fluxo. Modelos separados apenas quando as cenas não estão relacionadas, a lista de classes torna-se muito grande, ou um grupo precisa de um tamanho de entrada diferente ou alvo de desempenho.
Colete quadros do dispositivo exato, resolução, nível de zoom e qualidade visual que a LaiCai verá. Diversidade importa mais do que salvar muitos quadros de vídeo consecutivos que parecem quase idênticos.
Uma classe deve representar uma decisão visual que o Flow precisa fazer. Mantenha os nomes curtos, únicos e estáveis porque a mesma ordem é usada emYOLOetiquetas, data.yaml, config.json e o seletor de classe vision.detecte.
Se um recurso coletado ainda se assemelha ao recurso disponível, rotule ambos os estados, por exemplo Copper e CopperDepleted. Não espere um limiar de confiança sozinho para separar de forma confiável dois estados visuais reais.

MakeSense.ai é uma ferramenta de rotulagem gratuita baseada em navegador. Para modelos LaiCai, escolha Detecção de Objetos, use caixas retangulares e exporteYOLOAnotações. (Object Detection)
Abra MakeSense.ai e faça upload das imagens de origem. Mantenha sua pasta de imagem original; a etiqueta exportada ZIP não a substitui.
Escolha a Detecção de Objectos, não o Reconhecimento de Imagens. (Object Detection · Image Recognition)
Crie a lista de classes final em uma ordem fixa, em seguida, desenhe um retângulo em torno de cada instância alvo.
Reveja imagens vazias, objetos perdidos, classes erradas e caixas soltas antes de exportar.
Exportar anotações Rect como um pacote ZIPYOLOformato. (Rect annotations)
Emparelhe cada imagem com um arquivo de etiqueta .txt com o mesmo nome. Dividir por gravação de sessão ou intervalo de tempo, não espalhando aleatoriamente quadros de vídeo adjacentes através do trem e validação.
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: MonsterUma divisão de partida prática é 80% trem e 20% validação. O conjunto de validação deve conter cenas genuinamente invisíveis.

O exemplo abaixo usa versões verificadas com este fluxo de trabalho. Um modelo Nano é o ponto de partida mais seguro para detecção contínua. Use 640 px para objetos maiores e 960 px quando alvos importantes são pequenos.
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| Parâmetro | Valor inicial | Porquê? |
|---|---|---|
model | YOLO26n | Pequeno e rápido o suficiente para a primeira iteração. |
imgsz | 960 / 640 | Use 960 para alvos pequenos; use 640 quando os alvos são maiores ou a velocidade importa mais. |
epochs | 200 | Define um teto generoso enquanto a parada precoce pode terminar mais cedo. |
patience | 40 | Paradas após a validação não melhorou para 40 épocas. |
batch | 8 | Reduza para 4 ou 2 se a memória acabar; aumente apenas após a medição. |
device | mps / 0 / cpu | O silicone da Apple usa mps, NVIDIA usa 0 e qualquer máquina pode usar cpu. |
workers | 4 | Um ponto de partida conservador entre plataformas. |
seed | 42 | Torna as comparações de dados e treinamento mais fáceis de reproduzir. |
close_mosaic | 15 | Desabilita mosaico perto do fim para que as épocas finais vejam mais imagens naturais. |
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,
)Use o melhor ponto de controle, inspecione previsões em capturas de tela invisíveis e reveja cada classe separadamente. Uma pontuação global elevada pode esconder uma classe rara fraca.


LaiCai importa ONNX, não o arquivo .pt de treinamento. Exportar uma entrada estática NCHW RGB, lote 1, float32 ou float16, e previsões brutas de uma para muitas para que LaiCai possa aplicar filtragem de confiança 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,
)Selecione o diretório em si na biblioteca Modelo de LaiCai. O diretório deve conter config.json e o arquivo ONNX nomeado pelo modelFile. Os IDs da classe devem começar em 0 e permanecer contíguos.
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 diz config.json está faltando ou ilegível, você selecionou um arquivo ONNX ou uma pasta incompleta. Importar o diretório completo do modelo e certificar-se de id2label ou label2id define cada classe.
AbrirLaiCai Flow, vá para Model library, importe o diretório preparado, e confirme que o modelo está marcado Compatível antes de usá-lo em visão. detectar. (vision.detect)
Gravar as imagens originais,YOLOetiquetas, lista de classes, dados. yaml, comando de treino, e best.pt juntos. Estes arquivos são sua fonte de conjunto de dados reutilizável; o arquivo ONNX exportado sozinho não é suficiente para reciclagem confiável. (data.yaml)
Não. Rotular o novo lote, exportá-lo e fundi-lo com o conjunto de dados antigo gravado offline. Reimportar dados antigos apenas quando você precisa corrigir anotações antigas.
Sim, mas anexá-lo após as classes existentes e remapear a nova exportação pelo nome da classe. Em seguida, retreine no conjunto de dados completo para que as classes antigas permaneçam representadas.
Os dois estados são visualmente semelhantes e o modelo não aprendeu a distinção. Adicione uma classe de estado empobrecido separado ou exemplos hard-negativos verificados, então retreine e reveja a matriz de confusão.
Não. Um limiar pode trocar memória por precisão, mas não pode substituir classes em falta, rótulos inconsistentes ou exemplos negativos confusos.
Os comandos e as escolhas de compatibilidade neste guia foram verificados com base na documentação oficial atual e no contrato do modelo LaiCai.
Após o modelo ser compatível, use a visão. detectar para escolher uma classe, limiar e região de tela, em seguida, conectar o caminho de sucesso ou falha para a próxima ação Flow. (vision.detect)