当前位置:   article > 正文

对《Phase-Functioned Neural Networks for Character Control》一文的理解(上)

phase-functioned neural networks for character control

该文献发表于SIGGRAPH2017,作者 DANIEL HOLDEN, University of Edinburgh、TAKU KOMURA, University of Edinburgh、JUN SAITO, Method Studios


首先有没有志同道合的朋友,也在学习相关方向。若有,请私信我或者下方留言,我们共同切磋可好。一个人搞这些实在是进度缓慢啊!

其次,博客只是个人理解,并非都对,若有差错,还请各位大佬们指出。阿里嘎多~

,本文重在翻译(人翻非机翻),(下)会给出更多个人理解。


                                          角色控制的相位神经网络

DANIEL HOLDEN, University of Edinburgh     TAKU KOMURA, University of Edinburgh    JUN SAITO, Method Studios

我们提出了一个使用全新网络结构的实时角色控制机制,命名为相位神经网络(PFNN)。在这个网络结构中,权重通过一个以相位(phase)为输入的循环函数计算。随着相位,我们的系统也将用户控制,先前角色状态,场景几何做为输入,并且自动生成满足用户控制的高质量动作。整个网络进行端对端训练,数据集是一个虚拟环境下的运动集合,比如说走,跑,条和攀爬的动作。我们的系统因此能生成适应多种环境的动作,比如说在粗糙地形上走和跑,爬过巨大的岩石,跳过障碍,蹲伏等。我们的网络结构能产生比时间序列自动回归模型(LSTM)更高质量的结果,因为它根据相位来处理潜在的可能。训练完成后。我们的系统既快速又稳定,哪怕训练千兆节的动作数据,也只需要几毫秒的运行时间和几兆节的内存。我们的工作最适合用来在交互系统比如电脑游戏中控制角色。

关键字:神经网络,运动,人类动作,角色动画,角色控制,深度学习。

1 介绍

即使拥有大量高质量的动作捕获数据,生成数据驱动的虚拟角色实时控制器也一直是一个挑战。一部分原因是角色控制器有很多需要被满足的要求,比如说它们必须从大量数据中学习,它们必须运行够快并且占用较小。虽然目前为止该领域已经有很多进步,但是大多数的解决方法都面临着这样或那样的问题尚待解决使得它们难以普及。

当环境不平整甚至有较大障碍且需要角色根据用户指令表现出不同的跑,跳,躲避等动作时,这个问题变得更难解决。在这种情况下,我们需要一个能够从大量高维动作数据学习的框架,因为会有很多不同的动作轨迹和相应的几何存在。

近期深度学习和神经网络的发展显示出了解决该问题的可行性。神经网络能够从大量高维度数据集中学习,并且每次训练占存小且运行快。现在问题变成了如何将神经网络应用到动作数据,从而仅需要处理极小数据就能产生高质量的实时输出。

卷积神经网络CNNs和自动回归模型比如说RBMsRNNs等架构已经取得了一些成果。CNN模型对每一层进行转换,逐步转换输入信号直到实现理想的输出。这个架构需要输入一次性给完并且输出也是一次性,即离线。这并不适用于某些类似于网络游戏的环境,因为输入会被用户的操作影响。RNN等其他自回归模型更适合网络游戏和在线动作生成,因为它们只需要未来的单帧作为输入,(require a single frame of future input)然而在生成连续动作时它们效果不好,预测的错误会反馈到输入中并且积累。当不同的相位帧错误的组合在一起时,它们更容易死机(“die out”),或者当该频率的噪音反馈到系统时,它们更容易紊乱(explode)。没有强壮的归一化方式----比如说在训练数据中把输出和最近的数据点相融合---这个过程严重影响到运行时间和没存---是不能防止这样的现象发生的。

我们提出了一个全新的网络结构,命名为相位神经网络(PFNN)。这个网络结构可以用一个相位函数(phase function)每帧都生成回归网络的权重,相位---代表运动循环时间片的变量。一旦生成权重,这个网络权重可以被用来做一个从当前帧控制参数到相对应的角色状态的回归。PFNN的设计可以避免混合不同相位的数据,反而它能够创建一个回归函数,该回归函数随着phase平滑的发展。不像CNN模型,这个网络结构更适合在线的实时的动作生成;不像RNN,这个网络能够生成用户交互型的复杂环境下的连续高质量动作。我们的系统既快速又稳定,哪怕训练千兆节的动作数据,也只需要几毫秒的运行时间和几兆节的内存。这种紧凑性还可以通过相位函数的预计算来换取运行时速度,从而允许在内存和计算资源之间进行定制的折衷。

动态的改变网络的权重而不是使其保持不变,在保持稳定结构的同时显著得提升了回归的表现力。这允许网络从大量高维度的同时包含环境和人物动作的数据集中学习。训练完成后,系统能为角色自动生成合适的有表现力的在不同地形上运动,并且还能跳和躲避障碍物。在准备训练集时我们也进行了一些处理,使得捕获的动作数据和从游戏环境中提出的场景高度图能相适应。

总的来说,我们的工作主要包括以下贡献

  • 一个全新的实时动作生成架构,我们称之为PFNN,能够借助大量的包含同环境的交互的动作数据在完成角色控制。
  • 一个对用于PFNN的网络的数据的处理过程,使得动作数据和虚拟环境中提取出来的几何相贴合。

2 相关工作

在这个部分,我们先介绍数据驱动的动作生成策略,然后我们会介绍同环境交互的角色动作生成方法。最后,我们介绍基于神经网络的方法--集中于把潜在变量和用户参数相匹配(mapping latent variables to some parameters of the user's interest)。

数据引导的动作生成:数据引导的动作生成是一个吸引了很多计算机动画和机器学习工作者的热门课题。基于线性,基于核,基于神经网络的框架都被成功应用。

基于线性基的技术比如PCA被广泛应用于减少动作数据的维度和根据少量输入来预测动作。全局PCA在低维度空间表达大量动作时存在问题,局部PCA被用于处理任意类型的动作。C和H将局部PCA和稀疏标记集(with sparse marker sets)用于生成全身动作。T生成相似的局部结构用来通过一个稀疏惯性感知器(sparse inertia sensors)预测全身动作。这样的结构需要大量的数据预处理和计算用于训练(比如说运动分割,分类和校准)和运行。

基于核的方法被用来克服线性方法的局限性和考虑数据的非线性关系。径向基函数RBF和高斯处理GP经常被用来组合多种动作。GPLVM被用来计算低维度隐空间来解决反向动力学冗余问题或者提高效率。W提出了高斯动力学模型GPDW,可以从隐空间学习,并用另外一个GP将动作应用于全空间。基于核的策略在存储和转置协方差矩阵cov matrix时占用过高的内存,分别达到平方(square order)和立方级别(cube order)的占用。局部GP算法限制了插入的样本数量,从而克服了这一问题,但是也需要K近邻算法来处理高维数据比如说人的运动,这在运行和预计算时都占用了大量内存。

由于其高度的可测量性和运行效率,使用神经网络的数据驱动生成动作的方法引起研究者的注意。T提出受限的玻耳兹曼机cRBM用来预测身体在下一步的动作。F提出递归编解码网络ERD--在隐空间使用LSTM模型预测动作。这些方法可以分类为自回归模型,角色的动作根据上一步来预测。自动回归模型适合实时应用比如说电子游戏,因为它能更新每一帧的动作。受限的玻耳兹曼机模型cRBM和RNN模型比传统的线性或核模型更高效。而由于噪声和欠拟合的存在,它们也会出现滑步的情况--运动逐渐脱离运动域。H采用CNN框架,将低维度用户信号和全身动作相匹配,这是一个离线的框架,需要在生成动作前准备好所有的控制信号。

我们的框架是一个能够根据用户输入和角色先前状态来预测角色动作的时间序列方法。

 

和环境的交互:虚拟环境的自动角色控制器允许角色躲避障碍并适应地形,对于实时应用来说很有用,这些方法可以被分为基于优化的方法和基于形状匹配的方法。

基于优化,基于取样的方式,最大化后验概率检测MAP,和强化学习技术的方法,在给定角色当前状态(包含角色姿态)和其与环境的联系的时能预测角色的行动,他们要借助损失和价值函数来评估不同环境下的每一步。虽然这些方法能生成非常真实的动作,它的计算损耗对动作数量呈现出指数增长。更重要的是,当时用动力学数据时(kinematic data)对样本使用K最近邻居搜索算法容易造成歧义。L通过在隐空间使用强化学习方法GPLVM解决了这一问题,但这需要对动作进行分类并且将搜索限制在每一类中。P将强化学习用于基于物理动作的空间控制上,这能应对高维度状态空间,但这个系统只在2d环境进行过测试。我们的目标是在拥有复杂环境的3d运动空间控制角色。

另一些在给定环境下控制角色的方法是对环境进行几何分析并将运动和动作同新环境相适应。L使用刚性形状匹配来调整同环境接触较多的动作,比如说坐在椅子上,或者在不同的几何上躺下。G提出粗糙力搜索来研究哪些环境角色需要产生一个特定动作。K提出使用物体的不同的几何特征来匹配物体动作与不同环境。K分析了开放空间和身体的物理舒适度来预测角色可以用各种姿势摆放的位置。S用微软的工具Kinect捕捉人类和物体的交互,并且生成可以用来合成新场景的静态模型。这些方法都只解决了静态问题而未解决高度动态化的交互问题。从动画的目的来说,必须要考虑动作的连接和平滑度。K估算在动态运动时身体和环境的连接,并且用于匹配运动和虚拟环境。他们的方法都需要提前对几何环境进行深度分析,因此无法满足实时交互的要求。我们的技术基于从几何到运动的回归,所以可以克服这些局限性。

将用户参数表现为潜在变量:在很多环境中人们更倾向于将场景参数,比如视角和环境的光照条件,表现为潜在变量,这样用户就能在生成时控制它们。K提出了一个技术来用隐藏单元表达视角和光照条件,M提出一个乘法网络用潜在变量参数化网络的权重。这样一个网络在潜在参数对整体输出有全局影响时十分有用。我们发现这种结构对运动和相位作为参数时很实用,因此在我们的系统中采用了相似的概念。

3 系统总览

PFNN是一个神经网络结构,它的结构在下图Fig2。其中权重由称为相位函数的相位p的周期函数来计算。网络的输入包括角色的前一动作和用户控制,网络的输出包含相位的变化,角色的当前姿态和一些额外的参数。

我们的系统包括三个阶段:预处理阶段,训练阶段和运行阶段。在预处理阶段,我们首先准备训练数据并且自动提取用户提供的控制参数(在第4节介绍这些参数)。这个处理包括了将地形数据和运动数据相匹配(在第4节介绍匹配方法)。在训练阶段,使用这些数据训练PFNN,这样在给定控制参数可以生成每一帧的角色动作。在运行阶段,输入参数能从用户输入和环境中得到,然后被放入系统来决定角色的动作(在第6节介绍)。

4 数据获取和处理

在这个部分,我们先描述我们如何进行动作捕获和提取用来训练系统的控制参数(4.1)。接下来我们描述我们如何将地形和捕获的动作数据匹配(4.2)。最终我们总结了整个系统的参数(4.3)。

4.1动作捕获和控制参数

动作数据被捕获后,动作参数包括动作的相位,步态的语义标签,身体的轨迹和沿着轨迹的地形的高度信息,都被计算或者手动标记。这个过程在下面介绍:

动作捕获:我们首先捕获一些不同步态和朝向的长序列运动数据:我们在工作室(capture studio)也放置了障碍物,跳板和平台,然后捕获在这些障碍物上以不同方式不同速度的步态---走路,跳,跑。我们额外捕获了其他不同的动作,比如蹲伏或者以不同的步子大小跳过不同的高度。结束后我们会有大约一小时的原始动作数据(60fps),大概是1.5GB的大小。一个铰接式的身体模型,和CMU的运动数据的BVH版本一样,有30个旋转关节,有一个额外的根变换(root transformation)加在了地上(在hip的下面)。

相位标记:数据中的相位必须被标记,然后作为PFNN的输入参数。这是一个半自动的过程。首先,脚部接触时间通过计算足跟和脚趾关节(heel and toe joints)的速度和观察何时到达下限来标记。这个结果需要人为确认和手动更正。接触时间获取后,相位可以通过观察帧来自动计算,并将右脚接触地面时设定为0相位,左脚接触地面时设置为π相位。其余帧插入中间。对某些站姿,最小循环设置为0.25s,相位允许连续循环。

步态标记:我们会给步态作语义标记并且以二进制矢量的形式提供给系统。这么做有两个原因:首先,这些标记提供了一个排除歧义的方法(比如说快走和慢跑经常有相似的轨迹),而后有时用户想要观察特定场景的特定动作。这个过程要手动进行,但是能够被简化,只要能保证在捕获时角色动作改变的不会很频繁或者很长的捕获中只包括简单一种步态。

轨迹和地形高度:角色的根变换(root transformation)为将髋关节(hip)投影到地面的中心。朝向由髋关节和肩关节矢量的平均来计算,取向上方向的叉积。这个方向是平滑的,除去了小的高频的运动。

根变换(root transformation)的轨迹被提出,地形和运动相匹配(4.2),地形的高度由轨迹下的位置以及轨道两侧,垂直于朝向方向和远离中心25cm的位置计算,更多的细节会在之后描述。如下图Fig5

处理完成后,我们会生成镜像版本形成两倍的数据。

4.2地形适应

为了制作一个在运行时角色能够自动适应几何环境的系统,我们需要去准备包括了角色在不同地形运动的数据的训练数据。几何和运动同时捕捉是比较难的,我们用一个离线的方式来处理使得环境高度图的数据和不同的动作捕获数据匹配。拟合结束后,这些地形允许我们使用和几何环境有关的参数作为输入来控制系统。

我们的高度图数据是用Source Engine(引擎)从不同的几种环境提取的。我们跟随从上方进入场景的光线来捕捉全几何信息,每英尺每像素的分辨率。从这些高度图,我们在大约20000patch 3x3米的范围内随机取样角度和位置。这些(patches)被用在适应处理。

适应处理发生在两个阶段。首先,对动作数据中的每个动作循环,我们寻找到10个最佳匹配包,寻找的方式是暴力搜索(brute-force way)---尝试fit每一个包并且选择error function值最小的包。然后,我们使用一个简单的径向基函数RBF网络编辑技术优化结果,编辑地形使得角色的脚在接触时间正好站在地面上。

接下来我们详细介绍一下适应处理的细节。对数据集中的每个动作循环,给出左右脚跟与脚趾头关节(或者脚尖关节),声明为,我们先计算每一帧他们对应的高度,并给出接触标签(二进制变量,用来表示关节是否和地板接触)。我们发现这些关节在与地板接触的所有时间的平均位置,并且在该位置的数据库中将每个包居中。对于每一个包,我们计算机在每个关节下的地形的高度。(We find the average position of these joints for all the times they are in contact with the floor and center each patch in the database at this location. For each patch, we then compute the heights of the terrain under each of these joints )

如下是用到的公式:

Edown保证地形的高度和脚与地面接触时匹配。

Eup保证当不与地面接触时脚总是在地形上(避免相交)。

Eover只有当角色跳跃时才会被激活((indicated by the variable ),保证地形的高度距离脚不超过l(在本文中l=30cm)。这保证大跳和大障碍匹配,小跳和小障碍匹配。

当我们对数据库中的每个包都计算除了Efit,我们选择Efit最小的10个包然后进入到适应处理的第二个环节。在这个阶段我们编辑高度图,such that the feet touch the floor when they are in contact. 我们借鉴了B和K的工作简单变化了高度图,我们使用线性内核将2D RBF应用于地形拟合的残差。虽然我们用了这个方法,其他的一些网格编辑技术也能用在此例上。(We apply a 2D RBF to the residuals of the terrain fit using a linear kernel)

总的数据处理和适应时间大概三个小时,在Inteli-6700,3.4GHz的cpu上单线运行。

4.3系统输入输出参数

在这一部分,我们记述了系统的输入输出参数。对每一帧i,我们的系统都需要使用相位p来计算网络权重。权重计算完后,系统需要神经网络的输入xi,包括了用户控制参数,角色在上一帧的状态和环境参数。计算输出yi,包括角色当前帧的状态,相位的变化,根形态的动作,对下一帧轨迹的预测,足关节的接触标签用在IK后处理(contact labels for the feet joints for use in IK post-processing)

现在让我们来介绍输入参数的细节。我们的参数选择和MotionMatching2016中的相似,包含两个部分。对于角色的状态,我们选用角色的根形态的关节的位置和速度。对于角色控制,我们用一个帧中心的局部窗口,并且检查每十个帧(在本文中不是10而是12,1s是过去的运动,0.9s是将来的运动)。在每一帧我们提取一定数量的特征,包括对应根形态的角色轨迹位置和角色轨迹方向,二进制矢量表达的角色步态和轨迹下和25cm外的的地形的高度。

单帧的输入控制变量的参数包括一个矢量是在2d水平板上的轨迹位置的下降取样窗口,是轨迹方向,是左/右中心三个样本点的轨迹高度,是轨迹的用来描述角色步态和其他信息的语义标记(5维的二进制向量),是前一帧的局部关节位置,是前一帧的局部关节速度,j是关节的数量,在本文中是31。在这个工作中,在以下情况时,额外语义变量的独立成分是active:1.站立。2.步行。3.慢跑。4.跳跃。5.蹲伏。

 

输出帧i变量的参数包括一个矢量是预测的下一帧的轨迹位置,是预测的下一帧的轨迹方向,是针对角色根形态的关节位置,是关节速度,是关节角度,下面这3个变量没看懂

, 是相位的变换,是脚步接触标签。

5 相位神经网络

在这个部分我们讨论了PFNN的结构和训练。PFNN是一个权重会根据相位值周期性变化的神经网络。我们称生成网络权重的函数为相位函数,在我们的工作中被定义为一个三次的CR-spline(cubic Catmull-Rom spline)(5.2)。首先我们会介绍神经网络结构(5.1),然后是用来生成网络权重的相位函数(5.2),最后,介绍训练过程(5.3)。

5.1神经网络结构

给定输入参数,输出参数,和一个单独的相位参数,我们首先建立一个简单的三层神经网络。每一层的隐藏单元数目设定为512,激活方程使用指数修正线性方程。

 

5.2相位函数

在PFNN中,网络权重alpha由以相位和参数为输入的相位函数计算。这个相位函数把p和β作为自变量:这个函数有很多潜在的选择,它可以是另一个神经网络或者一个高斯过程,但在这里我们选择了三次CR-spline。

使用它的原因有如下几点:只要让首尾控制点相同,它就可以形成一个循环;参数的数量和控制点数量成比例;相对输入参数p它变化的比较平滑。用CR-spline作为相位函数意味着每个控制点都能代表一种权重结构,这个函数在神经网络权重间进行平滑的插入( means each control point α k represents a cer-tain configuration of weights for the neural network α , and the function Θ performs a smooth interpolation between these neural network weight configurations. )。另一个方法去构造函数是把它当作一个神经网络权重空间中的一维的循环(Another way to imagine Θ is as a one-dimensional cyclic manifold in the (high-dimensional) weight space of the neuralnetwork)。

我们找到一个只需四个控制点就能表现系统所需的回归的周期样条(cyclic spline)。给定四个控制点(包含神经网络的权重设置consisting of neural network weight configurations),方程就能为随机相位p生成网络权重。

5.3训练

每一帧i变量xi,yi和相位pi都被存在矩阵中。数据用平均值和标准差正则化处理,然后按权重缩小。在我们的实验中,与关节有关的所有的输入变量都按0.1的值缩小,来减少它们的影响,从而获得最好的结果。这增加了轨迹在回归过程的影响,产生了一个更生动的角色。输入的二进制变量照常正则化没有任何特别处理。在地形适应完成后,最终的参数由10个不同的包组成。我们的数据集中最终包含大概4million数据点。

为了训练这个网络,我们需要保证对给定的控制参数X相位参数P都能产生相应的输出变量Y---也就是神经网络的输出。训练因此变成一个优化相位函数参数和损失函数的问题。

在这个等式中,第一项代表回归结果的平均方差,第二项代表正则化用来保证权重不至于很大。它也引入了一个很小的稀疏值,这一项由常数进行调整,γ在这个工作中被设定为0.01。

我们使用随机梯度下降算法和一个T实现的模型,它能自主计算损失函数的导数。dropout=0.7,minibatches size = 32。整个训练过程经过20个epch,花费了大概30小时。NVIDIA GeForce GTX 660 GPU 。

6 运行

运行过程中,必须提供每一帧的相位和网络输入。相位要被存储和实时增加,在0到2pi间循环。对于神经网络的输入x,关节位置和速度相关的变量被用在自动回归方法中,使用前一帧的计算结果作为下一帧的输入。我们的系统也使用过去/未来的轨迹做为输入(4.3):这个和过去相关的元素只是简单被记录,而关于未来的元素,我们会在接下来讨论。

同未来轨迹相关的输入:在为神经网络准备输入x时,未来轨迹的值通过组合控制手柄和油PFNN前一帧产生的轨迹来计算。

动作匹配MotionMatching中,C使用了控制杆的位置来表示理想的速度和角色朝向。在我们的方法中,这个速度和朝向由PFNN在前一帧预测到的速度和朝向组合生成。我们使用了一个组合函数。

t的范围是0到1,作为延伸的轨迹。tao代表一个附加的偏差用来控制角色的表现。我们设置这个用来组合速度的偏差为0.5(表现为偏向PFNN的预测速度),组合朝向的为2.0(表现为偏向手柄控制杆朝向)。这产生了一个看起来更自然的角色,因为当角色同朝向的反应快时才显得自然。

被算在未来轨迹中的变量都同运动的语义信息有关。这包括了理想的角色步态(表现为一个二进制矢量)还有一些其他的信息比如说天花板的高度如果角色需要跳而不是爬的话。这都通过用户交互决定(比如说我们通过游戏操控手柄的右键来表示步态转换到慢跑)或者通过检查轨迹与环境元素的相对位置(比如说当轨迹通过一个固定区域表示跳的运动的变量被激活)。

一旦同未来轨迹相关的变量出现时,最终的一步就是将轨迹位置垂直投射到几何场景上并且提取高度。这个构成了所有的PFNN的输入,因此输出y才能被计算出来。

给出输出y,最终关节变化也能通过预测的关节位置和角度计算出来,这个关节变化用简单的两个关节IK和接触标签c调整来避免滑步(These joint transforms are then edited to avoid foot sliding using a simple two-joint IK along with the contact labels c )。根形态的位置和旋转通过预测的根平移和旋转速度一直被更新( The root transform position and rotation is updated using the predicted root translational and rotational velocities r x ,r z ,r a . This completes the runtime process for an individual frame.)。

相位函数的预计算:训练完后,PFNN需要大概10兆字节的空间来存储变量β。相位函数Θ则需要大概一毫秒来计算,在某些情况下会变得很慢。因为相位函数是一个一维的函数,有固定的区域[0,2π],通过线下预计算可以省去运行时计算的过程,并且在运行时直接插入预计算的结果( Because the phase function Θ is a one-dimensional function over a fixed domain 0 ≤ p ≤ 2 π it is possible to avoid computation of Θ at runtime by precomputing Θ offline for a number of fixed intervals in the range 0 ≤ p ≤ 2 π and interpolating the results of this precomputation at runtime.)。

一些预计算的选择可以得到在速度和空间占用上的折衷。如下表Table1

一个方法是只预计算相位空间的五十个位置,在运行时对最近的预计算相位位置使用神经网络权重。这提升了内存占用,但是有效的减少了函数的计算。n=10时的样本也是可取的,然后采用分段线性插入。这些策略需要较少的空间并且能更准确,但是分段线性插入也需要大量的计算时间。(The constant method is to precompute Θ for n = 50 locations along the phase space and at runtime simply use the neural network weights at the nearest precomputed phase location. This increases the memory consumption by n/4 times, but effectively removes the computation of Θ entirely. Alternately, n = 10 samples can be taken and a piecewise linear interpolation performed of these samples. This approach requires less memory and may be more accurate but the piecewise linear interpolation also requires more computation time. Alternately the full cubic Catmull-Rom spline can be evaluated at runtime.)

7 结果

在本节中,我们将展示不同的情况下我们的方法的结果。有关更详细演示读者请参考补充材料。所有显示的结果使用相同的相位函数(All results are shown using the constant approximation of the phase function.)。
Fig6中,我们展示了我们的方法应用于角色在平坦环境下执行许多紧急转弯,速度变化,面向方向变化。我们的系统保持灵活和适应
用户输入良好,产生自然,高质量的运动。


Fig1中,我们展示了我们的方法应用于崎岖的地形的结果。我们的角色在一些具有挑战性的情况下产生自然运动,踩踏,攀爬并在必要时跳跃。


````不多做翻译。

8 评价

在这个部分我们把我们的方法同其余的方法进行比较,包括没有把相位当作输入的方法,把相位当作额外输入的方法,一个循环编解码网络,一个自动回归高斯过程,和一些简单的高斯过程算法。所有的方法都经过训练,每个网络的权重都经过了调整所以内存占用也相同。如下图Fig10

我们可以看到,这些方法都没有产生和我们的算法一样高质量的运动,并且还存在一些基础的问题。我们也比较了训练时间,运行时间和内存占用,然后评估了我们的数据驱动的地形适应模型,同别的简单的过程化模型的地形适应性进行比较。最终我们评估了我们系统的生动性,通过调整未来轨迹的组合和评测这种变化如何影响我们的结果。

标准神经网络:当使用没有将相位作为输入的神经网络时,这个系统会混合不同相位的输入,从而使得各个相位的动作被均化。在我们的系统中,只有相同相位的动作会被组合,所以不会产生这个问题。

为了避免这种错误的组合,需要给神经网路提供准确的相位作为额外的输入。在训练时,相位的影响会被忽略,别的变量会占据预测的主导,导致生成的动作僵硬不自然。这是由于dropout造成的。同相位相关的输入变量在经过dropout会失效,系统就会稀释它的作用,而去错误的学习别的变量来预测动作。这个错误可以通过减少对相位变量的dropout来避免,或者在输入中加入多重相位变量。同我们的方法相比,这个技术不能保证实际效果。

循环编解码网络:我妈将我们的网络同循环编解码网络比较。ERD网络具有记忆性,即使相位没有直接给出,也能从观察数据中学会相位的概念并且避免输入的歧义。ERD网络对不同的动作执行循环过程,因此会延迟“dying out”的开始。

不幸的是,一些问题仍然存在,比如说如果角色站直而用户想要他移动,这就很难观察到停滞时的相位,网络不知道用户是想让角色的左脚还是右脚先走,最终形成滑步。而且相位有时无法学习。

对这种网络提供一个相位作为额外输入能够明显的提升生成效果,但是并没有完全移除滑步现象。

自动回归高斯过程:高斯过程在自动回归问题上的应用已经取得了一些成功,接下来我们比较我们的方法和两种GP结构。

首先,我们用给定相位作为额外输入的GP来实现从x到y的回归,这和高斯过程动态模型相似。如果你把输入控制参数作为隐变量,在这种情况下它是手动调整的而不是自动学习。由于避免GP的过拟合比较困难,这个系统并不稳定。此外,GP不能适应各种复杂环境,因为内存的损耗是呈平方增长的而计算损耗是指数增长。因此我们只能在平面检测这个系统,并且训练样本限制在三千。然后在数据较大时它仍有糟糕的运行表现和空间占用。

接下来,我们为十个不同的位置建立了几个独立的GP,选取最接近的两个在运行和插入结果时进行回归。实际上它能达到和PFNN相似的结果,但我们发现回归的质量和内存以及运行表现都比我们糟糕得多,因为它不能应付这么多数据。

表现:我们比较了不同方法的一些表现,包括内存占用和运行时间。基于GP的方法被他们的数据能力,内存占用,运行表现所限制。我们有相当不错的运行表现,但也有一个相对较高的内存占用。当使用三次CR样条插入时,他有相似的内存占用但较长的运行时间。我们的方法的一个缺点时它比别的算法要求更长的运行时间。

地形适应:在这个过程中,我们从一个平面开始,并且使用网格编辑技术来重解地面从而和脚步的位置接触。依靠这种方法生成的地形更加平滑。由于过度拟合,这个系统可能会产生奇怪的地形当角色和环境碰撞时。

反应:我们评估了我们方法的反应能力。我们预设了几条路径并且引导角色跟随路径运动。然后比较理想的轨迹和角色运动的实际轨迹的不同,通过增加变量tao,角色的表现能在极小的运动质量损耗下被提高。

9 讨论

在这个部分,我们首先讨论了神经网络的结构,系统的输入输出参数,最终讨论我们系统的局限性。

网络结构:我们的系统能够用时间序列的方法生成真实的动作,而不会有不稳定等经常出现在自动回归模型中的问题。通过将相位设置成神经网络权重的全局参数,我们能避免混合不同相位的动作,导致“dying out”。这也保证了在训练和运行时相位的作用,因此它的作用不容易被稀释掉,就像别的将相位作为额外输入参数的网络结构一样。

我们的网络由一个输入层,一个输出层和两个包含512个隐藏单元的隐藏层组成。这是为了让网络足够简单并且能保证理想的动作能很容易计算出。我们发现目前的网络结构是计算效率和动作丰富度的很好的折衷。

我们只将PFNN用于周期动作时,但它也能被用到非周期的动作,通过使用非周期性的相位函数。在非周期数据中相位能在动作开始时设定成0,在一半时设定为0.5,在最后设定为1。如果用非周期相位函数和控制参数,这个PFNN能被用来其余任务,比如拳击和踢打。

概念上来说,我们的系统在训练每个相位时和单个网络相似。这也是我们在早期研究时所作的尝试,但在这么做时,每个网络由于随机的初始权重和各种因素,每个网络learned a slightly different regression。因此会有连接周期的不自然,动作也会看起来僵硬,会有明显的“缝合”的感觉。PFNN提供了一个简明的方法来实现相似的效果却没有上述问题。

实时角色控制中的控制参数:我们系统被专门设计用来实时角色控制:为了这样的目的,我们使用了和Motion Matching相似的输入参数。未来轨迹由用户输入进行预测,这种输入通过取样轨迹下的地形高度得到。使用过去和未来位置,方向和几何的窗口减少歧义存在的可能,并且产生更高质量的动作。应对别的任务时也可以添加相应的输入参数,比如动作的风格。

其余可能的参数:其他潜在的参数化。深度学习已经发现可以使用不是以这种方式手工制作的输入参数化,而是使用更多的神经网络层来执行抽象。比如,针对我们的目标,我们可以使用一个周围地形的深度或者RGB图像作为输入,使用卷积层来抽象这个输入。这是一个有趣的方法,并且有可能产生一个很好的思路,在动作受限制且地面细节需要平衡的时候。在我们的研究的早期阶段,我们测试了一个相似的方法,但是发现了一些问题。首先使用CNN需要大量的训练数据而角色不能与图片边缘的地形交互,这意味着我们需要大量的不同的图片来防止这些位置的过拟合。我们也发现在使用卷积层或者更复杂的神经网络来抽象化输入时,处理时间会增加,所以它可能不适合实时应用。

局限性和未来工作:为了实现实时的表现,我们只取样了沿着轨迹的几个点。这也导致系统失去高分辨率细节,比如尖锐的小障碍。一个简单的解决方式是增加一个层用来控制当前系统对标记的障碍作出回应。

像大多数方法一样,我们的系统不能处理过于复杂的和环境的交互,尤其在包括明确的手部动作比如爬墙或者和屏幕上其他物体交互的情况。通过标记手部接触和在手部应用IK可以部分解决这个问题。

PFNN训练相对较慢,因为小批量的每个元素产生不同的权重,这意味着训练时的计算要比平时损耗大。PFNN只需要几个小时的训练就能生成不错的结果,但是为每个新数据训练30小时不太可能。由于这个原因,我们希望能够加快PFNN的训练速度。

另一个未来的工作方向是可以把我们的架构用在基于物理的运动上。比如,学习一个非线性版本的相位索引的反馈模型。这样一个系统可以允许角色去稳定的在不同条件的地形上运动。

最后,也可以应用我们的技术在别的模型,比如说视频数据,心跳图像。用一个周期模型可以是的学习过程更高效。

10 结论

我们提出了一个新的学习框架,命名为相位神经网络,这适用于生成周期动作比如人类运动。我们也设计了输入和输出参数,为了在和用户交互的复杂环境中进行实时的数据引导的角色控制。它不仅结构稳定,还可以学习大型的高维度数据集,因为相位函数在产生不同的网络结构时总是平滑的。我们也提出了一个框架来生成额外数据,用于训练PFNN,即人类动作和环境匹配时。训练完成后我们的系统会很快速,只需要占用一点内存,并且会产生高质量的动作,且没有别的方法中出现的失真。

11 参考文献

---------------------------------------------------为什么翻译一篇文章还这么累  -_-||---------要狗带了------

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/468838
推荐阅读
相关标签
  

闽ICP备14008679号