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

news/2024/11/13 4:05:01/

这里写自定义目录标题

  • 项目介绍
    • 项目过程介绍
    • 训练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.ppmy.cn/news/544397.html

相关文章

QQ欢乐斗地主的心得体会--坑杀盟友

斗地主进行到 最终决赛时,经常发生这种情况: 第1名 分数很高,比如 10000分。 第2名和第3名 分数差不多,但是和第1名相差 较远,比如 4200和4500分。 这种情况下,经常会发生“ 第3名逆袭”的情况。 今天又发…

QQ欢乐斗地主的心得体会

实力:这是斗地主的内功。记牌,推理,赌博,心理战术。运气:运气是个非常重要的因素。可以说 三分实力,七分运气。 心理 1.欢乐豆比较少的人比较喜欢抢地主,豆多的人相对比较慎重。2.豆少的人 炸弹…

欢乐斗地主玩法规则

欢乐斗地主是:一、发牌 一副牌 54 张,一人 17 张,留 3 张做底牌,在确定地主之前玩家不能看底牌。 扑克牌花色牌数介绍:另2张是副牌(大王和小王)。52张正牌又均分为13张一组,并以黑…

刷欢乐豆

大家好,今天给大家带来的教程是:超简单快速刷60万欢乐豆 电脑现场演示 所有的步骤我给大家打在下面了,大家仔细看 我给大家看看我的欢乐豆 就在刚才刷上的 85000 短短的5分钟 我就刷了85000 现在我给大家再刷一次 领取海量欢乐豆步骤: 1.编辑短信8…

斗地主AI算法之发牌,洗牌

斗地主游戏的基本算法实现 by -wojiushi3344 转载请说明出处 源代码下载 PS:首先祝朋友们5,1节快乐!!闲来无事,今天来写一下斗地主游戏的基本实现,写得不好,大家别喷哈!!具体实现…

C++布隆过滤器

目录 布隆过滤器介绍实现哈希函数布隆过滤器删除 小结使用——题目 布隆过滤器 介绍 在许多场景下,如设置昵称时,往往要求唯一性。这时就需要高效判断该昵称是否被使用过。 使用红黑树的kv模型或者哈希表来组织昵称集合,可以,但缺…

8188gu驱动和su realtek_Realtek全系列官方网卡驱动

1、有线网卡系列: 81xx系列:理论可以完美驱动下面所有网卡(Lion和SL均可驱动) RTL8100E/RTL8101E/RTL8102E-GR/RTL8103E(L) RTL8102E(L)/RTL8101E/RTL8103T RTL8401/RTL8401P/RTL8105E RTL8111B/RTL8168B/RTL8111/RTL8168 RTL8111C/RTL8111CP/RTL8111D(L) RTL8168C/RTL8111DP…

关于打印机设置默认逐份打印

打印机设置默认逐份打印 逐份打印与逐页打印的区别默认设置 逐份打印或者逐页打印 逐份打印与逐页打印的区别 逐份打印:按照每一份的顺序打印,例如要打印两份三页的表格,其打印顺序是先打1,2,3,再打印1,2,3 逐页打印:…