三层识别能力
| 层次 | 作用 | 是否内置 | 体积 |
|---|---|---|---|
| YOLO | 检测按钮、图标、怪物、NPC 等固定目标 | 需按游戏训练 | 约 10~20 MB |
| OCR | 读取屏幕上的文字、数值、倒计时 | 内置通用模型 | 约 15 MB |
| VL 大模型 | 开放式场景理解与判断 | 按需下载 | 约 1.5 GB |
OCR:开箱可用
通用 OCR 模型已内置,无需任何配置即可使用 ocr:"文字" 与 ocr_contains:"文字"。
它对 UI 上的印刷体识别效果最好,适合弹窗标题、按钮文字、任务描述、数值与倒计时。
精确匹配
ocr:"确认" 要求文字完全一致;不确定完整文案时用
ocr_contains:"确认" 做包含匹配,抗干扰能力更强。
YOLO:需要按游戏训练
每个游戏的界面元素都不一样,所以 YOLO 模型需要针对具体游戏训练。 你需要标注出希望识别的按钮与元素,训练后导入 App。
第一步:确定要标注哪些目标
以「英雄没有闪」公会任务脚本为例,需要标注 17 个类别:
guild_entry
donate_btn
basic_donate
guild_task_btn
refresh_btn
task_first
challenge_btn
close_btn
home_btn
bounty_entry
bounty_4star
bounty_3star
boss_entry
setting_btn
input_account
input_password
login_btn
类别名要与脚本里 yolo:类别名 完全一致,否则识别不到。命名建议用小写字母加下划线。
第二步:截图与标注
- 在游戏里截取各个界面,覆盖按钮可能出现的所有状态(可用/置灰/高亮)。
- 用标注工具绘制目标边界框,每张图至少覆盖目标出现的位置变化。
- 每个类别建议不少于 100 张样本,界面差异大的游戏建议 300 张以上。
- 导出为 YOLO 格式数据集(每张图对应一个同名 .txt 标注文件)。
第三步:训练
以 YOLOv8n 为基础模型训练即可,端侧推理速度与精度平衡最好:
yolo detect train \
model=yolov8n.pt \
data=dataset.yaml \
imgsz=640 \
epochs=100 \
batch=16
训练在电脑上完成,不占用云手机资源。建议用 GPU,100 轮大约几十分钟到数小时。
第四步:导出并导入 App
- 导出为 NCNN 格式(端侧推理用),得到
.param与.bin两个文件。 - 在 App 的「我 → 模型管理 → YOLO 模型」中点击导入,选择模型文件。
- 为模型命名并关联目标应用包名,这样在对应游戏里会自动使用。
- 导入后可在「运行监控」页查看识别框与置信度,验证效果。
导入后建议先跑一个只做识别的测试脚本,确认每个类别都能被正确检测,再写入正式脚本。
置信度阈值
脚本里可以用 置信>0.7 指定阈值。默认 0.6。
漏识别多就调低,误识别多就调高。全局默认值可在「设置 → 推理设置」中调整。
VL 大模型
VL 用于 YOLO 与 OCR 都判断不了的开放场景,例如「角色血量是否低于 30%」这类需要理解的判断。 它体积大、推理慢(单次 3~10 秒)、内存占用 1.5~2GB,因此被严格限制调用频率。
| 限制项 | 策略 |
|---|---|
| 调用间隔 | 不短于 5 秒 |
| 低内存设备 | 内存小于 4GB 自动禁用 |
| 加载方式 | 懒加载,长时间不用自动卸载 |
| 下载方式 | 基础包不含 VL,按需下载 |
在「我 → 模型管理 → VL 模型管理」中可以下载、删除模型,并设置多个模型的优先级与自动降级顺序。
模型失效怎么办
游戏更新界面后,原来训练的 YOLO 模型可能失效,表现为识别不到目标、脚本卡住。
- 先用 OCR 兜底:把关键的按钮文字改为
ocr:"文字"识别。 - 补充新界面的截图重新训练模型。
- 在脚本里对同一目标准备两条路径,用
如果判断走哪一条。