Прежде чем начать
Используйте обнаружение объектов, когда LaiCai должен найти объект на экране. Классификация изображений отвечает только на то, что содержит целое изображение, и не возвращает ограничивающий ящик.
Это руководство перенесет вас от необработанных скриншотов к совместимой с LaiCai модели ONNX. В качестве примера он использует реальный набор данных для игр с малым объектом, но тот же процесс применяется к элементам управления приложениями, продуктам, значкам, инструментам и другим видимым целям.

Используйте обнаружение объектов, когда LaiCai должен найти объект на экране. Классификация изображений отвечает только на то, что содержит целое изображение, и не возвращает ограничивающий ящик.
Обычно да, когда они появляются в одной и той же игре или приложении, используют одну и ту же шкалу скриншотов и должны быть обнаружены в одном потоке. Отдельные модели только тогда, когда сцены не связаны между собой, список классов становится очень большим, или одной группе требуется другой размер входа или целевая производительность.
Соберите кадры из точного устройства, разрешения, уровня масштабирования и визуального качества, которые увидит LaiCai. Разнообразие имеет большее значение, чем сохранение многих последовательных видеокадров, которые выглядят почти одинаково.
Класс должен представлять одно визуальное решение, которое должен принять поток. Держите имена короткими, уникальными и стабильными, потому что тот же порядок используется вYOLOЯрлыки, data.yaml, config.json и селектор классов vision.detect.
Если собранный ресурс по-прежнему напоминает доступный ресурс, обозначьте оба состояния, например Copper и CopperDepleted. Не ожидайте, что один только порог доверия надежно разделит два реальных визуальных состояния.

MakeSense.ai - это бесплатный инструмент маркировки на основе браузера. Для моделей LaiCai выберите обнаружение объектов, используйте прямоугольные коробки и экспортируйте их.YOLOаннотации. (Object Detection)
Откройте MakeSense.ai и загрузите исходные изображения. Храните оригинальную папку с изображением; экспортируемая этикетка ZIP не заменяет ее.
Выберите обнаружение объектов, а не распознавание изображений. (Object Detection · Image Recognition)
Создайте окончательный список классов в фиксированном порядке, затем нарисуйте прямоугольник вокруг каждого целевого экземпляра.
Просмотрите пустые изображения, пропущенные объекты, неправильные классы и свободные коробки перед экспортом.
Экспортные аннотации как пакет ZIPYOLOФормат. (Rect annotations)
Соедините каждое изображение с одноимённым файлом .txt label. Разделение путем записи сессии или диапазона времени, а не путем случайного рассеяния смежных видеокадров по поезду и валидации.
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% проверки. Набор валидации должен содержать действительно невидимые сцены.

В приведенном ниже примере используются версии, проверенные этим рабочим процессом. Модель Nano является наиболее безопасной отправной точкой для непрерывного обнаружения. Используйте 640 px для больших объектов и 960 px, когда важные цели малы.
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 | Apple Silicon использует 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 импортирует ONNX, а не учебный файл .pt. Экспортируйте один статический вход NCHW RGB, партию 1, поплавок 32 или поплавок 16 и сырые прогнозы один ко многим, чтобы LaiCai мог применять фильтрацию доверия и NMS. (float32 · float16)
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 и файл ONNX по имени modelFile. Идентификаторы класса должны начинаться с 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Ярлыки, список классов, данные. Ямл, тренировочная команда и Best.pt вместе. Эти файлы являются источником набора данных многоразового использования; одного только экспортированного файла ONNX недостаточно для надежной переподготовки. (data.yaml · best.pt)
Нет. Пометьте новую партию, экспортируйте ее и объедините с сохраненным старым набором данных в автономном режиме. Реимпорт старых данных только тогда, когда вам нужно исправить старые аннотации.
Да, но добавьте его после существующих классов и переназначьте новый экспорт по названию класса. Затем переучитесь на полный набор данных, чтобы старые классы оставались представленными.
Оба состояния визуально похожи, и модель не узнала различия. Добавьте отдельный класс истощенных состояний или проверенные примеры с жестким отрицанием, а затем переобучите и пересмотрите матрицу путаницы.
Нет. Порог может обменять отзыв на точность, но он не может заменить недостающие классы, противоречивые ярлыки или запутанные негативные примеры.
Команды и варианты совместимости в этом руководстве были проверены на соответствие текущей официальной документации и модельному контракту LaiCai.
После совместимости модели используйте зрение. Выберите класс, порог и область экрана, а затем соедините путь успеха или неудачи со следующим действием потока. (vision.detect)