Unity ML-agents是一个Unity给强化学习提供接口的库。
其实一直想弄个这个,但是看着网上资料有点少,自己也忙,就摸鱼摸到现在,这几天在等数据标注,闲下来就打算先玩玩。发现网上很多教程都已经有点太久了,比如一些函数API全部改了,按照视频这些老报错,所以自己就看github教程弄了一下
unity官方下载Unity Hub
官网链接
PS:不要直接在这上面下载unity,首先,直接下载的unity也没法直接运行,需要unity hub启动。其次,这里下载的unity,在添加到unity Hub之后,是没法添加其他模块的,比如当初需要安卓支持模块,没法添加,自己配置了好久
下载之后,直接安装unity hub,注册用户后打开界面,选择下载unity
这里推荐Unity2020.3.5(LTS),2019的也可以,只要是2018.4之后的版本都可以支持Unity ML-agents,不推荐使用2021最新几个版本,虽然会添加很多新功能(我觉得你大概率也用不上),但是新版本不太稳定,可能会出现很多bug(不要怀疑,我遇到过),而且网上可能可以参考的资料会很少。
额外模块添加一个安卓支持,和一个中文支持就可以了,后期还可以添加,一般也就用得上这两个~
剩下就等待安装,安装的时候很容易卡在某一个地方不动,这个时候你要么不要管他,也许过一会就动了,如果超过半个小时没有动他,你最好给他取消了,重新下载,这个是unity下载链接不太稳定,我开梯子也没有解决,只有试着多安装几次,也许就好了
最后就是这个样子
Anaconda安装没有什么坑和注意的,一路同意就可以了
官网链接
WIN+R打开CMD
conda create -n your_env_name python=x.x
eg:
conda create -n unityML python=3.7
python环境官方推荐3.6-3.8,个人建议3.7最好
安装结束以后,进入环境,下载一些包
conda activate unityML
我原来一直记得unityML-agent是使用tensorflow的,但是好像最新的版本是pytorch?具体我也不太清楚,当时安装的时候报错了,你们可以先去下载pytorch,因为这个下的比较久
Pytorch
选择相关配置,会生成相关链接,个人建议按照我的推荐环境
复制下载链接,在虚拟环境中下载,这个下载可能会比较慢或者断,也是因为在外网的原因,解决方案又pip换源和设置代理,大家就根据自己情况去找吧,这写多了过不了审~
pip3 install torch==1.8.1+cu102 torchvision==0.9.1+cu102 torchaudio===0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
安装结束后,基础配置就完成了
在github搜索ml-agents,就可以搜索到相关仓库
ML-agents
进入这,选择一个包,这里选择的是ML-Agents Release 16(其实本来想选15的,但是下错了,所以就算了,以后建议大家都不要安装最新版,安装次最新版本,因为最新版本可能会出现一些未知问题,次最新会有一些人踩坑笔记)
下载之后解压,在CMD中进入解压文件夹,通过cd
依次进入以下三个文件夹
进入文件夹后,使用
pip install -e .
进入下一个,重复pip install -e .
命令
最后一个安装成功后,测试安装成果,输入
mlagents-learn
随便新建一个项目,eg:
或者,个人比较推荐将ML-agents中的project文件夹,复制粘贴到另一个地方(直接打开也可以,但是后面你在上面瞎鼓捣,弄错了,你再从这里面复制就可以了,免得又得解压)
复制粘贴之后,添加项目,选择project文件夹,打开即可。
选择unity版本,到你的版本
这之后,因为ML-agents默认是18.4版本的资源,这里需要升级,选是
选择继续
选择忽略
进入界面以后,打开windows(或者窗口),选择packege mannager(包管理器)
点击+号,选择磁盘安装,进入当初解压的ml-agents包,依次进入这两个文件夹
进入后选择package.json即可安装,另一个文件夹相同操作,以后所有unityML-agents项目都用这个方法,导入库。
这样就安装完成了~
再下面项目中,进入以下文件夹,选择prefabs(prefabs:预置,可以直接拖入,上面动画和代码都附带好了),将下面的3DBall拖入
然后CMD进入ml-agents包中的config文件夹中,进入ppo算法配置文件夹,使用以下命令
mlagents-learn 3DBall.yaml --run-id=3DBall1
3DBall.yaml是算法参数,run-id是训练唯一编号,会在当前文件夹中创建result文件夹,会把训练参数数据存储在result/3DBall1文件夹中
让你点击unity中的play按钮
就可以开始训练了
测试结果就这样了,你们还可以去实时其他demo