Trước khi bạn bắt đầu
Sử dụng nhận dạng đối tượng khi LaiCai phải tìm ra vị trí của đối tượng trên màn hình. Phân loại hình ảnh chỉ trả lời những gì toàn bộ hình ảnh chứa và không trả về hộp giới hạn.
Hướng dẫn này sẽ đưa bạn từ ảnh chụp màn hình thô đến một mô hình ONNX tương thích với LaiCai. Nó sử dụng một tập dữ liệu trò chơi thực tế về các đối tượng nhỏ làm ví dụ đã được thực hiện, nhưng quy trình tương tự áp dụng cho các điều khiển ứng dụng, sản phẩm, biểu tượng, công cụ và các mục tiêu khác có thể nhìn thấy.

Sử dụng nhận dạng đối tượng khi LaiCai phải tìm ra vị trí của đối tượng trên màn hình. Phân loại hình ảnh chỉ trả lời những gì toàn bộ hình ảnh chứa và không trả về hộp giới hạn.
Thông thường là có khi chúng xuất hiện trong cùng một trò chơi hoặc ứng dụng, sử dụng cùng tỷ lệ chụp màn hình và cần được phát hiện trong cùng một Flow. Chỉ nên tách các mô hình riêng biệt khi các cảnh không liên quan, danh sách lớp trở nên rất lớn hoặc một nhóm cần kích thước đầu vào hoặc mục tiêu hiệu suất khác nhau.
Thu thập các khung hình từ thiết bị chính xác, độ phân giải, mức phóng to và chất lượng hình ảnh mà LaiCai sẽ thấy. Sự đa dạng quan trọng hơn là lưu trữ nhiều khung hình video liên tiếp trông gần như giống hệt nhau.
Một lớp nên đại diện cho một quyết định trực quan mà Flow cần đưa ra. Giữ tên ngắn gọn, độc đáo và ổn định vì cùng một thứ tự được sử dụng trongYOLOcác nhãn, data.yaml, config.json và trình chọn lớp vision.detect.
Nếu một tài nguyên đã được thu thập vẫn giống với tài nguyên có sẵn, hãy dán nhãn cho cả hai trạng thái, ví dụ như Copper và CopperDepleted. Đừng mong đợi ngưỡng độ tin cậy đơn lẻ để tách biệt đáng tin cậy hai trạng thái trực quan thực tế.

MakeSense.ai là một công cụ gắn nhãn dựa trên trình duyệt miễn phí. Đối với các mô hình LaiCai, hãy chọn Nhận dạng đối tượng, sử dụng các hộp hình chữ nhật và xuất ra.YOLOghi chú. (Object Detection)
Mở MakeSense.ai và tải lên các hình ảnh nguồn. Giữ thư mục hình ảnh gốc của bạn; nhãn ZIP đã xuất khẩu sẽ không thay thế nó.
Chọn Phát hiện đối tượng, không phải Nhận dạng hình ảnh. (Object Detection · Image Recognition)
Tạo danh sách lớp cuối cùng theo thứ tự cố định, sau đó vẽ một hình chữ nhật xung quanh mỗi đối tượng mục tiêu.
Xem xét lại các hình ảnh trống, các vật thể bị bỏ lỡ, các lớp sai và các hộp lỏng lẻo trước khi xuất.
Xuất chú thích Rect dưới dạng gói ZIP trongYOLOcấu trúc. (Rect annotations)
Kết nối mỗi hình ảnh với tệp nhãn .txt có cùng tên. Chia theo phiên ghi hoặc phạm vi thời gian, chứ không phải theo cách ngẫu nhiên phân tán các khung video lân cận trên đường ray và xác thực.
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: MonsterMột cách chia nhỏ thực tế là 80% là đào tạo và 20% là xác thực. Bộ xác thực phải chứa các cảnh chưa từng được xem trước.

Ví dụ dưới đây sử dụng các phiên bản đã được xác minh với quy trình làm việc này. Mô hình Nano là điểm khởi đầu an toàn nhất cho việc phát hiện liên tục. Sử dụng 640 px cho các đối tượng lớn hơn và 960 px khi các mục tiêu quan trọng nhỏ.
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| tham số | Giá trị ban đầu | vì sao |
|---|---|---|
model | YOLO26n | Đủ nhỏ và đủ nhanh cho lần lặp đầu tiên. |
imgsz | 960 / 640 | Sử dụng 960 cho mục tiêu nhỏ; sử dụng 640 khi mục tiêu lớn hơn hoặc tốc độ quan trọng hơn. |
epochs | 200 | Đặt một trần cao rộng rãi trong khi việc dừng sớm có thể hoàn thành sớm hơn. |
patience | 40 | Dừng lại sau khi xác thực không cải thiện trong 40 epoch. |
batch | 8 | Giảm xuống còn 4 hoặc 2 nếu bộ nhớ hết; chỉ tăng sau khi đo lường. |
device | mps / 0 / cpu | Silicon của Apple sử dụng mps, NVIDIA sử dụng 0 và bất kỳ máy nào cũng có thể sử dụng cpu. |
workers | 4 | Một điểm khởi đầu đa nền tảng bảo thủ. |
seed | 42 | Làm cho việc so sánh tập dữ liệu và đào tạo dễ dàng hơn để tái tạo. |
close_mosaic | 15 | Tắt mosaic gần cuối để các epoch cuối cùng thấy nhiều hình ảnh tự nhiên hơn. |
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,
)Sử dụng điểm kiểm tra tốt nhất, kiểm tra dự đoán trên các ảnh chụp màn hình chưa từng thấy và xem xét từng lớp riêng biệt. Điểm số toàn cầu cao có thể che giấu một lớp hiếm yếu.


LaiCai nhập ONNX, không phải tệp training .pt. Xuất một đầu vào NCHW RGB tĩnh, lô 1, float32 hoặc float16, và dự đoán một-đến-nhiều thô để LaiCai có thể áp dụng bộ lọc độ tin cậy và 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,
)Chọn thư mục chính trong thư mục Mô hình của LaiCai. Thư mục phải chứa config.json và tệp ONNX có tên bằng modelFile. Các ID lớp phải bắt đầu từ 0 và phải liên tiếp.
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
}
}Nếu LaiCai nói config.json bị thiếu hoặc không thể đọc được, bạn đã chọn một tệp ONNX hoặc một thư mục không hoàn chỉnh. Nhập thư mục mô hình đầy đủ và đảm bảo id2label hoặc label2id định nghĩa mọi lớp.
MởLaiCai Flow, truy cập Thư viện mô hình, nhập thư mục đã chuẩn bị và xác nhận rằng mô hình đã được đánh dấu Tương thích trước khi sử dụng nó trong vision.detect.
Lưu lại các hình ảnh gốc,YOLOcác nhãn, danh sách lớp, data.yaml, lệnh huấn luyện và best.pt cùng nhau. Các tệp này là nguồn tập dữ liệu có thể tái sử dụng của bạn; chỉ tệp ONNX được xuất khẩu thôi thì không đủ để huấn luyện lại một cách đáng tin cậy.
Không. Ghi nhãn cho lô hàng mới, xuất nó và hợp nhất nó với tập dữ liệu cũ đã lưu offline. Chỉ nhập lại dữ liệu cũ khi bạn cần chỉnh sửa các chú thích cũ.
Vâng, nhưng hãy thêm nó sau các lớp hiện có và định lại tên xuất khẩu mới theo tên lớp. Sau đó, huấn luyện lại trên tập dữ liệu đầy đủ để các lớp cũ vẫn được biểu diễn.
Hai trạng thái về mặt trực quan tương tự nhau và mô hình chưa học được sự khác biệt. Thêm một lớp trạng thái cạn kiệt riêng biệt hoặc các ví dụ tiêu cực cứng đã được xác minh, sau đó huấn luyện lại và xem xét ma trận nhầm lẫn.
Không. Một ngưỡng có thể đổi lấy việc gọi lại giao dịch để có độ chính xác, nhưng nó không thể thay thế các lớp thiếu, nhãn không nhất quán hoặc các ví dụ tiêu cực gây nhầm lẫn.
Các lệnh và lựa chọn tương thích trong hướng dẫn này đã được kiểm tra so với tài liệu chính thức hiện tại và hợp đồng mô hình LaiCai.
Sau khi mô hình tương thích, hãy sử dụng vision.detect để chọn lớp, ngưỡng và vùng màn hình, sau đó kết nối đường dẫn thành công hoặc thất bại với hành động Flow tiếp theo.