DeepMimic-动作生成算法

DeepMimic

备注: https://blog.csdn.net/weixin_41888257/article/details/104513891
来源: SigGraph2018
研究方向: 动作生成

这篇论文提出了:通过结合强化学习,利用motion capture数据, 使动画角色可以模仿数据当中的运动(包括一些高动态的运动,比如后空翻,还有一些跟接触类的运动,比如爬行)的同时,还可以实现用户定义的一些任务。同时,该论文还实现了多种技能的,包括:1)Multi-Clip reward: 使角色可以在完成任务的时候,自由组合同一类别中的不同行为的一些动作(比如不同走路方式和转弯方式);2)Skill-selector: 对同一类运动的具体效果进行选择,比如对于翻转,可以选择:向前翻转、向后翻转、左侧翻转、右侧翻转等;3) Composite policy:可以从不同类别运动的动作中进行选择 ,做出最符合 [公式] 时刻状态的动作 [公式] ,以便更好地适应新的环境和任务。

作者提到,论文的两个关键点为:1). reference state initialization 2). early termination。这两点分别的作用为:

1) 根据reference data (motion capture data) 采样初始状态:

在每个事件的开始,都需要定义一个初始状态。 在之前的方法中,在学习模仿不同的动作时,都是从一个固定的初始状态开始学习的。在每个episode开始时,最简单的策略是,设置agent的初始状态为目标行为的开始状态,然后让agent按顺序去学习后面的状态,这样导致的一个情况是,当agent没有学会前面的动作时,它没办法去学习后面的动作。因为这篇论文的设定的任务是模仿reference motion,所以可以知道目标行为中的所有状态,从而可以从reference 状态中,选取一个状态来当做一次时间的开始,而不是每次都从同一个状态开始。这样做的优势是:当学习比较复杂的动作,比如后空翻时,因为每次的初始状态是变化的,agent就有可能在一开始的时候,发现跳到半空中可以获得非常高的reward,从而更容易学会这种高动态的动作。反之,如果从固定的状态开始,那么agent可能需要一点点试探着跳,甚至根本无法达到这种完全跳到半空中的状态。

2) 提前终止:

提前终止,可以有效减少训练样本中对完成行为相对无效的数据。比如,当学习后空翻时,agent在摔倒后很难恢复到它正常的轨迹,之后很长一段时间内都要在地面上做“无谓的挣扎”。显然,在地面上挣扎的状态,对于完成后空翻这个行为来说,是无效的。在这种情况下,如果不提前终止,那么样本中就会存在大量的这种无效样本。因此,在一个episode内一旦检测到agent达到某些终止条件,就应该终止这个episode,可以避免产生大量无效样本,只让agent去学习与完成目标行为有关的状态。
在这里插入图片描述

多技能融合(Multi-Skill Integration)
前面所有介绍的训练方法都是建立在只提供一个 reference motion 的基础上的,显然我们想要的是 agent 能做很多不同的动作或者说是技能,于是作者介绍了三种融合的方法:

Multi-clip Reward: 将训练时引入的参考动作 reward 稍稍变复杂一些,由一种参考变为多动作参考,具体在某一 state 选择哪种动作参考,根据的是那一时刻各个reference motion所带来的reward的大小,选取reward大的当做参考 (使角色可以在完成任务的时候,自由组合同一类别中的不同行为的一些动作,比如不同走路方式和转弯方式);
Skill Selector:在训练时,让用户(user)指定某一时段或执行某一任务时参考哪一种动作,训练结束后,Character自然就会用多种动作了,这里让用户指定的方法就是将动作编成一个one-hot码,和前文中的goal一起输入网络(对同一类运动的具体效果进行选择,比如对于翻转,可以选择:向前翻转、向后翻转、左侧翻转、右侧翻转等);
Composite Policy:在训练时每种动作分别训练,训练结束执行时则根据每种动作所对应的输出的value network返回值确定当前state下哪一种动作被使用。(可以从不同类别运动的动作中进行选择 ,做出最符合 t tt时刻状态的动作 a t a_ta t,以便更好地适应新的环境和任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值