专栏/AI深度学习玩FlappyBird游戏(代码开源)

AI深度学习玩FlappyBird游戏(代码开源)

2023年10月03日 05:39--浏览 · --点赞 · --评论
alexzhuustc
粉丝:103文章:1

说明

我通过Double DQN算法实现了一个AI模型,可以顺利完成FlappyBird游戏。代码基于flappy-bird-gymnasium环境。

本项目附带一个我预训练好的一个模型,可以直接运行bird_play_pretrain.py体验效果,免去数个小时的训练时间。




你可以自己训练。在运行或训练前,你需要先配置好python+tensorflow环境。详见下节“环境准备”。


训练大约需要2个小时(硬件:12600H + RTX 4060)。前1个小时,小鸟很容易死,卡在第一根管子。大约1.5小时后,小鸟技能出现突变,突然就玩得很好了。

项目源代码

https://github.com/alexzhuustc/gym-flappybird


此项目使用Python多进程

主进程使用GPU训练模型。如果你没有GPU,也可以使用CPU,本模型训练算力要求并不大。模型训练约10分钟可以看到效果,小鸟此时差不多可以通过第一个管子。继续训练2~4个小时达到稳定,可以通过100+管子。辅助进程专门用于运行Agent,通过玩游戏持续生成ReplayBuffer。默认有5个Agent进程。

使用多进程是因为游戏训练到大后期时,小鸟出错概率很低,此时很难捕获到有价值的撞管帧,训练效果推进缓慢。因此我使用多个进程来加大玩游戏的频次,捕获更多的撞墙帧,提升训练效果。


项目文件说明

  • bird_play_pretrain.py 执行我预训练好的模型,观察AI玩FlappyBird的效果。

  • bird_train.py 训练代码。你可以运行此代码重头开始训练你自己的模型。模型每分钟保存一次到磁盘。当中止训练后,下次会自动从断点恢复。

  • bird_play.py 在训练时,你可以运行此文件来即席观察训练效果。运行或中止此文件,不会打断训练过程。


环境准备

我的机器是Windows,以下是环境准备说明。


安装anaconda

建议以非管理员方式安装。

如果以管理员方式安装,需要注意目录是否有必要的读写权限。如果缺失,可以补充文件访问权限。

在anaconda3目录上,为Authenticated Users增加:修改...写入... 权限


创建env

  1. 使用anaconda python 3.10,创建环境keras-py310

  2. 为了保证pip是最新版本,此次可以手动升级pip一次

    conda upgrade pip


设置pip国内镜像【可选】

由于pip访问国外不稳定,建议按下面的方式配置pip国内镜像

新建 %UserProfile%/pip/pip.ini
编辑内容如下(清华pip源)
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn

或(阿里pip源)
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host = https://mirrors.aliyun.com

安装cuda支持【可选】

# cuda
conda install -c conda-forge cudatoolkit=11.2 cudnn=8.1.0

安装包括tensorflow在内的依赖包

# 打开conda命令行【keras-py310】 (换成你的目录)
cd C:\_Alex\repos\repo_my_aliyun\_learning\gym-flappybird

# 检查pip.exe是keras-py310\Scripts\pip.exe
which pip.exe

# 安装
pip install -r requirements.txt

# 检查, Verify install:
python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"


代码写作心得

不要使用train_on_batch,  predict_on_batch

使用这些底层函数在我的机器上会导致如下问题

Optimization loop failed: CANCELLED: Operation was cancelled

训练时可打开TensorBoard观察训练进度

# 打开conda命令行【keras-py310】
conda activate keras-py310

# 进入目录(换成你的目录)
cd C:\_Alex\repos\repo_my_aliyun\_learning\gym-flappybird

# 运行TensorBoard
tensorboard --logdir logs/tensorboard

# 打开url
http://localhost:6006/

Tensorboard中q-values的理论上限是12.5分。

推理加速predict

输入只有1个时, 调用model(input)的速度大大快于model.predict(input)
输入只有1个时, CPU的运行速度大于GPU的速度

flappy-bird-gymnasium 源码

# 下载好 flappy-bird-gymnasium
git clone https://github.com/markub3327/flappy-bird-gymnasium
cd flappy_bird_gymnasium/tests

# To play the game (human mode), run the following command:
python test_human.py

# To see a random agent playing, add an argument to the command:
python test_dqn.py

# To see a Deep Q Network agent playing, add an argument to the command:
python test_random.py


投诉或建议

玻璃钢生产厂家商场儿童陈列美陈宣城卡通玻璃钢雕塑人物校园玻璃钢人物雕塑代理价格玻璃钢景观雕塑小品镜框仿真玻璃钢雕塑规格商场邮筒美陈北京艺术商场美陈售价宜春景观玻璃钢雕塑生产厂家顺德玻璃钢花盆花器苹果玻璃钢雕塑定做上海大型玻璃钢雕塑厂家供应玻璃钢雕塑展后如何处理宿州水果玻璃钢雕塑供应商漳州模压法玻璃钢雕塑上海艺术商场美陈费用陕西玻璃钢酒店人物雕塑西安玻璃钢雕塑制造公司芜湖景区玻璃钢雕塑价位玻璃钢雕塑租赁西安宜春玻璃钢雕塑人物玻璃钢雕塑什么价钱便宜广西城市标志玻璃钢雕塑楚雄玻璃钢雕塑商家商业广场玻璃钢卡通雕塑规格济南玻璃钢公园雕塑商场美陈空间设计方案常见玻璃钢雕塑摆件设计企业玻璃钢动物不锈钢雕塑设计伊春卡通玻璃钢雕塑定做玻璃钢雕塑户外能用多久香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化