象棋AI助手 VinXiangQi:免费开源的YOLOv5棋盘识别与引擎连线工具
2026/8/27 4:28:55 网站建设 项目流程

象棋AI助手 VinXiangQi:免费开源的YOLOv5棋盘识别与引擎连线工具

【免费下载链接】VinXiangQiXiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi

VinXiangQi 是一款基于 YOLOv5 深度学习模型的开源免费象棋 AI 助手:它能自动识别屏幕上任意象棋对局的棋盘局面,把位置交给 UCI 象棋引擎分析,甚至把推荐走法自动点回游戏里,实现"你下棋、AI 陪跑"的实时辅助。下面按真实使用顺序,从装环境到调参数完整走一遍。

它解决什么问题:把引擎接进在线象棋

传统象棋引擎(如 Fairy-Stockfish)都是命令行程序,你很难把它们接进天天象棋、JJ 象棋这类在线对弈软件。手动录局面、手动翻译走法,繁琐且容易出错。

VinXiangQi 的思路是三步闭环:

  1. 截图:捕获目标象棋软件窗口的画面;
  2. 识别:用 YOLOv5 模型(目标检测的一种,输入图片、输出每个棋子的类别与坐标)判断棋盘 9×10 个交叉点上各是哪方哪种棋子,模型一共区分 14 种棋子(红黑两色的车马炮士相兵加帅/将)加 1 个棋盘底图,共 15 个类别,对应 VinXiangQi/YoloXiangQiModel.cs 中的类别定义;
  3. 连线:把局面转成 FEN 局面描述发给引擎,引擎给出最佳着法后,再把点击转发回游戏窗口,完成走棋。

识别与游戏交互的核心逻辑分别在 VinXiangQi/DetectionLogic.cs 和 VinXiangQi/XiangQiGame.cs 中,引擎的启动、协议收发由 VinXiangQi/EngineHelper.cs 负责,它同时兼容 UCI(国际象棋通用协议)和 UCCI(中国象棋协议)两种引擎。

跑起来之前:环境、引擎与识别模型

依赖与编译

  • 系统需装有 .NET Framework 4.8(项目目标框架即 v4.8);
  • 用 Visual Studio 打开VinXiangQi.sln,编译运行即可,无需额外安装数据库或运行时。

获取源码:

git clone https://gitcode.com/gh_mirrors/vi/VinXiangQi

准备引擎

引擎放在程序根目录的Engines文件夹里,支持 UCI/UCCI 协议的象棋引擎都能用,Fairy-Stockfish 是常见选择。界面里可以添加/删除多个引擎,并针对每个引擎设置思考时间、思考深度、线程数,还能通过"引擎设置"打开引擎自身暴露的全部选项(由 UCI/UCCI 协议动态读取)。引擎交互封装在 VinXiangQi/EngineManageForm.cs 与 VinXiangQi/EngineSettingsForm.cs 中。

准备识别模型

程序启动时会自动扫描根目录下Models文件夹中的所有.onnx文件(ONNX 是跨框架的模型交换格式,这里由 ONNX Runtime 加载推理),把文件名(去掉后缀)作为模型名填入下拉框,默认使用nano.onnx。想换精度更高的模型,放一个对应的.onnx进去即可。

第一次连线:从创建方案到开始走棋

整个主界面分为"识别画面 → 识别结果 → 引擎输出"三个区域,下方状态栏显示识别状态(如"棋盘未改变""检测图像")。

创建窗口方案

软件不直接盯着"桌面",而是围绕"方案"工作——方案就是一个记录目标窗口信息的 TXT 文件,存放在Solutions文件夹里,每个方案一个子目录,核心是window.txt四行配置:

截图标题=中国象棋棋力评测 截图类= 点击标题=TKMCGame 点击类=

截图与点击可以指向不同窗口(比如引擎输出在一个窗口、棋局在另一个窗口)。仓库自带了"JJ象棋_棋力评测""天天象棋"等内置方案,也可用"寻找窗口句柄"(F2)功能:点按钮后 2 秒内把鼠标移到目标窗口上,即可自动获取其句柄。确认方案好用后,点"保存当前方案"固化下来,下次直接选用。

一个小技巧:如果窗口标题里含有对局编号或网址,删掉这些动态部分、只保留稳定的窗口类名,方案会更通用。

校准缩放比

不同显示器分辨率下,截图可能截不全或带黑边。勾选"调试状态"后调整"缩放比"数值:截不全就调大,出现黑边就调小,直到截图刚好铺满棋盘窗口,然后关闭调试状态。

选对截图模式与鼠标模式

这两个选项决定连线的"兼容性",是新手最容易踩坑的地方:

选项行为限制
后台截图只截目标窗口,窗口被遮挡也能截部分游戏/浏览器因渲染方式截出来是黑屏
前台截图直接截屏幕,通用窗口不能被任何东西遮挡
后台鼠标向窗口发消息模拟点击,不抢鼠标不是所有软件都响应
前台鼠标直接驱动鼠标点击,通用占用鼠标,点击过程中移开会失败

默认策略:优先后台截图 + 后台鼠标,遇到黑屏或点不动再切到对应的前台模式。截图与鼠标操作的实现分别在 VinXiangQi/ScreenshotHelper.cs 和 VinXiangQi/MouseHelper.cs。

校准完成后,打开一局棋,选择"我方开始"或"对方开始",连线就自动运行了;如果状态栏没有变化,点一下"重新检测棋盘"即可。识别结果区的棋子还可以直接点击,点击会转发到游戏窗口对应位置,方便调试坐标。

引擎输出怎么读:深度、得分与走法

界面下方的滚动输出区会持续打印引擎每一轮思考的结果,格式为:

  • 深度:引擎搜索的层数,越深思考越远;
  • 得分:局面评估分,正数表示先手一方(当前视角红方)占优;
  • 时间 / nps:本轮耗时与每秒搜索节点数,是衡量硬件性能最直观的指标;
  • 后面的中文着法是引擎的候选变着。

"绝杀立即出招"勾选后,引擎判断成杀时会直接出招而不等待。

低配电脑参数怎么调:分档配置建议

识别、截图、引擎思考三件事抢的是同一台机器的 CPU,参数不是越大越好,要按硬件分档:

硬件档位引擎思考时间检测间隔推荐模型适合场景
低配(老笔记本/四核)1.5 秒800mssmall 级别 .onnx休闲复盘
中配(近五年主流台式机)2.5 秒500msmedium 级别 .onnx日常对弈辅助
高配(八核以上+独立显卡)4.0 秒300mslarge 级别 .onnx认真训练研究

另外两个直接影响流畅度的旋钮:

  • 线程数:设为 CPU 核心数的 3/4 左右比较稳,全核跑容易把识别线程挤到没资源;
  • 用库最短步时:开局阶段查开局库最少花多少时间,步数越大开局走得越"库"。

常见问题与排障方法

截图是黑的目标软件(常见于浏览器、部分游戏)不支持后台窗口截图。勾选"前台截图",代价是窗口不能被遮挡。

点击不生效 / 走法点不进去换"前台鼠标"模式。它直接占用鼠标做点击,兼容性最好,只是点击瞬间别动鼠标。

引擎加不上来先确认Engines里的路径是否正确、文件是可执行文件(.exe),以及该引擎是否支持 UCI 或 UCCI——界面加载时会先探测协议类型。

识别的棋子整体偏移多为缩放比没调准,或方案里记录的是旧窗口。重新走一遍"调试状态 + 缩放比"校准,或重新寻找窗口句柄。

分析中途停了持续识别模式下偶发停止,点"重新检测棋盘"即可恢复。

进阶玩法:开局库、自动续盘与多引擎

开局库

把开局库文件放进根目录OpenBooks文件夹(VinXiangQi/OpenBookHelper.cs 负责加载),在"开局库设置"中勾选"使用开局库"并选择查询模式;勾选"使用云库"则启用在线库。开局阶段引擎会优先走库着,稳定性和速度都更好。

自动点击与自动续盘

想连"再来一局""复盘"这类按钮,用"自动点击管理":在管理窗口右侧的截图中,先点区域左上角、再点右下角框出按钮,保存模板后在连线设置里勾选"自动点击"即可。

两点注意:框选范围越小检测越快,别框整个按钮;失效的模板要及时清理,模板图堆积会拖慢每轮检测。

多引擎协同

引擎下拉框支持添加多个引擎。你可以给不同引擎设置不同的思考深度与线程数,对比它们对同一局面的评估差异——同一着法在不同引擎下得分差异很大时,往往就是局面转折点。

关键文件速查

  • VinXiangQi/Mainform.cs:主界面,模型/方案/开局库初始化与连线流程调度;
  • VinXiangQi/DetectionLogic.cs:YOLO 识别结果到棋盘格子的映射逻辑;
  • VinXiangQi/EngineHelper.cs:引擎进程与 UCI/UCCI 协议通信;
  • VinXiangQi/XiangQiGame.cs:局面、着法与 FEN 转换;
  • VinXiangQi/OpenCVHelper.cs、VinXiangQi/ImageHelper.cs:截图与图像处理辅助;
  • VinXiangQi/YoloXiangQiModel.cs:YOLOv5 模型类别定义(15 类);
  • VinXiangQi/ProgramSettings.cs:默认参数(如默认模型nano.onnx)。

目录约定:Models(识别模型)、Engines(引擎可执行文件)、Solutions(窗口方案与自动点击模板)、OpenBooks(开局库)。

获取帮助

软件当前功能仍在持续补全,欢迎参与完善。遇到 Bug 或有改进建议,可以加软件/技术交流群755655813反馈。

最后

把仓库克隆下来、放好引擎和模型、校准一次缩放比,通常半小时内就能看到第一着自动走法。建议先拿"调试状态"练手,理解截图画面和识别结果的对应关系后,再按自己的硬件档位把思考时间和检测间隔调到舒服的位置。工具只是陪练,真正的棋力提升,还是落在你自己的复盘和思考里。

【免费下载链接】VinXiangQiXiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询