前言
MYScrcpy Github / Gitee 从 1.6.4 版本开始,MYScrcpy为童鞋们提供了一个开放的插件开发环境(Extensions)。童鞋们可以根据需要自行开发插件。
上一章介绍了MYScrcpy值管理及按键事件响应,本章主要讲解一点题外话:如何训练一个YOLO11卡牌识别模型并实际使用。 对于牌面识别,有很多种方案,OpenCV找图、像素判别、颜色判别等。采用YOLO,觉得YOLO适用性及可移植性较强,也能起到举一反三的效果。
注意
插件用于功能测试及教学目的,切勿违法违规使用!
我们开始吧
环境准备
Nvidia/PyTorch
安装CUDA Toolkit 访问nVIDIA Developer,下载并安装CUDA Toolkit
访问PyTorch安装指南页,选择并pip安装合适版本。
因pytorch官网下载太慢,并且会导致下载校验无法通过的情况。 ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE. If you have updated the package versions, please update the hashes. Otherwise, examine the package contents carefully; someone may have tampered with them. 故笔者通过下载whl后手动安装 whl下载地址 选择最新版本且适配你开发环境的torch/torchaudio/torchvision进行安装 例如 笔者环境为 windows11 python 3.11 cu12.1 则下载 cu121/torch-2.3.1%2Bcu121-cp311-cp311-win_amd64.whl cu121/torchaudio-2.3.1%2Bcu121-cp311-cp311-win_amd64.whl cu121/torchvision-0.18.1%2Bcu121-cp311-cp311-win_amd64.whl
如果下载慢,可以使用迅雷等下载工具进行下载
模块间有依赖关系,故需要全部下载到本地后,使用 pip 按序进行安装
安装ultralytics pip install ultralytics
训练模型
准备训练图片
进入斗地主界面,发牌。
MYScrcpy 提供Capture插件用于快速截图
打开Capture控制面板
设置截图宽/2 高/2 为 320/320 即 截图大小为 640x640
按F12键切换键盘控制模式,将按键切换至Ctrl Mode
选中Rect复选框,显示截图框。在合适位置按C键截图。x键锁定当前截图框位置
因MYScrcpy 显示分辨率非设备实际分辨率,且界面可以随意拉伸缩放,所以截图有两种方式
选中Raw,则截取设备原始1:1图像,截图框会随界面自动伸缩,保证截取1:1像素点
非Raw,则截图框为实际像素框大小,不随MYScrcpy界面伸缩变化,所见即所得。可以调整MYScrcpy窗口大小截取不同比例下图片
- 左侧截图列表,双击预览图可以显示原图。截取完成后,点击Save批量保存 3. 目标标注 笔者使用roboflow进行标注,也可使用labelimg等工具进行标注。标注过程不过多赘述。 4. 训练 因当前场景对速度要求较低,准确性要求较高,同时因笔者硬件环境配置较低(GTX 1080),故选择yolo11m 进行训练 将标注好的dataset放置在项目目录下,同时准备好data.yaml (使用roboflow 下载数据集ZIP,里面已经包含了相应的文件)
train: ../train/images