我们提出了一种实时角色控制机制,使用一种新的神经网络结构,称为相位功能神经网络。在这个网络结构中,权值是通过一个使用相位作为输入的循环函数来计算的。除了相位,我们的系统将用户控制,角色的先前状态、场景的几何形状作为输入,并自动产生高质量的运动,以实现所需的用户控制。整个网络是在一个大型数据集上以端到端的方式进行训练的,该数据集由行走、跑步、跳跃和攀爬等运动组成,这些运动适合虚拟环境。因此,我们的系统可以自动产生运动,使角色适应不同的几何环境,如在崎岖的地形上行走和奔跑,爬过大的岩石,跳过障碍物,以及蹲在低低的天花板下。我们的网络体系结构比时间序列自回归模型如lstm产生更高质量的结果,因为它明确地处理与相位相关的运动的潜在变量。一旦经过训练过,我们的系统也非常快速和紧凑,只需要几毫秒的执行时间和几兆字节的内存,即使是在千兆字节的运动数据上进行训练。我们的工作最适合用于控制交互式场景中的角色,如电脑游戏和虚拟现实系统。

1 INTRODUCTION

为虚拟角色生产实时数据驱动的控制器一直是一项具有挑战性的任务,即使有大量现成的高质量的运动捕获数据。这部分是因为角色控制器有许多困难的要求,必须满足这些要求才能发挥作用——它们必须能够从大量数据中学习,不需要太多的手动数据预处理,并且必须在运行时以极低的内存需求极快地执行。虽然在这一领域已经取得了许多进展,但几乎所有现有的办法都难以解决其中一项或多项要求,从而减缓了它们的普遍采用。

当环境由不平坦的地形和较大的障碍组成,需要角色按照用户的指令进行各种行走、攀爬、跳跃或回避动作时,这个问题就更具挑战性了。在这种情况下,需要一个可以从大量的高维运动数据中学习的框架,因为可以存在大量不同的运动轨迹和相应的几何形状的组合。

深度学习和神经网络的最新发展显示出了解决这些问题的一些希望。神经网络能够从非常大、高维的数据集学习,一旦训练,有一个低的内存占用和快速的执行时间。现在的问题仍然是神经网络如何最好地应用于运动数据,从而以最少的数据处理产生高质量的实时输出。

此前,使用卷积模型,如cnn[霍尔登等人2016,2015],自回归模型,如rbm[泰勒和辛顿2009],和rnn[Fragkiadaki等人2015],已经取得了一些成功。CNN模型在每一层上执行时间局部变换,逐步变换输入信号,直到产生所需的输出信号。这种结构自然适用于离线、并行式设置,即一次给出整个输入,一次生成整个输出。在某些情况下,如电子游戏,这是不可取的,因为未来的输入可能会受到玩家的行为的影响。RNN和其他自回归模型[Fragkiadaki et al.2015;Taylor and Hinton 2009]更适合于视频游戏和在线运动生成,因为它们只需要一帧未来的输入,但它们在生成长序列运动时往往会失败,因为预测中的错误会反馈到输入中并累积。这样,当不同相位的帧错误地混合在一起时,自回归模型往往会“消失”,或者当高频噪声反馈到系统中时,自回归模型会“爆炸”[Fragkidaki等人,2015年]。如果没有强大的规范化形式,例如将输出与训练数据中最近的已知数据点混合[Lee et al.2010]——这一过程严重影响了执行时间和内存使用的可伸缩性,则很难避免此类artifacts。

我们提出了一种新的神经网络结构,我们称之为相位功能神经网络(PFNN)。PFNN的工作原理是在每一帧上生成一个回归网络的权值,作为相位的函数——一个表示运动周期时间的变量。一旦生成,网络权值被用于执行从该帧的控制参数到字符的相应姿态的回归。PFNN的设计避免了显式地混合来自几个阶段的数据——而是构建了一个回归函数,该回归函数相对于该阶段随时间平稳演化。与CNN模型不同,这种网络结构适用于在线、实时的运动生成,与RNN模型不同,我们发现它非常稳定,能够在复杂的环境中连续生成高质量的运动,并具有表达性的用户交互。PFNN快速而紧凑,只需要几毫秒的执行时间和几兆字节的内存,即使是在千兆字节的动作捕捉数据上进行训练。这种紧凑性还可以通过预先计算相位函数来换取运行时速度,允许在内存和计算资源之间进行定制的权衡。

动态地改变网络权值作为相位的函数,而不是像在标准神经网络中那样保持其静态,这显著地提高了回归的表达能力,同时保持了紧凑的结构。这使得它能够从一个大的、高维的数据集中学习,其中环境几何和人体运动数据是耦合的。一旦训练完成,该系统可以为角色在崎岖不平的地形上移动、跳跃和躲避障碍物自动生成适当且富有表现力的运动——无论是在自然环境还是城市环境中(见图1和图9)。在准备训练集时,我们还提供了一个过程,将运动捕捉数据拟合到从视频游戏环境中提取的人工高度图的大型数据库中。

综上所述,本文的贡献如下:

  • 一种新的实时运动合成框架,我们称之为相位功能神经网络(PFNN),它可以使用大量的运动数据来执行字符控制,包括与环境的交互,以及

  • 通过将运动数据拟合到从虚拟环境中提取的几何图形中,为PFNN准备训练数据的过程。

2 RELATED WORK

在本节中,我们首先回顾生成运动的数据驱动方法。接下来,我们将回顾一些综合与环境相互作用的角色运动的方法。最后,我们回顾了基于神经网络的方法,这些方法关注于将潜在变量映射到用户感兴趣的一些参数上。

数据驱动的运动合成
数据驱动运动合成是一个吸引了计算机动画和机器学习领域研究人员的课题。基于线性基、基于核的技术和神经网络的框架都已成功地应用于这一目的。

基于线性基的技术,如主成分分析(PCA),被广泛用于降低运动数据的维数,以及从较少的输入量预测全身运动[Howe等人,1999年;Safonova等人,2004年]。由于全局PCA可能在表示低维潜在空间中各种不同动作中存在问题,因此采用局部PCA处理任意类型的运动[Chai and Hodgins 2005;Tautges et al.2011]。Chai和Hodgins[2005]将局部PCA应用于合成具有稀疏标记集的全身运动。Tautges等人[2011]提出了类似的局部结构,用于从稀疏惯性传感器预测全身运动。这种结构需要大量的数据预处理和计算,用于训练(即运动分割、分类和对齐)和运行时(即最近邻搜索)。

提出了基于核的方法来克服线性方法的局限性,并考虑了数据的非线性。径向基函数(RBF)和高斯过程(GP)是混合不同类型运动的常用方法[Mukai 2011;Mukai和Kuriyama 2005;Park等人2002;Rose等人1998]。高斯过程潜变量模型(GPLVM)用于计算数据的低维潜空间,以帮助解决逆运动学问题的冗余[Grochow et al.2004]或提高规划运动的效率[Levine et al.2012]。Wang等人[2008]提出了一个高斯过程动力学模型(GPDM),该模型学习潜在空间中的动力学,并使用另一个GP将运动投影到整个空间。基于核的方法在存储和反转协方差矩阵时会产生很高的内存开销,协方差矩阵分别按数据点数量的平方和立方顺序进行缩放。为了克服这个问题,提出了限制插值样本数量的局部GP方法[Rasmussen and Ghahramani 2002],但需要k−最近邻搜索(nearest neighbor search),当与高维数据(如人体运动)一起使用时,内存使用量大,预计算和运行时成本高。

利用神经网络进行数据驱动的运动合成,由于其高度的可扩展性和运行效率,吸引了计算机动画和机器学习领域的研究人员。Taylor等人[2009]建议使用条件受限Boltzmann机器(cRBM)来预测运动期间身体的下一个姿势。Fragkidaki等人[2015]提出了一种编码器-递归-解码器(ERD)网络,该网络将LSTM模型应用于
预测身体下一个姿势的潜在空间。这些方法可以归类为自回归模型,其中角色的姿势是基于角色在运动期间的先前姿势预测的。自回归模型适用于实时应用,例如电脑游戏,因为它们会在每一帧更新角色的姿势。cRBM和RNN模型比经典的线性模型[Xia等人2015]或基于内核的模型[Wang等人2008]更具可扩展性和运行效率。尽管有这些优点,但它们也存在漂移问题,因为噪音和不适,运动逐渐脱离运动流形,最终收敛到平均姿势。Holden等人[2016]在时域上应用CNN框架,将低维用户信号映射到全身运动。这是一个离线框架,要求在合成运动之前指定沿时间线的完全控制信号。本文中我们的框架是一种时间序列方法,可以在给定用户输入和角色先前状态的情况下预测角色的姿势。

与环境的交互作用
虚拟环境中的自动角色控制器允许角色避开障碍物并适应地形,对于计算机游戏等实时应用非常有用:这些方法可分为基于优化和形状匹配的方法。

方法基于优化[Lau和Kuffner 2005;Safonova和Hodgins 2007],基于抽样的方法[Coros等人2008;Liu等人2010],最大后验概率(MAP)估计[Chai和Hodgins 2007;Min和Chai 2012],强化学习技术[Lee and Lee 2004;Lee et al.2010;Levine et al.2012;Lo and Zwicker 2008;Peng et al.2016],根据角色的当前状态(包括姿势)及其与环境几何结构的关系,预测角色的动作。它们需要成本/价值函数来评估不同情况下的每个行动。虽然这些方法可以生成真实的运动,但在某些情况下,计算成本与动作数量成指数关系,因此不具有很强的可伸缩性。更重要的是,当使用运动学数据作为表示时,有必要进行k−在样本中进行最近邻搜索[Clavet 2016;Lee et al.2010],将运动拉到运动流形上。这可能是可伸缩性方面的一个限制因素,尤其是在高维空间中。Levine等人[2012]通过在GPLVM计算的潜在空间中进行强化学习来解决这一问题,但他们要求将运动分类,并限制在每个类别中进行搜索。Peng等人[2016]以一种能够处理高维状态空间的方式,在基于物理的动画的控制空间中应用深度强化学习。这是一个非常有前途的研究方向,但该系统仅在相对简单的2D环境中进行测试。我们的目标是在具有复杂几何环境的完整三维运动学空间中控制角色,而以前基于学习的方法并不十分成功。

另一种在给定环境中控制角色的方法是对环境进行几何分析,并使姿势或运动适应新的几何体。Lee等人[2006]进行刚性形状匹配,以适应接触丰富的运动,如坐在椅子上或躺在不同的几何形状上。Grabner等人[2011]进行暴力搜索,以发现场景几何体中角色可以执行特定动作的位置。Gupta等人[2011]制作了一本书,以各种姿势占据人物,并将其融入由照片构建的虚拟曼哈顿世界。Kim等人[2014]提出利用物体的各种几何特征,将角色姿势与不同的几何体相匹配。Kang等人[2014]分析身体的开放体积和身体舒适度,以预测角色在每个姿势下的静态位置。Savva等人[2016]使用Microsoft Kinect捕捉人类与物体的交互,并生成可用于合成新场景的统计模型。这些方法只处理静态姿势,不处理高度动态的交互。为了制作动画,必须考虑运动的平滑度和动作的连接。Kapadia等人[2016]估计了动态运动期间身体与环境之间的接触,并利用它们将人体运动融入虚拟环境。他们的方法需要提前对几何体进行深入分析,这不允许在角色可能首次面对的新环境中进行实时交互。我们的技术基于几何体与运动的回归,因此可以克服以前方法的这些局限性。

将用户参数映射到潜在变量
在许多情况下,人们更喜欢将场景参数(如图像中的视点或照明条件)映射到潜在变量,以便用户在合成过程中对其进行控制。Kulkarni等人[2015]提出了一种将人脸图像的视点和照明条件映射到可变自动编码器的隐藏单元的技术。Memisavic[2013]提出了一种乘法网络,其中潜变量(视点)直接参数化神经网络的权重。当潜在参数对整个输出具有全局影响时,这种网络尤其有效。我们发现这种架构适用于移动,并将相位用作所有类型移动之间的通用参数,因此我们的系统采用了类似的概念。

3 SYSTEM OVERVIEW

PFNN的可视化图如图2所示:它是一个神经网络结构(用Φ表示),其中权值由相位p的周期函数计算,称为相位函数(用Θ表示)。网络的输入x包括角色的先前姿态和用户控制,而输出y包括阶段中的变化、角色的当前姿态以及稍后描述的一些附加参数。

我们的系统分为三个阶段:预处理阶段、训练阶段和运行时阶段。在预处理阶段,我们首先准备训练数据,并自动提取稍后由用户提供的控制参数(见第4节)。此过程包括使用单独的高度图数据库将地形数据拟合到捕获的运动数据(参见第4.2节)。在训练阶段,PFNN使用这些数据进行训练,从而产生给定控制参数的每一帧中角色的运动(PFNN的设置及其训练见第5节)。在运行时阶段,从用户的输入和环境中收集到PFNN的输入参数,并输入到系统中,以确定字符的运动(见第6节)。

4 DATA ACQUISITION & PROCESSING 数据采集与处理

在本节中,我们首先描述我们如何进行运动捕捉和提取用于训练系统的控制参数(见第4.1节)。然后,我们将描述如何将地形与运动捕捉数据相匹配(见第4.2节)。最后,我们总结了系统的参数化问题(见第4.3节)。

4.1运动捕捉和控制参数

一旦运动数据被捕获,控制参数,包括运动的相位、步态的语义标签、身体的轨迹和地形沿轨迹的高度信息,将被计算或手动标记。下面将描述这些过程。

Motion Capture动态捕捉
我们从捕捉各种步态和面对方向的长序列运动开始。我们还将障碍物、坡道和平台放置在capture studio中,并捕捉进一步的运动——以各种速度和不同方式在障碍物上行走、慢跑和跑步。此外,我们还捕捉到了其他种类的运动,比如在不同高度和不同步幅下蹲下和跳跃。完成后,我们将以每秒60帧的速度捕获约1小时的原始运动捕获数据,这构成了约1.5 GB的数据。使用与CMU运动捕捉数据的BVH版本相同的铰接式身体模型,该模型具有30个旋转关节,并在臀部下方的地面上添加了额外的根变换。

Phase Labelling 相位标记
接下来,必须在数据中标记相位,因为这将是PFNN的输入参数。这可以通过半自动程序执行。首先,通过计算脚跟和脚趾关节的速度大小,并观察这些速度何时低于某个阈值,可以自动标记足部接触时间[Lee等人,2002]。由于这种启发式方法偶尔会失败,因此会手动检查结果并手动更正。一旦获得这些接触时间,可以通过观察右脚与地面接触的帧并指定0的相位,观察左脚与地面接触的帧并指定π的相位来自动计算相位,观察下一次右脚接触发生的时间,并指定一个2π的相位。然后对中间帧进行插值。对于站立运动,一些最小循环持续时间(∼使用0.25s),允许相位连续循环。

Gait Labels 步态标签
我们还提供了以二进制向量表示的系统运动步态的语义标签。这样做有两个原因。首先,它们提供了一种消除歧义的方法,因为快走和慢跑通常具有相同的轨迹,其次,游戏设计师或用户经常希望在特定场景中观察特定运动(行走、慢跑、跳跃等)。这一过程是手动执行的,但可以通过确保在捕捉过程中演员不会频繁改变步态类型,而是只包含单一步态类型的长时间捕捉来大大简化。

Trajectory and Terrain Height 轨迹和地形高度
通过将髋关节中心投影到地面上,提取角色的根变换。通过平均髋关节之间的矢量和肩关节之间的矢量,并取向上方向的叉积来计算朝向。随着时间的推移,该方向会变得平滑,以消除任何小的高频运动。

一旦提取了根变换的轨迹,并将地形拟合到运动中(参见第4.2节),将在轨迹下方的位置以及轨迹两侧垂直于面对方向和方向的位置计算地形高度∼距中心点25cm(见图5)。有关该过程的更多细节,请参见第4.3节。

最后,一旦这个过程完成,我们将创建所有捕获的镜像版本,以使数据量增加一倍。

4.2 Terrain Fitting

为了生成一个系统,使角色在运行时自动适应环境的几何结构,我们需要准备训练数据,其中包括角色在不同地形上的移动。由于在运动捕捉工作室中同时捕捉几何体和运动是困难的,因此我们提供了一个离线过程,该过程将从视频游戏或其他虚拟环境中收集的高度图数据库与单独捕捉的运动数据相匹配。一旦安装,这些地形允许我们使用与地形几何有关的参数作为控制系统的输入。

我们的高度地图数据库是从使用源引擎构建的几个场景中提取的。我们从上面追踪光线到这些场景中,以每英寸一个像素的分辨率以高度图的形式捕捉完整的几何信息。从这些高度图中,我们随机抽取了大约20000块3x3米区域的方向和位置。这些补片用于装配过程。

装配过程分两个阶段进行。首先,对于运动数据中的每个运动周期,我们通过蛮力搜索找到数据库中的10个最佳拟合面片——尝试拟合每个面片,并选择使给定误差函数最小化的面片。其次,我们使用一种简单的径向基函数(RBF)网格编辑技术来细化结果,编辑地形,使角色的脚在接触时准确地落在地面上。

现在让我们描述一下装配过程的细节。对于数据库中的每个运动周期,给定左/右脚跟和脚趾关节指数 J ∈ { l h r h l t r t } J\in\{ lh\ rh\ lt\ rt \} J∈{lh rh lt rt}我们首先计算每一帧i,它们的高度 f i l h , f i r h , f i l t , f i r t f_i^{lh},f_i^{rh},f_i^{lt},f_i^{rt} filh​,firh​,filt​,firt​, 和联系标签(contact labels) c i l h , c i r h , c i l t , c i r t c_i^{lh},c_i^{rh},c_i^{lt},c_i^{rt} cilh​,cirh​,cilt​,cirt​(一个二进制变量,指示是否认为接头与地板接触)。我们找到这些关节与地板接触的所有时间的平均位置,并将数据库中的每个面片置于该位置的中心。对于每个斑块,我们然后计算每个关节下的地形高度 h i l h , h i r h , h i l t , h i r t h_i^{lh},h_i^{rh},h_i^{lt},h_i^{rt} hilh​,hirh​,hilt​,hirt​. 由此得出的拟合误差如下:

当脚接触地面时, E d o w n Edown Edown确保地形的高度与脚的高度相匹配,

E u p Eup Eup确保脚在不接触地面时始终高于地面(防止交叉),

E o v e r Eover Eover仅在角色跳跃时激活(由变量 g i j u m p g_i^{jump} gijump​指示),确保地形高度在脚以下的距离不超过l(在我们的例子中,l设置为∼30厘米)。这确保了大跳跃适用于障碍物较大的地形,而小跳跃适用于障碍物较小的地形。

一旦我们计算了数据库中每个面片的拟合误差 E f i t Efit Efit,我们选择拟合误差最小的10个面片,并执行拟合过程的第二阶段。在这一阶段,我们编辑高度图,使脚在接触时接触地面。为此,我们只需使用Botch和Kobbelt[2005]工作的简化版本对高度图进行变形。我们使用线性核将2D RBF应用于地形拟合的残差。虽然我们使用这种方法,但任何其他网格编辑技术也应该是合适的,因为几乎所有情况下所需的编辑都非常小。

在运行单线程的Intel i7-6700 3.4GHz CPU上,整个运动数据库的总数据处理和拟合时间约为三小时。图4显示了该拟合过程的结果。

4.3 System Input/Output Parameters

在本节中,我们将介绍系统的输入/输出参数。对于每一帧i,我们的系统需要相位p来计算网络权重。一旦计算出这些系统,就需要神经网络输入席,包括用户控制参数、前一帧中字符的状态和环境参数。由此计算yi,其中包括当前帧中角色的状态、相位变化、根变换的移动、下一帧中轨迹的预测,以及用于IK后处理的脚关节的接触标签。

现在让我们来描述输入参数xi的细节。我们的参数化类似于运动匹配[Clavet 2016]中使用的参数化,由两部分组成。对于角色的状态,我们采用角色根变换的角色关节局部位置和速度。对于用户控件,我们查看一个以帧i为中心的局部窗口,并每10帧检查一次周围帧,在我们的例子中,每10帧产生t=12个采样的周围帧,覆盖过去1秒的运动和未来0.9秒的运动。从每个周围的采样帧中,我们提取了一些特征,包括第i帧处角色根变换的角色轨迹位置和轨迹方向,角色的步态表示为二进制向量,以及弹道下方以及距弹道左右25厘米的另外两个点的地形高度。有关此参数化的可视化演示,请参见图5。

单个帧 i i i的输入控制变量的全参数化由一个向量 x i = { t i p t i d t i h t i g j i − 1 p j i − 1 v } ∈ R n xi= \{ t_i^p t_i^d t_i^h t_i^g j_{i-1}^p j_{i-1}^v\} \in R^n xi={tip​tid​tih​tig​ji−1p​ji−1v​}∈Rn组成, t i p ∈ R 2 t t_i^p\in R^{2t} tip​∈R2t是二维水平面上轨迹位置相对于帧 i i i的轨迹位置的下采样窗口, t i d ∈ R 2 t t_i^d\in R^{2t} tid​∈R2t是二维水平平面上相对于帧i的轨迹方向, t i h ∈ R 3 t t_i^h\in R^{3t} tih​∈R3t是三个左右/中心样本点相对于第一帧的轨迹高度, t i g ∈ R 5 t t_i^g\in R^{5t} tig​∈R5t是表示特征和其他信息的步态的轨迹语义变量(表示为一个5D二进制向量), j i p ∈ R 3 j j_i^p\in R^{3j} jip​∈R3j是前一框架的局部关节位置, j i v ∈ R 3 j j_i^v\in R^{3j} jiv​∈R3j是前一帧的局部关节速度,其中,j是关节的数量(在我们的例子中是31)。在这项工作中,当角色处于以下情况下时,附加的语义变量 t i g t_i^g tig​的各个组成部分都是活跃的:1.站,2.行走,3.慢跑,4.跳跃,5.蹲伏(也用于表示天花板高度)。

一帧 i i i的输出变量的完整参数化由一个向量 y i = { t i + 1 p t i + 1 d j i p j i v j i a r i x r i a p i c i } ∈ R m yi=\{ t_{i+1}^p t_{i+1}^d j_i^p j_i^vj_i^ar_i^xr_i^ap_ic_i\} \in R^m yi={ti+1p​ti+1d​jip​jiv​jia​rix​ria​pi​ci​}∈Rm组成。 t i + 1 p ∈ R 2 t t_{i+1}^p \in R^{2t} ti+1p​∈R2t是在下一帧中预测的轨迹位置, t i + 1 d ∈ R 2 t t_{i+1}^d \in R^{2t} ti+1d​∈R2t是在下一帧中预测的轨迹方向, j i p ∈ R 3 j j_i^p \in R^{3j} jip​∈R3j是角色root变换的局部关节位置, j i v ∈ R 3 j j_i^v \in R^{3j} jiv​∈R3j是角色root变换的局部关节速度, j i a ∈ R 3 j j_i^a \in R^{3j} jia​∈R3j是使用指数映射[Grassia1998]表示的角色root变换的局部关节角度, r i x ∈ R r_i^x \in R rix​∈R是root变换的,相对于正向方向的平移x速度, r i z ∈ R r_i^z \in R riz​∈R是root变换的,相对于正向方向的平移z速度, r i a ∈ R r_i^a \in R ria​∈R是root变换的围绕向上方向的角速度, p i ∈ R p_i \in R pi​∈R是相位变化, c i ∈ R 4 c_i \in R^4 ci​∈R4是脚接触标签(二进制变量,表示每个脚跟和脚趾关节是否与地板接触)。

5 PHASE-FUNCTIONED NEURAL NETWORK 相功能神经网络

在本节中,我们将讨论相函数神经网络(PFNN)的构造和训练。PFNN(见图2)是一种神经网络,其权值根据相位值周期性变化。我们将生成网络权重的函数称为相位函数,由于第5.2节所述的原因,在本研究中,相位函数被定义为三次Catmull-Rom样条。首先,我们描述所选的神经网络结构(见第5.1节),然后是用于生成该网络结构权重的相位函数(见第5.2节)。最后,我们将介绍培训程序(见第5.3节)。

5.1 Neural Network Structure

5.2 Phase Function

在PFNN中,网络权值α由一个单独的相位函数计算,该函数以相位p和参数β作为输入,如下:α=Θ(p;β)。从理论上讲,Θ有很多潜在的选择。例如,Θ可以是另一个神经网络,或高斯过程,但在这项工作中,我们选择Θ是一个三次交叉-罗姆样条。

使用三次Catmull-Rom样条曲线有几个原因——通过让起始点和结束点控制点相同,参数的数量与控制点的数量成正比,并且它相对于输入参数p变化平稳。选择一个三次卡特穆尔-罗姆样条来表示相位函数,意味着每个控制点αk表示神经网络α的一定权值配置,而函数Θ在这些神经网络权值配置之间进行平滑插值。另一种想象Θ的方法是在神经网络的(高维)权值空间中作为一个一维循环流形。然后通过相位对流形进行参数化,从这个意义上说,训练网络就是在神经网络权重空间中找到一个合适的循环流形,从而成功地从输入参数回归到输出参数。

我们发现一个只有四个控制点的循环样条就足以表示该系统所要求的回归。给定四个控制点(由神经网络权值配置组成)β={α0α1α2α3},对任意相位p产生网络权值的三次Θ-Rom样条函数Θ可以定义如下:

5.3 Training

对于每一帧i,变量xi、yi和相位pi被堆叠成矩阵X=[x0x1…],Y=[y0y1…]和P=[p0p1…]。均值xµyµ和标准差xσyσ用于规范化的数据,然后另外按权重xwyw给每个维度的相对重要性:在我们的实验中最好的结果是通过扩展所有输入变量与关节的值0.1来缩小他们的重要性。这增加了回归中轨迹的影响,导致了一个更敏感的特征。输入中包含的二进制变量像往常一样规范化,不接受任何特殊处理。在地形拟合完成并为10个不同的相关斑块构建最终参数化后,我们得到了一个包含约400万数据点的最终数据集。

为了训练网络,我们必须确保对于一组给定的控制参数X和相位参数P,我们可以产生相应的输出变量Y作为神经网络Φ的函数。因此,训练是一个关于相位函数参数β={α0α1α2α3}和以下成本函数的优化问题:

在这个方程中,第一项表示回归结果的均方误差,而第二项表示一个小的正则化,以确保权值不会太大。它还对权重引入了少量的稀疏性。该项由常数γ控制,在本工作中被设置为0.01。

我们使用随机梯度下降算法Adam[Kingma and Ba 2014]和Theano[Bergstra et al.2010]中实现的模型,该模型自动计算成本函数相对于β的导数。dropout[Srivastava et al.2014]的保留概率为0.7,该模型以32号的小批量进行训练。在NVIDIA GeForce GTX 660 GPU上进行20个阶段的完整培训,大约需要30小时。

6 RUNTIME

在运行期间,PFNN必须在每一帧上提供相位p和神经网络输入x。相位p可以使用计算出的相位pU的变化来存储并随时间递增,并调制到在0≤p≤2π范围内的循环。对于神经网络输入x,与联合位置和速度相关的变量以自回归的方式使用,使用来自前一帧的计算结果作为到下一帧的输入。我们的系统还使用过去/未来的轨迹tptd作为输入x(见4.3节):与过去相关的元素被简单地记录下来,而对未来的元素需要一些关注,我们接下来将讨论。

与未来轨迹相关的输入
当为PFNN准备运行时输入x时,通过将游戏板控制棒估计的轨迹与PFNN在前一帧中生成的轨迹混合,计算出 t p t d t^pt^d tptd轨迹的未来元素。
在运动匹配过程中,Clavet[2016]使用棍子的位置来描述所需的速度和角色的面向方向。在我们的方法中,这个期望的速度和面向方向然后在未来的每一帧与PFNN在前一帧 t i + 1 p t i + 1 d t^p_{i+1}t^d_{i+1} ti+1p​ti+1d​中预测的速度和面向方向混合。为此,我们使用下面指定的混合函数:

其中t的范围从0到1,随着轨迹的深入,τ表示控制角色响应性的额外偏差。在本文所示的结果我们设置偏见混合速度τv0.5,导致混合函数偏向于PFNN预测速度,和偏见混合面向方向τd2.0,导致偏向面向游戏板的方向。这就产生了一个看起来自然但保持反应的角色,因为大多数感知反应来自于角色对预期方向的变化做出快速反应。

在未来的轨迹中还包含了与运动tд的语义信息相关的变量。这包括角色的期望步态(以二进制向量表示),以及其他信息,如天花板的高度,以及角色是否需要跳跃而不是攀爬。这些都是通过用户交互设置(例如,我们使用游戏板的右肩按钮来指示步态应切换到慢跑),或通过针对环境元素检查轨迹的位置(例如,当轨迹经过某些区域时,指示跳跃运动的变量被激活)。

一旦找到了与未来轨迹相关的变量,最后一步是将轨迹位置垂直投影到场景几何图形上,并提取高度来准备th。这构成了PFNN所需的所有输入变量,此时就可以计算出输出y。

给定输出y,最终根据预测的关节位置和角度jp,ja计算出关节变换。然后使用简单的双关节IK和接触标签c编辑这些关节变换,以避免脚滑动。使用预测的根平移和旋转速度rx、rz、ra更新根变换位置和旋转。这就完成了单个帧的运行时过程。

Precomputation of the Phase Function
一旦训练,PFNN非常紧凑,需要∼10兆字节来存储变量β。然而,相位函数Θ可能需要几乎一毫秒的时间来计算,这在某些情况下可能太慢。因为相函数Θ是一个一维函数在一个固定域0≤p≤2π可以避免计算Θ在运行时预计算Θ离线的固定间隔范围0≤p≤2π和插值这个预计算的结果。

有几种预算选项可用,在速度和内存消耗之间提供了不同的权衡(见表1)。常数方法是预先计算沿相空间的n=50个位置的Θ,并在运行时简单地使用最近的预先计算的相位位置的神经网络权值。这增加了n/4倍的内存消耗,但有效地完全消除了Θ的计算。另外,可以取n=10个样本,并对这些样本进行分段线性插值。这种方法需要更少的内存,可能更准确,但分段线性插值也需要更多的计算时间。或者,全三次样条可以在运行时计算。

7 RESULTS

在本节中,我们将展示我们的方法在许多不同情况下的结果。关于更详细的演示,读者请参考补充材料。所有的结果都使用相位函数的常数近似来表示。

在图6中,我们展示了我们的方法应用于一个导航平面环境的角色,执行许多急转弯、速度变化和面对方向。我们的系统保持响应,并很好地适应用户输入,产生自然的、高质量的运动。

在图1中,我们展示了我们的方法应用于一个角色在粗糙的地形上导航的结果。我们的角色在许多具有挑战性的情况下产生自然的动作,在需要的地方跳跃、攀爬和跳跃。

在图7中,我们展示了我们在天花板较低的环境中应用的方法,因此角色必须蹲下才能继续。通过使用环境或游戏垫调整 t g t^g tg中与天花板高度相关的语义变量,角色将蹲在不同的高度。

有时,游戏设计师希望角色以不同的方式穿越环境。通过调整 t g t^g tg中不同的语义变量,我们可以让角色跳过障碍,而不是爬过障碍,如图8所示。

通过将未来的飞行轨迹与墙壁或其他不可穿越的物体进行碰撞,我们可以让角色减速并避开障碍。或者,这个角色可以被强制在特定的环境中创造特定的运动,如在梁上的平衡,如图9所示的城市环境所示。

8 EVALUATION

在本节中,我们将我们的方法与许多其他技术进行比较,包括相位不作为输入的标准神经网络(见图10(a))、相位作为附加输入变量的标准神经网络(见图10(b))、编码器-循环解码器(ERD)网络[Fragkidaki等人2015](见图10(c)),(d) ),一种在数据子集上训练的自回归高斯过程(见图10(e))和一种结构类似的高斯过程方法,该方法为相空间上的10个不同位置建立单独的回归器(见图10(f))。所有神经网络方法都经过训练,直到收敛,并调整每个网络中的权值数量,以使内存使用量与我们的方法相同,从而提供更公平的比较。

我们表明,这些模型中的每一个都不能产生在我们的技术中看到的高质量运动,另外一些基本问题使它们难以在运动数据上有效地训练和使用。我们还包括了详细的训练时间、运行时成本和内存使用的性能比较。然后,我们评估我们的数据驱动的地形拟合模型——将结果与一个简单的程序模型,适合一个基本表面的足迹位置。最后,我们通过调整未来轨迹的混合方法和测量这些变化如何影响结果来评估我们的系统的响应性和跟踪能力。

Standard Neural Network.标准神经网络
当使用不明确提供相位作为输入的神经网络时(见图10,(a)),系统将混合不同相位的输入,导致不同相位的姿态被平均,字符出现浮动[Holden等人,2016]。由于我们的系统只在同一阶段混合数据,所以它不会出现这样的问题。

为了避免这种错误的混合,可以显式地将相位作为神经网络的附加输入变量(见图10,(b))。在训练过程中,该阶段的影响在某些情况下被忽略,其他变量最终主导了预测,导致运动显得僵硬和不自然(见图11和补充视频)。这种效应可以部分解释为使用辍学[斯里瓦斯tava等人2014],这是正则化的一个基本程序,其中输入节点被随机禁用,以使系统对过拟合和噪声具有鲁棒性。由于与相位相关的输入变量在退出期间经常被禁用,系统试图在可能的情况下稀释其影响,而不是错误地学习从其他输入变量中预测姿态。为了验证这一理论,我们测量了每个网络中相对于相位∥δy/δp∥变化的输出y的变化。在以相位作为附加输入的标准神经网络中,这个值相对较小(∼0.001),而在PFNN中,由于允许相位同时改变所有的网络权值,它大约大50倍(∼0.05)。虽然可以通过减少相位变量的丢失,或在输入中包含相位变量的多个副本来纠正这一点,但与我们的方法执行的全因式分解相比,这些技术提供了一个不那么优雅的解决方案和较弱的实际保证。

Encoder-Recurrent-Decoder Network.编码器-循环解码器网络
接下来,我们将我们的系统与编码器-循环解码器(ERD)网络进行比较[等人2015]——这是目前最先进的神经网络技术之一,它是RNN/LSTM网络结构的变体(见图10©)。ERD网络是通过取Φ进行中间变换为LSTM循环变换而产生的。虽然这种结构与以前版本的ERD网络并不完全相同,但其结构的性质是相同的。

由于ERD网络具有内存,即使没有直接给出相位,它也可以从可观测数据中学习到一些相位的概念,并利用它来避免输入中的歧义问题。ERD网络在运动的流形(中间层)上进行循环过程,从而显著延迟了“消失”过程开始的时间[Fragkiadaki等人,2015]。

不幸的是一些病理情况下仍然存在——例如,如果字符站静止和用户指示字符走,因为不可能观察阶段字符是静止的,ERD网络不能知道如果用户打算字符导致他们的左脚或他们的权利,导致平均两个,和一个浮动的效果出现。在这个意义上说,阶段不能在所有情况下都被学习,它是一个隐藏的潜在变量,必须像我们的方法一样独立提供。

将相位作为该网络的额外输入(见图10(d))可以显著提高生成性能,但仍然不能完全去除浮动的artefacts(见补充视频)。

Autoregressive Gaussian Processes.自回归高斯过程
高斯过程(GP)已经被应用于自回归问题,并在之前的工作中取得了一些成功[Wangetal.2008]:在这里,我们比较了我们的方法与两种基于GP的体系结构。

首先,我们使用一个GP执行回归从xy阶段作为一个额外的输入(见图10(e)):这可以被认为是类似于高斯过程动态模型(GPDM)[王etal.2008]如果你认为输入控制参数是潜在的变量,在这种情况下是手动调整,而不是自动学习。由于所提供的少量数据难以避免GP过拟合,系统变得不稳定和紧张(见补充视频)。此外,GP不能适应许多复杂的情况,因为构造成本以内存的平方顺序和计算成本的三次顺序增长。因此,我们只能测试这个系统在平面上的运动,将训练样本限制在3000个。尽管如此,它在大数据集上的运行时性能和内存成本还是很差的。

接下来,我们为沿相空间的10个不同位置构建几个独立的GPs,选择最近的两个GPs在运行时进行回归,并对结果进行插值(见图10(f))。实际上,这达到了类似于PFNN的效果,但我们发现这种回归的质量以及内存和运行时性能更糟糕,因为它不能在几乎同样多的数据上进行训练(见图12)。

Performance.
在表1中,我们比较了上面显示的各种方法的性能,包括内存使用情况和运行时。基于GP的技术受到其数据容量、内存使用量和运行时性能的限制。当使用常量近似时,我们的方法与其他基于神经网络的技术相当,但具有更高的内存使用。当使用相位函数的全三次mll-rom样条插值时,它有类似的内存使用,但运行时间更长。我们的方法的一个缺点是,它比其他方法需要更长的训练时间。所有的运行时测量都是使用一个运行单线程的Inteli7-6700 3.4GHzCPU进行的。

Terrain Fitting
在图13中,我们展示了与不同的地形拟合过程的比较。在此过程中,我们从一个平面开始,并使用第4.2节中描述的网格编辑技术来变形表面以接触足迹位置。以这种方式合成的地形是光滑的,没有多少变化。由于对这种光滑地形的过拟合,系统在运行时遇到那些有大岩石的环境时,会产生奇怪的运动。详情请参阅补充资料。

Responsiveness.
在图14中,我们展示了对我们的方法的响应性和后续能力的评估。我们创建了几个预定义的路径,并指示角色遵循它们。然后,我们测量期望的轨迹和角色的实际轨迹之间的差异(见表2)。通过增加变量τ(在第6节中描述),可以以动画质量的一个小损失为代价来提高响应性。详情请参阅补充资料。

9 DISCUSSIONS

在本节中,我们首先将讨论我们所采用的网络架构,以及系统的输入/输出参数。最后讨论了该系统的局限性。

Network Architecture
正如我们的实验所示,我们的系统可以以时间序列的方式计算真实的运动,而不会出现在自回归模型中经常出现的消亡或不稳定等问题。这是通过几个系统设计决策而实现的。通过使用相位作为神经网络权值的全局参数,我们可以避免在不同阶段的混合运动,这是众所周知的导致“消亡”效应。这也确保了在训练和运行时强烈考虑了阶段的影响,因此其影响几乎不可能被稀释和忽略,这是我们在将阶段作为其他网络结构的额外输入参数时观察到的。

我们的网络由一个输入层、一个输出层和两个隐藏层组成,其中有512个隐藏单元。这种设计的动机是希望使网络尽可能简单,以确保所需的运动可以很容易地计算为我们的实时动画的目的。我们发现当前的网络结构是计算效率和丰富的运动产生之间的一个很好的折衷。

虽然我们只演示了PFNN应用于循环运动,但通过采用非循环相位函数,它也可以很容易地应用于非循环运动。在非循环数据中,相位可以在运动开始时指定为0,在运动的中途指定为0.5,在运动结束时指定为1.0。如果使用非循环相位函数和适当的控制参数进行训练,PFNN可以很容易地用于其他任务,如击打和踢腿。

从概念上讲,我们的系统类似于为每个阶段训练单独的网络。这是我们在研究的早期迭代中尝试过的东西,但在这样做的时候,由于随机权值初始化和其他因素,每个网络学习到了一个略有不同的回归。因此,没有保留连续性或循环的性质,运动看起来很紧张,当相位循环时,有一个明显的“接缝”。PFNN提供了一种优雅的方式来实现类似的效果,但没有所述的问题。

Control Parameters for Real-time Character Control
我们的系统是专门为任意环境中的实时字符控制而设计的,可以从运动捕捉数据中学习:为此,我们使用了一个输入参数化,类似于在运动匹配中被证明有效的输入参数化[Clavet2016]。从用户的输入中预测未来的轨迹,而通过采样角色轨迹下的地形高度,找到与环境相关的输入。使用过去和未来的位置、方向和几何形状的窗口可以减少模糊性的可能性,并产生更高质量的运动。对于其他任务,应该可以调整这种输入参数化,例如,包括与运动样式相关的额外输入变量。

Other Potential Parameterization
深度学习发现,可以使用输入参数化,这不是用这种手工制作的,而是使用更多的神经网络层来执行抽象。例如,为了我们的目的,可以使用周围地形的深度或RGB图像作为与环境相关的输入,并使用卷积层来抽象这个输入。这是一个有趣的方法,可能是一个很好的解决方案,特别是对于机器人技术,在那里的行动是有限的,需要地面的细节来保持平衡。在我们研究的早期阶段,我们测试了一种类似的方法,但注意到了一些问题。首先,使用CNN需要更多的训练数据,因为我们发现角色不会与图像两侧的任何地形交互,这意味着我们需要各种各样的不同的图像来防止这些地方的过拟合。我们还发现,当使用卷积层或更复杂的神经网络结构来抽象输入时,处理时间增加到不适合计算机游戏等实时应用的程度。

Limitations & Future Work
为了实现实时性能,我们只沿着轨迹粗略地采样点。这导致系统丢失了一些高分辨率的细节,如沿地形的尖锐的小障碍,这在实际应用中需要避免。一个简单的解决方案是,在当前系统的基础上有一个额外的控制层,以响应已标记的障碍,同时使用我们的系统对环境的低频几何结构。

像这个领域的许多方法一样,我们的技术不能很好地处理与环境的复杂交互——特别是如果它们包括精确的手部运动,如爬上墙壁或与场景中的其他物体交互。在未来的标签手接触和执行IK可能有助于这个问题。另外,在一个更自然适合交互的空间中进行回归,如由关系描述符定义的交互[al-asqhar等人,2013]可能是有趣的,并产生令人信服的结果。

PFNN训练相对较慢,因为小批中的每个元素产生不同的网络权值,这意味着训练期间的计算比通常昂贵得多。PFNN可以在几个小时的训练后产生可接受的测试结果,但每次添加新数据时执行整个30小时的训练是不可取的。因此,我们感兴趣的是如何加速PFNN的训练或执行增量训练的方法。

如果用户提供的输入轨迹在给定的上下文中是无法实现的或无效的(例如,地形过于陡峭),我们的系统将推断出这可能会产生不希望的结果(见图15)。此外,我们的方法的结果可能难以预测,因此艺术家很难修复或编辑。因此,需要一种专门的方法来编辑和控制像我们这样的技术的结果。

另一个未来的工作可以将我们的框架应用于基于物理的动画。例如,除了前馈控制器外,学习相位索引反馈模型的非线性版本[Liuetal.2016]将是很有趣的。这样的系统可以允许角色在不同的物理条件下稳定地行走和运行地形,如滑滑的地板,或不稳定的绳桥。

最后,将我们的技术应用于其他模式也很有趣,比如周期性数据的视频,如心跳的fMRI图像。使用像PFNN这样的周期模型可以使这类数据的学习过程更有效。

10 CONCLUSION

我们提出了一种新的学习框架,称为相位函数神经网络(PFNN),它适用于产生循环行为,如人类运动。我们还设计了网络的输入和输出参数,用于复杂环境中的实时数据驱动字符控制。尽管其结构紧凑,但该网络可以从一个大的、高维的数据集上学习,这要归功于一个相位函数,它可以随时间平稳地变化,从而产生一个巨大的网络配置变化。我们还提出了一个框架来产生额外的数据来训练PFNN,其中人类运动和环境几何是耦合的。一旦训练,我们的系统是快速的,需要很少的内存,并产生高质量的运动,而不显示在现有方法中发现的任何常见的假象。

Phase-Functioned Neural Networks for Character Control论文翻译(用于角色控制的相位功能神经网络)相关推荐

  1. 骨骼动画——论文与代码精读《Phase-Functioned Neural Networks for Character Control》

    前言 最近一直玩CV,对之前学的动捕知识都忘得差不多了,最近要好好总结一下一直以来学习的内容,不能学了忘.对2017年的SIGGRAPH论文<Phase-Functioned Neural Ne ...

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

    该文献发表于SIGGRAPH2017,作者 DANIEL HOLDEN, University of Edinburgh.TAKU KOMURA, University of Edinburgh.JU ...

  3. 3.Deep Neural Networks for YouTube Recommendations论文精细解读

    一.总述 今天分享的是Deep Neural Networks for Y ouTube Recommendations这篇论文的一些核心,这篇论文被称为推荐系统工程实践领域的一篇神文,每一个细节都值 ...

  4. What can neural networks reason about?论文解析

    What can neural networks reason about?ICLR2020高分论文解析 论文地址:论文地址 最近在看这篇论文作者MIT研究生keyulu Xu的2021ICLR最高分 ...

  5. TAGNN: Target Attentive Graph Neural Networks for Session-based Recommendation论文阅读笔记

    论文标题:TAGNN: Target Attentive Graph Neural Networks for Session-based Recommendation 发表于:2020 SIGIR 作 ...

  6. Convolutional Neural Networks for Sentence Classification论文解读

    本文将CNN和NLP结合: 介绍了一系列的对比实验,实验结果说明了: 一个简单的(单层神经网络)的CNN模型 一点超参数的调节(Filter的个数) static word vector 另外,对cn ...

  7. Graph Convolutional Neural Networks for Web-Scale Recommender Systems(用于Web级推荐系统的图形卷积神经网络)

    Graph Convolutional Neural Networks for Web-Scale Recommender Systems 用于Web级推荐系统的图形卷积神经网络 ABSTRACT R ...

  8. Feature Pyramid Networks for Object Detection论文翻译——中文版

    文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书 声明:作者翻译论文仅为学习,如有侵权请联系作者删除博文,谢谢! 翻译论文汇总:https://github.com ...

  9. Feature Pyramid Networks for Object Detection论文翻译——中英文对照

    文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书 声明:作者翻译论文仅为学习,如有侵权请联系作者删除博文,谢谢! 翻译论文汇总:https://github.com ...

最新文章

  1. 广播站 PHP,让一实听见你的声音——“校园之声”广播站招募小记
  2. bootstrap设置button不显示_电脑便签怎么显示不关闭?电脑云便签敬业签怎么设置显示桌面?...
  3. 周志华教授专著《集成学习:基础与算法》上市,豆瓣满分森林书破解AI实践难题...
  4. 四.Windows I/O模型之重叠IO(overlapped)模型
  5. 多系统服务器数据备份软件,护卫神好备份系统
  6. 使用gensim训练word2vec模型
  7. laravel 图片上传 intervention/image
  8. MongoDB在Windows环境下部署
  9. 供应链业务架构设计概览
  10. c语言变量报存在bss段,浅谈c语言代码段 数据段 bss段
  11. 杨令云玩过的那些FC游戏-英烈群侠传(一)
  12. java 时间减法(结束时间-开始时间,时分秒)
  13. 再劫面包店——未被实现的愿望的诅咒(正式版)
  14. Unity--Particle system(粒子系统)(一)
  15. (java.sql.SQLException: Cannot create com.entity.Book: com.entity.Book ...: [1]解决方案)
  16. CAN/CAN_FD/Flexray的通信速率
  17. 服务器定时任务 Crontab
  18. 求一个给定的n阶方阵的鞍点
  19. 7、KNN(K近邻)
  20. 十年建站老司机带你十分钟搭建网站

热门文章

  1. SUN韩F注册指南[新版]
  2. kaggle之泰坦之灾小记
  3. 高频Vue面试题,建议收藏便于经常翻看
  4. iOS开发 --- app 投诉维权
  5. 数据基础设施成趋势,华为战略布局的深意
  6. 算法之动态规划算法简介
  7. python已停止工作appcrash_Python已经停止在Windows中工作(APPCRASH),使用GDAL读取和更新shapefile...
  8. 三对角矩阵原理及C++实现
  9. 什么软件可以测试网络的稳定性,网络稳定性测试软件
  10. 关于Unity3D的一些笔试题(4)