查看: 2352|回复: 2

【教程】深度学习目标检测之井字棋

[复制链接]

该用户从未签到

发表于 2021-4-7 19:27 | 显示全部楼层 |阅读模式
  
    井子棋(tic-tac-toe)又称“过三关”,是一款历史悠久、流传广泛的益智游戏。棋盘是一个3*3=9的九宫格,棋子只有X和O两种,轮流下棋,直到某一方棋子在棋盘的纵横或斜线形成三子连线,即告获胜。如果双方轮流走子,直至棋盘摆满(9子)则宣告和棋。
由于井子棋简单、流传广泛,所以在棋类的AI(人工智能)学习中,井子棋成为比较常见的研究对象,有很多算法和攻略对其进行深入研究,被称为“已经解决”的棋类游戏。此类书籍也非常多。
    本文研究的重点并不在于下棋算法,而是使用K210作为深度学习平台,通过模型训练,运用K210对井子棋的两类棋子(X,O)进行目标检测,返回棋子的类别以及在棋盘上的坐标。并且描绘成棋盘列表,将当前棋盘的棋子类别以及位置编制成json数据格式的字符串,通过串口(uart)传送给m5stack basic,后者是一个非常优秀成熟的基于esp32的开发平台,带有屏幕、按键并且适配了完整的软件库。
    M5stack basic接收到了来自K210的数据后,会有两种玩法:
  • 一是“双人对战裁判”。将收到的棋盘数据进行json解析。在屏幕上对两类棋子以及其位置进行展示,实时显示对弈战况,并且判定两位玩家的胜负以及是否平局。即充当了“AI裁判”。
  • 二是“简单的人机对弈”。如前文所述,井子棋被称为“已经解决”的棋类游戏,也就是说,其算法已经被充分认知和破解,如使用minmax算法后,后手棋玩家将没有机会获胜,最好的结果也是平局。这样的对弈技术含量颇高,但是兴味不足。为了增加乐趣,我们引入了一个非常简单的算法,实现了简单的人机对弈。即;esp32主控会对当前棋盘进行分析,对当前剩余的所有空位编列成列表,然后从该列表中随机推荐下一步的步骤,这样以来,玩家在和机器对弈中,对方的下一步实际上是随机状态,玩家就有很大机会获胜。这样就增加了乐趣。后续我们可以通过对算法难度的调节,来丰富对弈的难度和乐趣。
ui.png IMG_20210401_231756_副本.jpg 硬件.jpg 终局.jpg

    近期发帖上传比较麻烦,我已经发到dfrobot那边,直接给出链接。 《深度学习目标检测之井字棋
   代码也已经分享,欢迎交流。
   沧海抱拳。

签到天数: 279 天

[LV.8]以坛为家I

发表于 2021-4-7 20:30 | 显示全部楼层
沧海笑1122老师出品,必是精品,学习一下,谢谢分享,

该用户从未签到

 楼主| 发表于 2021-4-8 16:45 | 显示全部楼层
topdog 发表于 2021-4-7 20:30
沧海笑1122老师出品,必是精品,学习一下,谢谢分享,

感谢师兄支持
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

Arduino数字与字母字体应该如何设置?
Arduino数字与字母字体应
尝试用Arduino uno 做了个小工具,用来控制电脑水冷的运行。 洞洞板已经测试成功,完
WEMOS LOLIN32Lite(ESP32v1.0.0Rev1)入手+引脚图
WEMOS LOLIN32Lite(ESP32v
突发奇想做个精致的蓝牙遥控平衡小车(大学时做过一次,比较笨,用洞洞板焊电路做的比
【Arduino】168种传感器模块系列实验(129)---BH1750光照传感器
【Arduino】168种传感器模
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
16度双足机器人舵机驱动板pca9685连接舵机,舵机没反应
16度双足机器人舵机驱动板
各位同为arduino爱好者的大佬们大家好!想请教一下大家有关舵机驱动板pca9685
pca9685+arduino驱动舵机失败
pca9685+arduino驱动舵机
我网上别人的代码,编译通过且上传,但舵机不转,怎么解决?Arduino uno使用PCA9685模
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表