强化学习练就18般武艺!伯克利开源DeepMimic

简介:

还记得今年4月伯克利BAIR实验室发布的那个会“18般武艺”的DeepMimic模型吗?他们使用强化学习技术,用动作捕捉片段训练模型,教会了AI智能体完成24种动作,走路、跑步就不用说了,还包括翻跟斗、侧翻跳、投球、高踢腿等等高能动作。

体会一下:

e08aa7567527522ff6b8c89b03cacf416291813e

训练每一种动作都需要动作捕捉和深度强化学习,而BAIR的研究者创造了一个全新的系统,教会agent完成复杂、逼真的动作任务。

作者Xue Bin Peng等人将这个系统命名为DeepMimic,比已有工作更进一步的是,他们的目标是在训练一个agent完成特定任务的前提下,使它的动作更贴近真实。他们的论文发表在SIGGRAPH 2018。

47152464419aae3cac5d72da5f634ab472d0b833

除了人形机器人外,他们还训练了Atlas机器人、暴龙、龙等形态的agent。

72d3b3d5c7b1bfab1b54526115b492bbd2573dbf

Atlas机器人

整个DeepMimic所需要的input分为三部分:一个被称为Character的Agent模型;希望Agent学习的参考动作(reference motion);希望Agent完成的任务(task)所定义的reward function。

训练之后会得到一个可以控制Agent同时满足与参考动作相似且可以完成任务的控制器。

c1da0bd7e0290033423269c44e96e5dad3b0828a

四种翻滚动作

现在,DeepMimic的代码、数据和训练策略已经全部开源,感兴趣的读者不妨试试拿来训练自己的“功夫小子”。

开源代码

SIGGRAPH 2018论文:“DeepMimic: Example-Guided Deep Reinforcement Learning of Physics-Based Character Skills”的代码。这个框架使用强化学习来训练一个模拟人形智能体来模仿来自mocap数据的各种运动技能。

项目页面:

https://xbpeng.github.io/projects/DeepMimic/index.html

9844b3dd5ca28eb8e33e8ed00c6d66441565a87d

C++:

 ●  Bullet 2.87 (https://github.com/bulletphysics/bullet3/releases)
 ●  Eigen (http://www.eigen.tuxfamily.org/index.php?title=Main_Page)
 ●  OpenGL >= 3.2
 ●  freeglut (http://freeglut.sourceforge.net/)
 ●  glew (http://glew.sourceforge.net/)

Python:

 ●  PyOpenGL (http://pyopengl.sourceforge.net/)
 ●  Tensorflow (https://www.tensorflow.org/)
 ●  MPI4Py (https://mpi4py.readthedocs.io/en/stable/install.html)

Misc:

 ●  SWIG (http://www.swig.org/)
 ●  MPI
 ●  Windows: https://docs.microsoft.com/en-us/message-passing-interface/microsoft-mpi
 ●  Linux: sudo apt install libopenmpi-dev

Build

模拟环境是用C++编写的,python包装器使用SWIG构建。要安装python依赖项,请运行

pip install -r requirements.txt

请注意,必须在MPI4Py之前安装MPI。

Windows

wrapper使用DeepMimicCore.sln构建。

1. 从配置管理器中选择x64配置。

2. 在DeepMimicCore的项目属性下,修改要包含的其他包含目录

 ●  Bullet源目录
 ●  Eigen包括目录
 ●  python包含目录

3. 修改要指定的其他库目录

 ●  Bullet lib目录
 ●  python lib目录

使用Release_Swig配置构建DeepMimicCore项目,这应该在DeepMimicCore/. 中生成DeepMimicCore.py。

Linux

1. 通过指定以下内容修改DeepMimicCore中的Makefile,

 ●  EIGEN_DIR:Eigen包含目录
 ●  BULLET_INC_DIR:Bullet源目录
 ●  PYTHON_INC:python包含目录
 ●  PYTHON_LIB:python lib目录

2. 建立wrapper,

make python

这应该在DeepMimicCore/中生成DeepMimicCore.py

如何使用

一旦构建了python wrapper,就可以使用Tensorflow完全在python中完成训练。DeepMimic.py运行用于查看模拟的可视化工具。使用mpi_run.py完成训练,它使用MPI在多个进程之间并行训练。

通过指定提供场景配置的参数文件来运行DeepMimic.py。例如,

python DeepMimic.py --arg_file args/run_humanoid3d_spinkick_args.txt

将为“回旋踢”运行一个预训练的policy。同样的,

python DeepMimic.py --arg_file args/kin_char_args.txt

将加载并播放mocap片段。

要训练一个策略(policy),请通过指定参数文件和工作进程数来运行mpi_run.py。例如,

python mpi_run.py --arg_file args/train_humanoid3d_spinkick_args.txt --num_workers 4

将训练一个策略,使用4个workers进行“回旋踢”。作为训练方案,它会定期打印统计数据并将其记录到output/,以及最新策略的.ckpt。通常需要大约6千万个样本来训练一个策略,而训练16个workers需要一天时间。16个workers可能是框架所能支持的最大workers数量。

args中已经为不同的技能提供了许多参数文件。train_ [something] _args.txt文件是为mpi_run.py设置的,用于训练策略,并为DeepMimic.py设置run_ [something] _args.txt文件以运行其中一个预训练策略。要运行自己的策略,请使用run_ [something] _args.txt的文件之一,并指定要使用--model_file运行的策略。确保引用的动作--motion_file对应于策略所训练的动作,否则策略将无法正常运行。

接口

 ●  右上角的图显示了价值函数的预测
 ●  单击右键并拖动将平移相机
 ●  单击左键并拖动将对特定位置处的角色施加力
 ●  滚轮会放大/缩小
 ●  按“r”将重置该episode
 ●  按'l'将重新加载参数文件并重建所有内容
 ●  按'x'将使用随机的框投向角色
 ●  按空格将暂停/恢复模拟
 ●  按’>'将逐步执行模拟

Mocap Data

Mocap clips位于data/motions/中。要播放剪辑,首先修改args/kin_char_args.txt并指定要使用的文件--motion_file,然后运行

python DeepMimic.py --arg_file args/kin_char_args.txt

动作文件遵循JSON格式。“Loop”字段指定运动是否是循环的。“wrap”指定一个循环运动,该循环将在结束时回到起始点,而“none”指定一旦运动结束就会停止的非循环运动。“Frames”列表中的每个向量指定运动中的关键帧。每个框架具有以下格式:

fdfe6032af936273e771f4c4a73b781f268e895e

位置以米为单位指定,球面关节的3D旋转指定为四元数(w,x,y,z),转动关节(例如膝关节和肘关节)的1维旋转用弧度的标量表示。根位置和旋转在世界坐标中,但所有其他关节旋转都在关节的局部坐标中。要使用你自己的动作剪辑,请将其转换为类似格式的JSON文件。


原文发布时间为:2018-09-17
本文作者:肖琴
本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”。
相关文章
|
2天前
|
人工智能 搜索推荐
杨笛一新作:社恐有救了,AI大模型一对一陪聊,帮i人变成e人
【4月更文挑战第24天】杨笛一团队研发的AI大模型,以“AI伙伴”和“AI导师”框架帮助社恐人群提升社交技能。通过模拟真实场景和个性化反馈,该方法降低训练门槛,增强学习者自信。但也有挑战,如保持AI模拟的真实性,防止反馈偏见,并避免过度依赖。研究强调,AI应作为辅助工具而非替代。[论文链接](https://arxiv.org/pdf/2404.04204.pdf)
7 1
|
1月前
|
传感器 算法 机器人
斯坦福李飞飞团队祭出“灵巧手”,泡茶剪纸炫技
【2月更文挑战第26天】斯坦福李飞飞团队祭出“灵巧手”,泡茶剪纸炫技
27 5
斯坦福李飞飞团队祭出“灵巧手”,泡茶剪纸炫技
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
本科毕业加入谷歌,还写了「思维链」开山之作,这位OpenAI新秀正为本科生答疑解惑
本科毕业加入谷歌,还写了「思维链」开山之作,这位OpenAI新秀正为本科生答疑解惑
|
8月前
|
机器学习/深度学习 PyTorch TensorFlow
解读:AlphaGo之父倾力打造:The Predictron端到端训练与规划
解读:AlphaGo之父倾力打造:The Predictron端到端训练与规划
解读:AlphaGo之父倾力打造:The Predictron端到端训练与规划
|
11月前
|
机器学习/深度学习 数据采集 算法
南洋理工发布量化交易大师TradeMaster,涵盖15种强化学习算法
南洋理工发布量化交易大师TradeMaster,涵盖15种强化学习算法
174 0
|
11月前
|
机器学习/深度学习 人工智能 架构师
谷歌长文总结四代TPU打造经验:里程碑式的TPUv4是怎样炼成的?
谷歌长文总结四代TPU打造经验:里程碑式的TPUv4是怎样炼成的?
268 0
|
机器学习/深度学习 人工智能 算法
南大周志华、俞扬、钱超最新力作:《演化学习:理论与算法进展》正式上线
梯度下降或最速下降法,是机器学习最为重要的模块之一。尤其是在深度学习时代,梯度下降已成为不可或缺的组成部分。但同时,梯度下降也限制了机器学习推广到更广泛的一些任务中,例如不可微的目标函数。这一缺陷,却正好能被本书的主题「演化学习」解决。
381 0
南大周志华、俞扬、钱超最新力作:《演化学习:理论与算法进展》正式上线
|
机器学习/深度学习 人工智能 算法
洞悉AlphaGo超越围棋大师的力量:机器之心邀你一起强化学习
美国计算机协会会刊(CACM)9 月发表了《强化学习的复兴》一文,深度介绍了强化学习的运用及其与深度学习的比较。强化学习是机器学习的主要三种类型之一,被应用在多种训练任务中。我们熟知的 AlphaGo 中就用到了大量的强化学习。「人工智能研学社· 强化学习组」将强化学习作为第一期学习内容,与大家分享有关深度学习的基本知识。本期教学内容推荐 Rich Suntton 教授关于强化学习的演讲视频——强化学习介绍及与函数近似结合的讨论。
242 0
洞悉AlphaGo超越围棋大师的力量:机器之心邀你一起强化学习
|
机器学习/深度学习 人工智能 自然语言处理
注水、占坑、瞎掰:起底机器学习学术圈的那些“伪科学”
一边是今年的NIPS迎来了创纪录的8000多篇投稿,一边是李飞飞、Keras框架的作者François Chollet等大佬摊手承认,机器学习发展已进入瓶颈期。
1238 0