ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

10分钟跑通 VinXiangQi:基于 YOLOv5 的象棋智能连线工具实战指南

10分钟跑通 VinXiangQi:基于 YOLOv5 的象棋智能连线工具实战指南 10分钟跑通 VinXiangQi基于 YOLOv5 的象棋智能连线工具实战指南【免费下载链接】VinXiangQiXiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQiVinXiangQi 是一款基于 YOLOv5 的中国象棋智能连线工具它持续识别屏幕上某个象棋对局软件里的棋盘把识别结果交给 UCI/UCCI 象棋引擎分析再把引擎建议的走法自动点回游戏里。换句话说它解决的是看着屏幕上的棋局让 AI 替我思考并落子这件事识别与点击全程自动不用手动输入棋谱。先说清楚它适合谁不适合谁适合在电脑上下网棋天天象棋、JJ 象棋等、想给对局接一个 AI 分析或自动续盘的棋友也适合想研究视觉识别 引擎驱动这套流程的开发者。它不是独立的象棋对弈软件自己不能开局对局必须依附于一个已在屏幕上运行的象棋客户端。另外项目当前仍在完善中README 作者也明确在招募参与者部分功能以能跑通为标准遇到边界情况需要自己调。动手前准备环境清单一次列全依赖很少主要是 Windows 侧的开发环境Windows 系统.NET Framework 4.8工程文件 目标框架为 v4.8Visual Studio 2019 或 2022任意社区版即可勾选 .NET 桌面开发负载一个 UCI/UCCI 象棋引擎的可执行文件如 Stockfish 的象棋版、Vain 等后面接引擎时用一个你打算连线的象棋客户端对局软件已经装好NuGet 包仓库里已经内置packages/目录含 OnnxRuntime、SQLite 等一般不需要手动还原若编译提示缺包在 Visual Studio 里对解决方案执行一次还原 NuGet 包即可。第一次跑起来从零到首局识别的最短路径第一步克隆仓库git clone https://gitcode.com/gh_mirrors/vi/VinXiangQi第二步用 Visual Studio 打开VinXiangQi.sln按 F5 编译运行。首次启动后按下面顺序操作选方案。主界面里选择要连线的目标方案内置的有天天象棋和JJ象棋_棋力评测两个方案文件是程序根目录Solutions文件夹里的 TXT写明截图/点击用哪个窗口的标题或类名。连别的软件就点寻找窗口句柄点完按钮 2 秒内把鼠标移到目标窗口上即可捕获。调缩放比。进入调试状态后看左上角的截图预览截图显示不全就调大缩放比出现黑边就调小直到窗口刚好覆盖整张棋盘图。选截图与鼠标模式。默认是后台截图 后台鼠标大多数软件可用若调试画面是黑的改勾前台截图见后面排错一节。开始连线。打开游戏对局按当前轮到谁选择我方开始或对方开始识别就会启动卡住了就点重新检测棋盘刷新一次。跑通后的状态就是上面那张主界面截图的样子左边是识别画面和识别结果右边是引擎与识别的各项设置。识别结果面板里的棋子是可以点击的点一下会把点击转发到被连线的游戏里方便你调试点击落点是否准确。它是怎么看懂棋盘的原理可以压缩成一句话截图 → YOLOv5 模型检测 → 还原成 9×10 的棋盘数组 → 喂给引擎。每次检测软件先按方案截一张棋盘区域图交给 YOLOv5 的 ONNX 模型默认nano.onnx输入尺寸 640×640见 模型定义模型输出每颗棋子的类别和坐标软件据此拼出当前局面。核心逻辑集中在 识别模块 里源码里维护了稳定棋盘和待确认棋盘两份状态用来过滤动画过程中的中间帧避免走子动画被误判成局面变化。接上引擎UCI 引擎怎么配、参数给多少在引擎管理里添加引擎填入引擎 exe 的完整路径即可。软件通过 UCI/UCCI 协议与引擎通信会读取引擎自带的全部选项引擎通信源码你可以在设置面板里逐项改。影响体验最大的几个参数默认值来自 ProgramSettings引擎步进时间思考时间默认 2.0 秒。电脑慢就调到 1.5 秒追求深度就加到 3~4 秒检测间隔默认 550ms。这是识别轮询的频率调小反应更快但更吃 CPU线程数默认 4按你的物理核心数调整停止分数默认 2000局面已明显领先/落后时提前停算省资源调完不用反复猜测效果引擎的思考输出面板会实时打印info行深度和评估分都在里面你能直接看到引擎想了多少、觉得谁优。三个真实用法开局库、棋力对练、自动续盘开局库对练。在开局库设置里选择是否启用云库或本地开局库界面见下图。之后每到一个开局阶段软件会先查库给出库里推荐着法而不是每次都让引擎从零算起。适合复盘经典开局、看引擎和库的推荐差在哪。让引擎替一方下棋人机/双引擎对练。选我方开始或对方开始决定引擎控制哪一方。引擎算出最佳步后自动点击模块会把这一步点回游戏窗口。你可以一边看引擎思考输出一边观察识别面板上的棋子位置是否和实际局面一致不一致通常就是缩放比没调好。自动续盘。有些平台对局结束后需要点再来一局之类的按钮。自动点击管理支持你框选这类按钮在管理界面右侧的画面上点两次先左上角后右下角框出按钮区域点保存然后在连线设置里勾选自动点击。之后识别到按钮出现在画面上软件就会自动点下去。框按钮时尽量把范围收小、只包住按钮核心部分不要框整个按钮块——匹配范围越小检测越快越准。想让它更顺眼按设备档位给参数原则很简单识别频率检测间隔决定跟手程度思考时间决定聪明程度两者都吃 CPU按机器分档。设备档位思考时间检测间隔线程数典型用途老机器 / 集显1.5 秒800ms2挂机式自动续盘主流独显机2.5 秒500ms4日常对弈辅助高性能多核4.0 秒300ms按物理核数认真看深度分析另外记住识别模型默认是nano.onnx速度优先。软件也支持把别的.onnx模型文件放进目录里切换精度和速度的取舍自己按机器定。出问题先查这几处现象调试截图是黑屏。可能原因目标软件渲染方式不被后台截图支持浏览器、部分客户端常见。 处理勾选前台截图。代价是窗口不能被遮挡。现象识别出来了但自动点击没点上。可能原因后台鼠标依赖向窗口发系统消息不是所有软件都响应。 处理改勾前台鼠标这是通用模式缺点是连线点击期间会占用你的鼠标期间别动它。现象识别结果出现软件却停止分析。可能原因持续识别模式下偶发的状态卡死作者在 README 里也提到了这个概率性问题。 处理点重新检测棋盘手动刷新若频繁出现把检测间隔调大一点。现象引擎一直报加载失败或超时。可能原因引擎路径写错或引擎不是 UCI/UCCI 协议的程序。 处理在引擎管理里重新选一遍 exe确认引擎单独运行时能正常响应uci指令。现象识别的棋子位置和真实棋盘错位。可能原因缩放比没对齐截图区域和真实棋盘有偏移。 处理重新进入调试状态微调缩放比以窗口刚好覆盖棋盘、无黑边为准。再往深处走一点到这一步已经能稳定用了剩下的是玩得更细的三件事自定义 YOLOv5 模型。你的客户端棋子样式比较特殊、识别总掉链子时可以按 YoloXiangQiModel 里定义的类别和尺寸训练自己的模型导出onnx替换即可。方案通用化。保存方案时方案保存如果截图标题里带了具体对局信息或网址删掉标题只留窗口类名方案换个对局还能复用。开局库策略。软件支持最高分和随机两种取法对练时切随机模式开局套路会更多样。代码去哪找想了解哪段逻辑直接看对应文件均在VinXiangQi/目录下主流程与交互Mainform.cs棋盘识别核心DetectionLogic.cs引擎通信UCI/UCCIEngineHelper.cs截图与窗口句柄ScreenshotHelper.cs、ScreenshotForm.cs模板匹配点击ImageHelper.cs、MouseHelper.cs开局库与棋库OpenBookHelper.cs、ChessDBHelper.cs规则与局面合法性XiangQiGame.cs先接上一个游戏试试参数不用一次调到位先用默认配置把一个你常下的客户端连上确认识别对、引擎会想、点击能落下三件事都成立剩下的档位调整自然会知道往哪调。遇到问题可以进项目 README 里留的交流群755655813反馈作者也在那里。【免费下载链接】VinXiangQiXiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表