基于轻量级YOLO开发构建中国象棋目标检测识别分析系统

news2024/12/24 6:31:58

关于棋类相关的项目在我之前的博文里面都有做过,如下:

《yolov5s融合SPD-Conv用于提升小目标和低分辨率图像检测性能实践五子棋检测识别》

《YOLOV5融合SE注意力机制和SwinTransformer模块开发实践的中国象棋检测识别分析系统》

《基于yolov5s实践国际象棋目标检测模型开发》

细心的话可以看到我其实之前就已经做过了中国象棋检测的项目了,但是由于之前的数据集是我基于数据仿真生成的显得跟实际差距很大,所以最近重新找时间基于真实的数据集重构了一版模型,这里的数据来源于网络视频或者游戏网站录屏手工标注所得,说实在的标注中国象棋这种种类繁多且相对较为密集的数据集来说真的是挺痛苦的。。。

闲话就说到这里,接下来看下效果:

好在是实际做出来后效果很好,算是一种慰藉吧。

接下来看下数据集:

YOLO格式数据标注文件如下:

实例标注内容如下:

1 0.170139 0.104206 0.097222 0.083178
1 0.933449 0.102336 0.114583 0.086916
8 0.27662 0.102804 0.101852 0.084112
8 0.714699 0.105607 0.116898 0.091589
5 0.387731 0.102336 0.099537 0.086916
5 0.603588 0.101402 0.107639 0.094393
7 0.501157 0.106075 0.097222 0.092523
3 0.280671 0.277103 0.112269 0.079439
3 0.929398 0.276168 0.106481 0.090654
3 0.173611 0.890187 0.113426 0.1
3 0.819444 0.88972 0.101852 0.097196
0 0.064815 0.37243 0.104167 0.096262
0 0.280093 0.365421 0.113426 0.085981
0 0.496528 0.366355 0.108796 0.082243
0 0.929977 0.369626 0.109954 0.088785
4 0.820023 0.281776 0.107639 0.086916
4 0.5 0.277103 0.106481 0.086916
4 0.715278 0.715421 0.099537 0.090654
4 0.174769 0.718692 0.111111 0.084112
10 0.060764 0.628037 0.103009 0.08972
10 0.282407 0.626168 0.111111 0.085981
10 0.49537 0.631776 0.106481 0.08785
10 0.929398 0.628505 0.106481 0.094393
10 0.71412 0.450467 0.094907 0.08972
9 0.497685 0.720093 0.113426 0.096262
9 0.282986 0.892991 0.100694 0.092523
6 0.38831 0.891589 0.091435 0.08972
6 0.609375 0.890187 0.103009 0.086916
2 0.497106 0.894393 0.103009 0.091589

VOC格式数据标注文件如下:

考虑到种类比较多,这里轻量级模型没有直接使用n系列的模型,而是使用了s系列的模型,如下:

#Parameters
nc: 11  # number of classes
depth_multiple: 0.33  # model depth multiple
width_multiple: 0.50  # layer channel multiple
anchors:
  - [10,13, 16,30, 33,23]  # P3/8
  - [30,61, 62,45, 59,119]  # P4/16
  - [116,90, 156,198, 373,326]  # P5/32


#Backbone
backbone:
  # [from, number, module, args]
  [[-1, 1, Conv, [64, 6, 2, 2]],  # 0-P1/2
   [-1, 1, Conv, [128, 3, 2]],  # 1-P2/4
   [-1, 3, C3, [128]],
   [-1, 1, Conv, [256, 3, 2]],  # 3-P3/8
   [-1, 6, C3, [256]],
   [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16
   [-1, 9, C3, [512]],
   [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32
   [-1, 3, C3, [1024]],
   [-1, 1, SPPF, [1024, 5]],  # 9
  ]


#Head
head:
  [[-1, 1, Conv, [512, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 6], 1, Concat, [1]],  # cat backbone P4
   [-1, 3, C3, [512, False]],  # 13

   [-1, 1, Conv, [256, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 4], 1, Concat, [1]],  # cat backbone P3
   [-1, 3, C3, [256, False]],  # 17 (P3/8-small)

   [-1, 1, Conv, [256, 3, 2]],
   [[-1, 14], 1, Concat, [1]],  # cat head P4
   [-1, 3, C3, [512, False]],  # 20 (P4/16-medium)

   [-1, 1, Conv, [512, 3, 2]],
   [[-1, 10], 1, Concat, [1]],  # cat head P5
   [-1, 3, C3, [1024, False]],  # 23 (P5/32-large)

   [[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)
  ]

默认是100次的迭代计算,日志输出如下:

从评估结果上面来看检测识别的效果还是很好的。

【混淆矩阵】

【F1值曲线】

【PR曲线】

【精确率-召回率曲线】

【数据可视化】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/383201.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第七章.集成学习(Ensemble Learning)—袋装(bagging),随机森林(Random Forest)

第七章.集成学习 (Ensemble Learning) 7.1 集成学习—袋装(bagging),随机森林(Random Forest) 集成学习就是组合多个学习器,最后得到一个更好的学习器。 1.常见的4种集成学习算法 个体学习器之间不存在强依赖关系,袋装(bagging)…

智慧厕所智能卫生间系统有哪些功能

南宁北站智能厕所主要功能有哪些?1、卫生间环境空气监测男厕、女厕环境空气监测系统包括对厕所内的温度、湿度、氨气、硫化氢、PM2.5、烟雾等气体数据的实时监测。2、卫生间厕位状态监测系统实时监测厕位内目前的使用状态(有人或无人),数据信…

SQLyog图形化界面工具【超详细讲解】

目录 一、SQLyog 介绍 二、SQLyog 社区版下载 三、SQLyog 安装 1、选择Chinese后点击OK 2、点击“下一步” 3、选择“我接受”后点击“下一步” 4、点击“下一步” 5、修改安装位置(尽量不要安装在C盘),点击“安装” 6、安装后点击“…

无线WiFi安全渗透与攻防(三)之Windows扫描wifi和破解WiFi密码

系列文章 无线WiFi安全渗透与攻防(一)之无线安全环境搭建 无线WiFi安全渗透与攻防(二)之打造专属字典 windows下wifi进行扫描和破解 1.wifi扫描 (1).软件介绍 WirelessMon是一款无线网络扫描工具,它可以帮助用户扫描附近的无线信号&…

操作系统——14.调度算法的评价指标

这篇文章我们来讲一下算法调度的评价指标,为后面讲调度算法做下铺垫 目录 1.概述 1.CPU的利用率 2.系统吞吐量 3.周转时间 4.等待时间 5.响应时间 6.小结 1.概述 首先,我们来看一下这节内容的大体框架 1.CPU的利用率 由于早期的CPU造价极其昂贵…

1.flink简介与重要概念

Introduction 简介 Apache Flink是一个框架和分布式处理引擎,用于在无界和有界数据流上进行有状态计算。Flink可以运行在常见集群环境如YARN Kubernetes Mesos,内存级别的速度和任意的扩展 Unbounded streams 无界数据流 无界数据流有开始但是没有结束,需要持续不断…

JavaSe第4次笔记

1.转义字符和编程语言无关。 2.斜杠(\)需要转义,反斜杠(/)不需要转义。 3.不能做switch的参数的数据类型:long float double boolean( String可以)。 4.输入的写法:Scanner(回车自动带头文件(import java.util.Scanner;)) Scanner scan …

软件测试(linux命令篇-01文件操作命令)

linux文件篇命令linux系统常用文件操作命令1、查看目录内容及常用参数:ls2、目录切换:cd 3、创建文件:touch 4、创建目录 :mkdir5、 删除文件或目录:rm6、文件或目录的复制:cp7、文件或目录的移动&#xff…

TMS Sphinx crack

TMS Sphinx crack 用于身份访问管理的TMS Sphinx Delphi框架,包括授权和身份验证。 TMS Sphinx允许您为多个应用程序实现单点登录(SSO):web、本机、移动或机器到机器API通信。它可用于通过登录表单、类似的用户界面和基于服务的身份验证来验证实际用户&a…

如何制作一个自定义的winpe?

winpe制作过程 获取相关资源 https://www.aliyundrive.com/s/MP58JbRsm76 文件存放位置 将压缩包存放在一个全英文目录下了,我这里选择了D:/winpe目录 解压文件 将三个压缩包进行解压到当前目录,如下图所示 创建一个mount目录,并在mount目录下分别创建boot和install目…

C++11:继承

目录 继承的基本概念 继承方式 基类和派生类对象赋值转换/切片 继承中的作用域 派生类的四个成员函数: 构造函数 拷贝构造函数 赋值重载 析构函数 静态成员 继承与友元 多继承 菱形继承 多继承的指针偏移问题 组合 继承的基本概念 继承出现的契机是某一…

Java 多线程 --- 锁的概念和类型划分

Java 多线程 --- 锁的概念和类型划分锁的概念乐观锁与悲观锁公平锁与非公平锁什么是可重入锁独占锁与共享锁轻量级锁和重量级锁自旋锁 (Spinlock)锁的概念 锁可以将多个线程对共享数据的并发访问转换为串行访问, 这样一个共享数据一次只能被一个线程访问, 该线程访问结束后其他…

cocos2dx+lua学习笔记:UIPageView的使用

前言 本篇在讲什么 本篇简单介绍Lua篇cocos2dx中UIPageView的相关内容 仅介绍简单的应用,仅供参考 本篇适合什么 适合初学Cocos2dX的小白 适合想要在Cocos2dx-lua中使用UIPageView的人 本篇需要什么 对Lua语法有简单认知 对Cocos2dx-Lua有简单认知 Cocos2…

Hostease美国Linux主机方案租用推荐

美国Linux主机市场在全球市场上具有显著的优势,这使得美国的主机提供商可以提供高性能、高可靠性和高安全性的主机方案,同时为用户提供广泛的选择和灵活性。这些优势也使得美国成为全球最大的主机市场之一。本文将介绍Hostease的美国Linux主机方案租用推…

22《Protein Actions Principles and Modeling》-《蛋白质作用原理和建模》中文分享

​《Protein Actions Principles and Modeling》-《蛋白质作用原理和建模》 本人能力有限,如果错误欢迎批评指正。 第五章:Folding and Aggregation Are Cooperative Transitions (折叠和聚合是同时进行的) -蛋白质折叠的协同作…

基于C/C++获取电脑网卡的IP地址信息

目录 前言 一、网卡是什么? 二、实现访问网卡信息 1.引入库及相关的头文件 2.操作网卡数据 3. 完整代码实现 4.结果验证 总结 前言 简单示例如何在windows下使用c/c代码实现 ipconfig/all 指令 提示:以下是本篇文章正文内容,下面案例可供参考…

【Python】Python项目打包发布(四)(基于Nuitka打包PySide6项目)

Python项目打包发布汇总 【Python】Python项目打包发布(一)(基于Pyinstaller打包多目录项目) 【Python】Python项目打包发布(二)(基于Pyinstaller打包PyWebIO项目) 【Python】Pytho…

【机器学习】决策树(理论)

决策树(理论) 目录一、何为决策树1、决策树的组成2、决策树的构建二、熵1、熵的作用2、熵的定义3、熵的计算4、条件熵的引入5、条件熵的计算三、划分选择1、信息增益( ID3 算法选用的评估标准)2、信息增益率( C4.5 算法…

使用ARM嵌入式工控机构建Node-RED应用的优势

Node-RED是一个基于Node.js的开源可视化流程编程环境,可以轻松构建自定义应用程序,通过连接简单的节点来完成复杂的任务。Node-RED提供了一种简单的方法,可以快速连接到外部服务,从而实现物联网应用的开发。 Node-RED的优点包括&…

工作实战之微服务认证实现

目录 前言 一、钻石段位springsecurityspringsessionredis缓存 1.yml配置将session存储到redis中,实现session共享 2.maven引入 3.原理分析 a.SessionRepositoryFilter拦截进行session存储介质的选择,可以是jdk缓存,或者数据库,也…