进阶 · 识别能力

模型管理

VsrTap 的识别能力由两层构成:OCR 读文字、YOLO 找目标(按游戏可选增强)。

识别能力分层

层次作用是否内置体积
OCR读取屏幕上的文字、数值、倒计时随安装包内置,开箱可用约 80 MB
模板匹配没有文字的小图标按像素模板定位随安装包内置,无需训练不占体积
YOLO检测没有文字可认的图标、怪物、NPC 等固定目标可选,需按游戏训练约 10~20 MB

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:类别名 完全一致,否则识别不到。命名建议用小写字母加下划线。

第二步:截图与标注

  1. 在游戏里截取各个界面,覆盖按钮可能出现的所有状态(可用/置灰/高亮)。
  2. 用标注工具绘制目标边界框,每张图至少覆盖目标出现的位置变化。
  3. 每个类别建议不少于 100 张样本,界面差异大的游戏建议 300 张以上。
  4. 导出为 YOLO 格式数据集(每张图对应一个同名 .txt 标注文件)。

第三步:训练

以 YOLOv8n 为基础模型训练即可,端侧推理速度与精度平衡最好:

yolo detect train \
  model=yolov8n.pt \
  data=dataset.yaml \
  imgsz=640 \
  epochs=100 \
  batch=16

训练在电脑上完成,不占用云手机资源。建议用 GPU,100 轮大约几十分钟到数小时。

第四步:导出并导入 App

  1. 导出为 NCNN 格式(端侧推理用),得到 .param 与 .bin 两个文件。
  2. 在 App 的「我 → 模型管理 → YOLO 模型」中点击导入,选择模型文件。
  3. 为模型命名并关联目标应用包名,这样在对应游戏里会自动使用。
  4. 导入后可在「运行监控」页查看识别框与置信度,验证效果。
导入后建议先跑一个只做识别的测试脚本,确认每个类别都能被正确检测,再写入正式脚本。

置信度阈值

脚本里可以用 置信>0.7 指定阈值。默认 0.6。 漏识别多就调低,误识别多就调高。全局默认值可在「设置 → 推理设置」中调整。

模型失效怎么办

游戏更新界面后,原来训练的 YOLO 模型可能失效,表现为识别不到目标、脚本卡住。

  • 先用 OCR 兜底:把关键的按钮文字改为 ocr:"文字" 识别。
  • 补充新界面的截图重新训练模型。
  • 在脚本里对同一目标准备两条路径,用 如果 判断走哪一条。