进阶 · 识别能力

模型管理

VsrTap 的识别能力由三层构成:YOLO 找目标、OCR 读文字、VL 理解复杂画面。

三层识别能力

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

第二步:截图与标注

  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。 漏识别多就调低,误识别多就调高。全局默认值可在「设置 → 推理设置」中调整。

VL 大模型

VL 用于 YOLO 与 OCR 都判断不了的开放场景,例如「角色血量是否低于 30%」这类需要理解的判断。 它体积大、推理慢(单次 3~10 秒)、内存占用 1.5~2GB,因此被严格限制调用频率。

限制项策略
调用间隔不短于 5 秒
低内存设备内存小于 4GB 自动禁用
加载方式懒加载,长时间不用自动卸载
下载方式基础包不含 VL,按需下载

在「我 → 模型管理 → VL 模型管理」中可以下载、删除模型,并设置多个模型的优先级与自动降级顺序。

模型失效怎么办

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

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