利用YOLO网络识别围棋图谱

  • 1 Introduction
  • 2. Proposed System
    • 2.1 Board detection
    • 2.2 Go pieces detection and layout classification
      • 2.2.1. yolo
      • 2.2.2 Improved Detection Network Based on yolo
      • 2.2.3 model ensemble
  • 3 Experiment Setup
    • 3.1 Datasets
    • 3.2 Evaluation protocol
  • 4. Results and Discussion
    • 4.1. Test Results
    • 4.2. Counting Errors

1 Introduction

[计算机视觉]
《Detection of Go-board contour in real image using genetic algorithm》.
《Automatic Chessboard Detection for Intrinsic and Extrinsic Camera Parameter Calibration》
《ChESS–Quick and robust detection of chess-board features》
《Chess Piece Recognition Using Oriented Chamfer Matching with a Comparison to CNN》2018
《基于围棋图像的围棋识别方法以及棋盘》(专利)

[神经网络]
《Chess position identification using pieces classification based on synthetic images generation and deep neural network fine-tuning》
《Chess piece recognition using oriented chamfer matching with a comparison to cnn》
《Augmented Reality Chess Analyzer (ARChessAnalyzer): In-Device Inference of Physical Chess Game Positions through Board Segmentation and Piece Recognition using Convolutional Neural Network》
《使用yolov3训练识别围棋死活题和围棋局面》(经验贴)

2. Proposed System

2.1 Board detection

 直接用网络检测棋子会出现很多问题;
 (1)、棋盘外散落的棋子不构成棋局,可能会与引起混淆。
 (2)、单个棋子只占原始图像的很小一部分,通常,在小物体检测任务中网络的漏检率较高。

 因此,我们先在输入图像中定位棋盘,然后在棋盘中检测棋子;根据棋盘的四角坐标,把输入图像进行剪切和透视变换,接着把二次处理后的图像输入到网络中,同时输出棋子位置和分类。下图为图像处理示意:

裁剪后:
透视变换后:

 本文使用的网络为yolov5, 并且对每个阶段使用特定的模型,分别调优参数和结构,以提高每个任务的性能。因为棋盘定位任务相对简单,所以使用模型为yolov5l, 参数为默认值

2.2 Go pieces detection and layout classification

2.2.1. yolo

 yolov5原理和结构框架在此:https://blog.csdn.net/qq_39542170/article/details/109856001
后面会补充具体检测流程

2.2.2 Improved Detection Network Based on yolo

 在这个阶段,两种数据集(见后面的数据说明部分)分别训练两个网络,进一步改进了用于棋子检测的YOLOv5模型
 (1)、加入CBAM:
 改进后的head部分的结构如图:

 (2)、加入SWA
 (3)、调整参数

  • 使用精确度最高的Yolov5X模型;
  • 调整超参:lr0: 0.00744;lrf: 0.168;momentum: 0.98;weight_decay: 0.00054;warmup_epochs: 4.06;warmup_momentum: 0.95;warmup_bias_lr: 0.132;giou: 0.0702;cls: 0.67;cls_pw: 1.19;obj: 0.615;obj_pw: 1.25;iou_t: 0.2;anchor_t: 3.4;fl_gamma: 0.0;hsv_h: 0.0193;hsv_s: 0.493;hsv_v: 0.49;degrees: 0.0;translate: 0.0711;scale: 0.25;shear: 0.0;perspective: 0.0;flipud: 0.0;fliplr: 0.5;mosaic: 0.988;mixup: 0.0
  • 适当更改nms方式

2.2.3 model ensemble

 将两个网络的分别映射成19*19的矩阵,然后将这两个矩阵进行结果的融合,融合的方式为stacking

stacking的原理如图:

3 Experiment Setup

3.1 Datasets

拍摄:
 围棋图谱照片拍摄于棋社与实验室,使用器材为手机、相机、平板,拍摄背景、棋盘颜色、光线明暗均有变化,最终得到围棋棋盘高光污染的数字图像共3053张。

预处理:
 灰度化;重点在于检测完棋盘后的二次处理。

标注:
 对于全局棋盘,首先手动标注四个角的坐标,按照固定的顺序输入每一个棋盘格的标签,其中每一格的棋子标签分为黑、白、空三种;然后通过透视变换用四个角的坐标计算整个棋盘19X19的位置坐标,得到VOC格式的XML文件。

 如下图所示,数据集D1以单个棋盘格作为目标检测区域,每张原始图像共有个目标区域;数据集D2以相邻两个棋盘格作为目标检测区域,每张原始图像共有个目标区域;因为原始图像存在大量被高光污染区域,反光区域面积大,图像特征和白棋相似,可以采用扩大目标检测区域的方式,使网络自动学习更多反光区域特征。

数据集D1:

数据集D2:

3.2 Evaluation protocol

 在本研究中,计算计数精度是为了评估测试中为其图谱照片的数子性能。计数精度用下式表示,以样本平均误差作为样本平均误差,以测试数据集计数误差的平均值进行分析:

 Ei是第i张图的计数误差,ci为第i张图的真实检测目标个数,本实验中统一为361,N为图片个数

4. Results and Discussion

4.1. Test Results

网络训练表格后面补充;
结果表格后面补充;
模型文件1检测结果:

模型文件2检测结果:

模型融合后的电子化结果:

 该系统可识别大面积高光,可检测出破损棋盘棋子布局

4.2. Counting Errors

 除去人眼也无法辨别的极端案例,以下情况中存在错检:
 1)集中的点状强高光

 2)棋子偏离棋盘交叉点

一种能克服反光现象的围棋图谱可靠识别方法相关推荐

  1. 空间注意力机制sam_一种基于注意力机制的神经网络的人体动作识别方法与流程...

    本发明属于计算机视觉领域,具体来说是一种基于注意力机制的神经网络的人体动作识别的方法. 背景技术: 人体动作识别,具有着非常广阔的应用前景,如人机交互,视频监控.视频理解等方面.按目前的主流方法,可主 ...

  2. 一种基于深度学习的遥感图像分类及农田识别方法

    文章针对现有的神经网络收敛速度慢.识别准确率不高的缺点,提出了一种基于卷积神经网络的遥感图像农田分类及识别方法.该算法使用较大的卷积核,有效地提取梯度信息:设计深度为6层的卷积神经网络,提高了网络的分 ...

  3. matlab手写字母识别,一种基于MATLAB的手写字母的神经网络识别方法

    文章编号 :1009 - 671X(2001) 10 - 0028 - 03 一种基于 MATLAB 的手写字母的神经网络识别方法 邓铭辉 ,孙 枫 ,张 志(哈尔滨工程大学 自动化学院 ,黑龙江 哈 ...

  4. MCU控制固态继电器SSR的一种简单可靠的方法

    MCU控制固态继电器SSR的一种简单可靠的方法 方式一 方式二 SSR 方式一 SSR是一种电子继电器.与普通的电磁继电器相比较,SSR具有无机械噪声.无打火.无抖动和回跳.电磁干扰小.开关速度快(S ...

  5. linux查看磁盘对应槽位,一种linux系统硬盘槽位识别方法与流程

    技术领域 本发明涉及计算机技术领域,尤具体地说是一种实用性强.linux系统硬盘槽位识别方法. 背景技术: 近年来,随着技术的迅速发展,linux系统的应用也越来越广泛,特别对于国产处理器,linux ...

  6. 计算机故障的现象有哪些,八种常见CPU故障现象的分析与处理_计算机硬件与网络_IT /计算机_信息...

    八种常见CPU故障现象的分析和处理214 Mini Games http: 1.机箱噪声: 故障现象: 在使用CPU升级计算机之后,每次打开计算机时,噪声都会很大. 但是使用一段时间后,声音恢复正常. ...

  7. 利用计算机辅助设计,一种利用计算机辅助设计和制作手工栽绒毯的方法

    一种利用计算机辅助设计和制作手工栽绒毯的方法 [技术领域] [0001]本发明属于手工栽绒毯的设计制作领域,特别涉及一种利用计算机辅助设计和制作手工栽绒毯的方法. [背景技术] [0002]手工栽绒毯 ...

  8. matlab 重叠峰分解 算法,一种基于粒子群算法的光谱重叠峰分解方法与流程

    本发明涉及一种基于粒子群算法的光谱重叠峰分解方法. 背景技术: 由于探测器能量分辨率等原因,峰位接近且峰宽较大的不同谱峰之间常常出现严重重叠干扰的现象,要对光谱作进一步较为准确.全面的成分定量和定性分 ...

  9. oracle中多层嵌套命名,一种多层嵌套的json格式数据的命名解析方法

    一种多层嵌套的json格式数据的命名解析方法 [专利摘要]一种n层嵌套的json格式数据的命名解析方法,包括以下步骤:首先,以n层嵌套的json格式数据为基础建立数据源:然后,以键值对为最小单元由外而 ...

最新文章

  1. OKR的火爆,正是基于这些价值
  2. AI新方向: 科学家们暂停模仿“人脑”,公布了新路线图
  3. 世界不乏爱因斯坦,缺乏的适合他茁壮成长的环境
  4. python timeit class Timer()类 timeit(string, string) repeat(string, string) default_timer() 耗时检测 执行速度
  5. NYOJ 891 找点
  6. linux 脚本$字符,一文看懂shell脚本中$0 $1 $# $@ $* $? $$ 的各种符号意义
  7. LINQ 的查询执行何时是延迟执行,何时是立即执行,以及查询的复用
  8. HOJ 1640 Mobile Phone
  9. 为什么使用数据库从库
  10. 频谱知识图谱:面向未来频谱管理的智能引擎人工智能技术与咨询
  11. php 中的作用是什么,php中static关键字的作用是什么
  12. 在razor视图引擎中转义@字符
  13. php数据入库流程,php数据库操作
  14. 操作系统的启动与引导问题 BIOS、UEFI、MBR、GPT
  15. 秋招公司真题刷题2019-2020java工程师
  16. QQ邮箱导出的通讯录出现乱码怎么办?
  17. 「C++小游戏教程」基本技巧(1)——随机化
  18. 计算机考研失败了还能找工作吗,考研失败了怎么办_考研失败还能找工作吗
  19. windows中安装绿色版的mysql
  20. svn: E175003:The server at ‘https://XXX/!/#XXX/XXX‘ does not support the HTTP/DAV protocol解决方案

热门文章

  1. 迅龙中文搜索 0.7 nSearch版 C# 源代码下载
  2. docker 容器内安装ps命令
  3. 甘肃300件文物现古丝路交通 穿越古今展视听新体验
  4. PTA 天梯赛 L1-079 天梯赛的善良 (20 分) 详解
  5. 基于FPGA的HDMI显示(二)
  6. 如何保存google的壁纸
  7. 2万字雄文:饿了么核心交易系统 5 年演化史!
  8. Dialog使用时has leaked window...that was originally added here错误
  9. 汇编作业:人均GDP
  10. 如何转载svg类的公众号文章