利用YOLO网络识别围棋图谱
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)棋子偏离棋盘交叉点