使用yolov5和强化学习训练一个AI智能欢乐斗地主(一)
这里写自定义目录标题
- 项目介绍
- 项目过程介绍
- 训练yolov5目标检测斗地主
- 收集数据集
- yolov5调参
项目介绍
你好! 欢迎阅读我的文章,本章将介绍,如何使用yolov5和强化学习训练一个AI斗地主,本项目将分为三个部分,其中包含(yolov5目标检测,pyqt5页面搭建,强化学习训练出牌)。为什么会做这个项目呢,主要是出于作者本人感兴趣,我也喜欢打牌,即使这个项目可能在多数项目看来,显得多此一举或者有点笨拙,整个过程,主要是用来体验项目并且学习了,如果你有其他意见或者更好的想法可以联系作者,再次感谢您阅读我的文章。
项目过程介绍
我暂时对整体的AI斗地主做了一个规划,这里我以微信小程序天天斗地主为例,使用yolov5训练斗地主画面的每张扑克牌,识别出所有扑克牌后,通过分析地主、地主上家、地主下家出的牌,进行强化学习,来教AI打牌,整个过程由pyqt5可视化界面展示实现,具体分为以下步骤。
- 收集斗地主数据集,yolov5进行训练
- 获取小游戏句柄,初步测试目标检测成果
- 编写GUI,实时控制整个程序
- 通过目标检测结果,编写记牌器,编写上家下家出牌规则
- 训练DOUZERO强化学习
- 通过上下家出牌规则,调用DOUZERO强化学习出牌
- 完善整个程序,进行最终测试
训练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界面搭建过程
相关文章:
使用yolov5和强化学习训练一个AI智能欢乐斗地主(一)
这里写自定义目录标题项目介绍项目过程介绍训练yolov5目标检测斗地主收集数据集yolov5调参项目介绍 你好! 欢迎阅读我的文章,本章将介绍,如何使用yolov5和强化学习训练一个AI斗地主,本项目将分为三个部分,其中包含&am…...
C++ 浅谈之 AVL 树和红黑树
C 浅谈之 AVL 树和红黑树 HELLO,各位博友好,我是阿呆 🙈🙈🙈 这里是 C 浅谈系列,收录在专栏 C 语言中 😜😜😜 本系列阿呆将记录一些 C 语言重要的语法特性 dz…...
【Kotlin】Kotlin函数那么多,你会几个?
目录标准函数letrunwithapplyalsotakeIftakeUnlessrepeat小结作用域函数的区别作用域函数使用场景简化函数尾递归函数(tailrec)扩展函数高阶函数内联函数(inline)inlinenoinlinecrossinline匿名函数标准函数 Kotlin标准库包含几个…...
饲养员喂养动物-课后程序(JAVA基础案例教程-黑马程序员编著-第四章-课后作业)
【案例4-2】饲养员喂养动物 记得 关注,收藏,评论哦,作者将持续更新。。。。 【案例目标】 案例描述 饲养员在给动物喂食时,给不同的动物喂不同的食物,而且在每次喂食时,动物都会发出欢快的叫声。例如&…...
数据分析:消费者数据分析
数据分析:消费者数据分析 作者:AOAIYI 创作不易,如果觉得文章不错或能帮助到你学习,记得点赞收藏评论一下哦 文章目录数据分析:消费者数据分析一、前言二、数据准备三、数据预处理四、个体消费者分析五、用户消费行为总…...
Transformer论文阅读:ViT算法笔记
标题:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale 会议:ICLR2021 论文地址:https://openreview.net/forum?idYicbFdNTTy 文章目录Abstract1 Introduction2 Related Work3 Method3.1 Vision Transformer3.2…...
Android基础练习解答【2】
文章目录一 填空题二 判断题三 选择题四 简答题一 填空题 1.除了开启开发者选项之外,还需打开手机上的 usb调试 开关,然后才能在手机上调试App。 2.App开发的两大技术路线包括 _原生开发_和混合开发。 3.App工程的编译…...
k8s 搭建
需求:搭建k8s 为后续自动部署做准备进程:安装至少两个ubuntu18.04系统(一个master 一到多个 node)每个系统上都要装上docker 和 kubernetes安装dockersudo su apt-get update#安装相关插件 apt-get install apt-transport-https c…...
安全运维之mysql基线检查
版本加固 选择稳定版本并及时更新、打补丁。 稳定版本:发行6-12个月以内的偶数版本。 检查方法: 使用sql语句:select version(); 检查结果: 存在问题:当前数据库版本较老需要更新 解决方案:前往http://www.mysql…...
跨境电商卖家敦煌、雅虎、乐天、亚马逊测评自养号的重要性!
作为亚马逊、敦煌、乐天、雅虎等跨境的卖家,这两年以来,面对流量越来越贵的现实,卖家需要更加珍惜每次访问listing页面的流量,把转化做好,把流量尽可能转化为更多的订单。 提升转化率的技巧 提升产品转化率࿰…...
Python 之 Matplotlib xticks 的再次说明、图形样式和子图
文章目录一. 改变 x 轴显示内容 xticks 方法再次说明1. x 轴是数值型数据2. 将 x 轴更改为字符串3. 总结二. 其他元素可视性1. 显示网格:plt.grid()2. plt.gca( ) 对坐标轴的操作三. plt.rcParams 设置画图的分辨率,大小等信息四. 图表的样式参数设置1. …...
3.InfluxDB WEB使用
结合telegraf做指标数据收集 点击 Load Data -> Telegraf 配置界面 influxDB支持在WEB-UI中生成配置文件 然后利用telegraf通过远程URL请求的方式进行获取 点击CREATE CONFIGURATION 创建telegraf配置文件 选择Bucket InfluxDB提供了很多配置好的监控模板供用户选择 可以…...
git冲突合并
一、版本说明 dev:本地仓库中的dev分支 master:本地仓库中的master分支 remotes/origin/master和origin/master:都是远程仓库上的master分支 二、一个解决冲突的常规流程 1、前提条件:不能在master分支上修改任何文件。master分支…...
项目自动化构建工具make/Makefile
目录 make/Makefile概念和关系 make/Makefie的使用 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重…...
双目客流统计方案的应用原理
双目客流统计客流摄像头采用立体视觉技术实现高度统计功能。基于视差原理。利用双镜头摄取的两幅图像的视差,构建三维场景,在检测到运动目标后。通过计算图像对应点间的位置偏差。获取目标的三维信息,在深度图像中对目标的检测与追踪…...
python魔术方法(二)
__getattr__() class A:def __getattr__(self,name):print(f"getting {name}")raise AttributeErroro A() print(o.test)程序调用一个对象的属性,当这个属性不存的时候希望程序做些什么,这里我们打印希望的属性,并且抛出异常 __…...
cmd for命令笔记
语法 help for输出如下: 对一组文件中的每一个文件执行某个特定命令。 FOR %variable IN (set) DO command [command-parameters] %variable 指定一个单一字母可替换的参数。 (set) 指定一个或一组文件。可以使用通配符。 command 指定对每个文件执行的命令。 c…...
4.1 Filter-policy
1. 实验目的 熟悉Filter-policy的应用场景掌握Filter-policy的配置方法2. 实验拓扑 Filter-policy实验拓扑如图4-5所示: 图4-5:Filter-policy 3. 实验步骤 (1) 网络连通性 R1的配置 <Huawei>system-vi…...
day15_常用类
今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、作业 二、代码块[了解] 三、API 四、Object 五、包装类 六、数学和随机 零、 复习昨日 抽象接口修饰符abstractinterface是不是类类接口属性正常属性没…...
【网络原理5】IP协议篇
目录 IP协议报头 4位版本号 4位首部长度 8位服务类型(TOS) 16位总长度 IP拆包 16位标识、3位标志、13位片偏移编辑 8位生存时间(TTL) 8位协议 16位首部校验和 网络地址管理 32位源ip&32位目的ip 方案一:动态分配ip地址 方案2:NAT网络地址转换(使用一个ip代…...
Unity导出WebGL工程,并部署本地web服务器
WebGL打包 设置修改 在Build Settings->PlayerSettings->Other Settings->Rendering 将Color Space 设置为Gamma 将Lightmap Encoding 设置为NormalQuality 在Build Settings->PlayerSettings->Publishing Settings 勾选Decompression Fallback 打包 完成配…...
蓝桥杯考试总结汇总
一进考场设置devc快捷键 设置注释和取消注释快捷键设置代码自动补全快捷键开启devc调试功能,详细可以看怎么开调试功能https://blog.csdn.net/hz18790581821/article/details/78418648比赛过程中,如果不相信自己是否做对,没有把握的…...
备战蓝桥杯【二维前缀和】
🌹作者:云小逸 📝个人主页:云小逸的主页 📝Github:云小逸的Github 🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前…...
阿里P6细谈Python简易接口自动化测试框架设计与实现,我直呼内行
1、开发环境 操作系统:Ubuntu18 开发工具:IDEAPyCharm插件 Python版本:3.6 2、用到的模块 requests:用于发送请求 xlrd:操作Excel,组织测试用例 smtplib,email:发送测试报告 l…...
数据库存储
RAID DSL : Domain Spesic Language 专用领域语言 单机存储 一切皆Key-Value 本地文件系统 一切皆文件 Ceph - 分布式存储 关系型数据库通用组件 Query Engine :解析query,生成查询计划Txn Manager :事务并发管理Lock Man…...
hive学习笔记
一、Hive基本概念1.1 hive是什么hive是基于hadoop的一个数仓分析工具,hive可以将hdfs上存储的结构化的数据,映射成一张表,然后让用户写HQL(类SQL)来分析数据tel up down 1383838438 1345 1567 138383…...
7大体系防作弊,牛客放大招了!严肃笔试客户端上线!
如果问起学生对在线笔试的印象,“不公平”和“不服气”占了半壁江山。学生认为很多企业的在线笔试系统并不完善。原因一,不能有效地规避部分学生的作弊行为;原因二,在线考试系统不稳定,bug频出,导致笔试发挥…...
R语言广义可加模型在空气环境污染方面的应用(1)
粉丝私信我希望复制一篇文章的图片,图片来源于文章:Wu C, Yan Y, Chen X, Gong J, Guo Y, Zhao Y, Yang N, Dai J, Zhang F, Xiang H. Short-term exposure to ambient air pollution and type 2 diabetes mortality: A population-based time series st…...
CSDN 编程竞赛二十九期题解
竞赛总览 CSDN 编程竞赛二十九期:比赛详情 (csdn.net) 竞赛题解 题目1、订班服 小A班级订班服了!可是小A是个小糊涂鬼,整错了好多人的衣服的大小。小A只能自己掏钱包来补钱了。小A想知道自己至少需要买多少件衣服。 #include <cstdio…...
基于STM32采用CS创世 SD NAND(贴片SD卡)完成FATFS文件系统移植与测试
一、前言 在STM32项目开发中,经常会用到存储芯片存储数据。 比如:关机时保存机器运行过程中的状态数据,上电再从存储芯片里读取数据恢复;在存储芯片里也会存放很多资源文件。比如,开机音乐,界面上的菜单图…...
织梦cms官方网站/小说推文推广平台
描述 编写一个程序,将输入字符串中的字符按如下规则排序。 规则 1 :英文字母从 A 到 Z 排列,不区分大小写。 如,输入: Type 输出: epTy 规则 2 :同一个英文字母的大小写同时存在时࿰…...
angular 做网站/专业提升关键词排名工具
1. 题目 参考链接: 检测循环依赖 现有n个编译项,编号为0 ~ n-1。给定一个二维数组,表示编译项之间有依赖关系。如[0, 1]表示1依赖于0。 若存在循环依赖则返回空;不存在依赖则返回可行的编译顺序。 2. 题解 若给定一个依赖关系是[[0,2],[…...
wordpress弹幕功能/百度指数官网登录
C语言 大端序、小端序 一、简述 机器存放数据有先存放高字节的、也有先存放低字节的;网络传输数据是一般先传输高字节。机器字节序可分为大端序(Big-endian)和小端序(little-endian)。大端序:高字节先存储…...
学院网站建设需求分析/网络做推广公司
1.函数声明123function sum1(n1,n2){ return n1n2; };2.函数表达式,又叫函数字面量123var sum2function(n1,n2){ return n1n2;};两者的区别:解析器会先读取函数声明,并使其在执行任何代码之前可以访问;而函数表达式则必须等…...
火车站网站建设方案/google在线代理
大家应该都很熟悉 if作为条件判断语句的用法。 简单举个例子 int a; if(a 2) a;这一句 if 意为:当整型变量a等于2的时候,a自增1。 但是今天在《C Primer Plus 第六版》看到一句 if(age 65)printf("%d",age);完整代码如下: #…...
免费中文wordpress主题下载地址/郑州seo外包顾问
工作流引擎 Snaker Snaker是一个基于Java的开源工作流引擎,适用于企业应用中常见的业务流程。本着轻量、简单、灵巧理念设计,定位于简单集成,多环境支持 轻量: 核心代码行数大约7000行,强大的扩展性,支持Spring、Jfina…...