使用yolov5和强化学习训练一个AI智能欢乐斗地主(一)

news2024/10/1 15:07:06

这里写自定义目录标题

  • 项目介绍
    • 项目过程介绍
    • 训练yolov5目标检测斗地主
      • 收集数据集
      • yolov5调参

项目介绍

你好! 欢迎阅读我的文章,本章将介绍,如何使用yolov5和强化学习训练一个AI斗地主,本项目将分为三个部分,其中包含(yolov5目标检测,pyqt5页面搭建,强化学习训练出牌)。为什么会做这个项目呢,主要是出于作者本人感兴趣,我也喜欢打牌,即使这个项目可能在多数项目看来,显得多此一举或者有点笨拙,整个过程,主要是用来体验项目并且学习了,如果你有其他意见或者更好的想法可以联系作者,再次感谢您阅读我的文章。

项目过程介绍

我暂时对整体的AI斗地主做了一个规划,这里我以微信小程序天天斗地主为例,使用yolov5训练斗地主画面的每张扑克牌,识别出所有扑克牌后,通过分析地主、地主上家、地主下家出的牌,进行强化学习,来教AI打牌,整个过程由pyqt5可视化界面展示实现,具体分为以下步骤。

  1. 收集斗地主数据集,yolov5进行训练
  2. 获取小游戏句柄,初步测试目标检测成果
  3. 编写GUI,实时控制整个程序
  4. 通过目标检测结果,编写记牌器,编写上家下家出牌规则
  5. 训练DOUZERO强化学习
  6. 通过上下家出牌规则,调用DOUZERO强化学习出牌
  7. 完善整个程序,进行最终测试

训练yolov5目标检测斗地主

整个AI斗地主分为三部分,yolov5检测斗地主的扑克牌,Douzero强化学习斗地主,pyqt5编写最终界面,本文只讲第一部分

收集数据集

收集斗地主数据集的过程不算复杂困难,但相对无聊枯燥耗时,收集数据集采用最传统的方法,通过一局对局截取一张图片的方式,如下图
在这里插入图片描述
截图存储到本地后,使用labelimg才进行标注,如果不了解labelimg,这里引用一下别的文章:labelimg从安装到使用详解 labelimg就是一个标注工具而已,如下图,将每一张扑克牌都标注好即可
在这里插入图片描述
这里需要注意收集的数据集数量, 经过我本人测试,我收集了100张图片,注意,即使只有100张图片,每一张图片仍然包含多达二三十个标注,其中同一个扑克牌类别最多出现7次(包括最上方会显示的三张地主牌),100张本质上来说不算特别少,经过yolov5训练后, 再放到小程序上进行测试,经观察,仍然有95%的准确率,但这是远远不够的,因为即使一张扑克牌的识别错误,将导致后期整个强化学习,到出牌过程都会决策失败

最后,保存的数据集文件夹如下图所示,这里不仅限于天天斗地主,将其他类型的斗地主标注好后,也可以一起进行训练。

在这里插入图片描述

yolov5调参

yolov5是一个使用pytorch编写的目标检测框架,通过yolov5的训练,最后我们可以知道哪张扑克牌在哪个位置,通过程序编写出牌区域的区分,可以检测区分出地主、地主下家、地主上家,三家的轮流出牌过程,到这一步,其实已经可以做一个记牌器了,如果到这里,你不太了解yolov5是啥的话,这里我推荐几个博客与官方github链接

YOLOv5网络详解
YOLOv5官方github
YOLOv5参数介绍

这里主要是看我的配置参数的一些文件,数据集标签配置如下(其中包含:1-k小王、大王、地主、农民、闹钟、连对、顺子、飞机、炸弹、火箭):
在这里插入图片描述
train.py 这里不做过多介绍,只要了解过yolov5,并根据自身情况训练就行
数据集少的情况下,大概,一两千次即可完成训练,最后展示一下,我用pyqt5写出来的yolov5检测出来的训练结果。
下篇介绍pyqt5界面搭建过程

在这里插入图片描述

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

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

相关文章

一篇搞懂Mock测试

1. 什么是Mock测试 mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象/数据/场景,用一个虚拟的对象来创建以便测试的测试方法。 2. Mock测试常见场景 无法控制第三方系统接口的返回,返回的数据不满足要求依赖的接口还未开…

DEM数据下载——以地理空间数据云为例

数字高程模型(Digital Elevation Model)是进行地形分析的重要基础,诸如坡度、坡向及水文分析等都在此基础上进行。今天,我们一起来聊一聊一种DEM数据常见下载方式。按照惯例,先将网址列出:https://www.gscloud.cn/home…

2023年美赛 MCM B题 重新构想马赛马拉岛

背景肯尼亚的野生动物保护区最初主要是为了保护野生动物和其他自然资源。肯尼亚议会于2013 年通过了《野生动物保护和管理法》,以提供更公平的资源共享,并允许进行替代的、以社 区为基础的管理工作[1].此后,肯尼亚增加了修正案,以…

有特别有创意的网站设计案例

有人说 UI 设计师集艺术性与科学性于一身,不仅需要对工具的使用熟练,更需要对美术艺术有一定的基础了解。如果想要成为优秀的 UI 设计师是一个需要磨砺的过程,需要不断的学习和积累,多看多练多感受,其中对于优质的设计…

力扣53.最大子数组和

文章目录力扣53.最大子数组和题目描述贪心动态规划力扣53.最大子数组和 题目描述 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例…

4、HAL库SPI数据收发

1、通过SPI轮询的方式实现数据收发 1.1、通过CubeMx配置SPI轮询的方式实现数据收发 SPI模式 CPOL CPHA 空闲时 SCK 时钟 采样时刻 0 0 0 低电平 奇数边沿(W25Qxx支持) 1 0 1 低电平 偶数边沿 2 1 0 高电平 奇数边沿 3 1 1 高电平 偶数边沿(W25Qxx支持)当前使用 生成代码工程 …

[计算机操作系统(慕课版)]第一章 操作系统引论(学习笔记)

操作系统(Operating System,OS)是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。操作系统的主要作用: 管理硬件设备,提高他们的利用率和系统吞吐量 利用率:使硬件充分忙碌系统吞吐量…

Python|每日一练|树|深度优先搜索|数组|二分查找|链表|双指针|单选记录:填充每个节点的下一个右侧节点指针|搜索插入位置|旋转链表

1、填充每个节点的下一个右侧节点指针(树,深度优先搜索) 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node { int val; Node *left; Node *rig…

同一个整型常量怎样在不同进制间之间转换?

整型常量可以分别用二进制、八进制、十进制和十六进制表示,不同的进制并不影响数据本身的大小,同一个整型常量可以在不同进制之间转换,具体转换方式如下。1.十进制和二进制之间的转换(1)十进制转二进制。十进制转换成二进制就是一个除以2取余…

INDEMIND:2023,服务机器人能否“狂飙”?

过去一年,服务机器人的发展并不顺利。头部厂商的变动,市场增长率的持续下降不由得让人质疑,2023年,服务机器人还能“狂飙”吗?短期的市场波动,并不能代表行业的未来走向,而行业的两面矛盾现象&a…

珞珈1号-数据预处理流程

珞珈1号-数据预处理流程 1、重投影Albers 2、重采样 3、辐射校正–将INT32转化为浮点型真实数据 4、统一量纲(eg:和NPP同一量纲) 5、去噪 1、重投影Albers 参考这篇文章 2、重采样 输入想要重采样的数据,其中X和Y是你想要的大小,125即是重采样至125m …

kaggle竞赛-宠物受欢迎程度(赛题讲解与数据分析)

比赛官网地址 赛题介绍 petfinder是马来西亚领先的动物福利平台宠物网站地址 该网站使用可爱指数来排名宠物照片。它分析了图片组成和其他因素,并与数千个宠物档案的表现进行了比较。 在这场比赛中,你将分析原始图像和元数据来预测宠物照片的“Pawp…

Word控件Spire.Doc 【Table】教程(16):C#/VB.NET:在 Word 表格中插入或提取图像

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…

JMM(Java内存模型)及volatile关键字

JMM(Java内存模型 Java Memory Model,简称JMM)JMM(Java内存模型 Java Memory Model,简称JMM)本身是一种抽象的概念并不真实存在,它描述的是一组规则或者规范,通过这组规范定义了程序中各个变量(包括实例字段&#xff0…

干货分享|数据可视化报表制作技巧

脑中想得再好,也要看最终的效果呈现。但偏偏有些用户分析思维不差,就是数据分析报表的制作拖了后腿,导致始终无法完美呈现数据可视化分析效果。本文将总结奥威BI软件上的常用的数据可视化报表制作技巧,供大家随时查阅。 BI数据可…

搭建Hexo博客-第1章-Git和GitHub以及Coding的简单用法

搭建Hexo博客-第1章-Git和GitHub以及Coding的简单用法 搭建Hexo博客-第1章-Git和GitHub以及Coding的简单用法 Coding GitHub Hexo Markdown 搭建博客 大家好,这是我第一次写博客。使用 GitHub Hexo 创建最基本的博客很容易,网上有很多现成的教程。…

SCI论文写作神器集合 —— 超级实用

特此声明: 本文拷贝多处别人的内容,并给出具体的链接 本文所提到的软件都为博主在文章撰写过程中发掘的比较实用的工具,旨在帮助小伙伴们更快更有效率的完成文章发表,如果其他好用的工具,欢迎各位交流~~ 一、文献搜索神…

XCP实战系列介绍14-基于Vector_Davinci工具的XCP配置介绍(三)

本文框架 1.概述2. 其他模块配置2.1 XCP初始化3. 手工代码部分3.1 周期函数添加3.2 DAQ Event调用3.3 XCP模块本身代码3.4 标定量的添加1.概述 在对XCP的配置部分介绍中我们计划分别对通讯部分配置、XCP模块本身配置及其他相关模块配置三篇进行介绍,在前两篇我们介绍了XCP配置…

SAP PP工单确认完成(CNF)状态取消方法

这SAP PP工单确认完成(CNF)状态取消方法SAP PP工单确认完成(CNF)状态取消方法SAP PP工单确认完成(CNF)状态取消方法 工单完工后取消了其中的一个报工,然后无法再报工 此时再报工,系…

使用 Docker 镜像

author: aming email: jikcheng163.com title: Docker 使用镜像 creation_date: 2023-01-05 22:58 Last modified date: 2023-01-30 23:01 tags: Docker 使用镜像 File Folder with relative path: reading notes/doc/Dokcer 实践 remark: other: 本章背景知识 1、镜像是三大…