对《Fast Neural Style Transfer for Motion Data》一文的理解(上)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/keneyr/article/details/88593879

该文章发表于哪里已经忘了2017,不过不是SIGRAPPH。作者是Daniel Holden and Ikhsanul Habibie  ■ University of Edinburgh、Ikuo Kusajima  ■ University of Tokyo、Taku Komura  ■ University of Edinburgh


本博乃理解上篇,重在翻译(人翻非机翻),虽然逐句翻译并写下来真的很痛苦。但是脑子虐我千百遍,我待脑子如初恋。没错是脑子偷偷给我下达的指令。


                                神经网络下运动数据的快速风格转移

动作风格转移是一种将演员的动作转移到其他不同角色的动作的技术,例如衰老的,沮丧的,快乐的或受伤的角色。自动化此过程可以节省动画师的时间,因为这意味着他们不需要为每个角色创建不同的运动,相反,它们可以产生一组运动,然后自动适应不同的角色。

先前已经有很多有关风格转移(style transfer)的技术。这些方法大多是数据驱动的,并且需要中性风格和角色风格的一组相关数据集合(Most of these methods are data-driven and require a set of corresponding motions both in the neutral and characterized styles.)。这些动作必须在时间上对齐,以便可以计算相关姿势并学习某种形式的回归。构建这样的数据集对于艺术家来说可能是乏味的,并且即使使用自动方法,在运动之间获得良好的时间对准也是困难的或者需要来自技术开发者的大量手动干预。

神经网络风格转移,第一次是由LeonGatys和他的同事提出来的,后来由Daniel Holden及其同事调整用来对运动数据进行处理---使用深度神经网络执行风格转移任务,解决神经网络隐藏单元的优化问题,以另外一个运动内容产生片段形式的新运动(uses a deep neural network to perform the style transfer task, solving an optimization problem over the neural network hidden units to produce motion in the style of one clip, but with the content of another.)。这个方法克服了许多传统风格转移方法中出现的问题。首先,它只需要单一的范例运动来代表风格,而不是相关运动片段的数据库(First,it only requires a single exemplar motion to represent the style rather than a database of corresponding clips.)。其次,它不需要对内容片段和风格片段进行校准,相反,通过对运动的Gram矩阵的所有帧求平均值计算出风格( it does not require any kind of alignment between content and style clips, instead calculating the style implicitly by taking an average over all the frames of the motion’s Gram matrix)。这两项事情对开发者来说都充满着吸引力,因为它们减少了所需数据的准备量。

神经网络风格转移传统的缺点之一是速度。神经网络风格转移需要解决优化问题optimization problem,而不是形成回归,这在计算上很昂贵并且会花费很长的时间。

本文,我们受Justin Johnson和他的同事的启发,提出了一种技术,能够不受速度的约束,同时保留原始风格转移方法的优点。我们训练了一个快速前向神经网络来进行回归,满足原始优化问题以及运动的约束。我们还使用自编码卷积神经网络替代了预训练分类网络,就像Holden用的方法一样。这个网络作为损失网络,优点是能够进行无监督训练,并且可以额外用来解决运动生成过程中的伪影和噪声问题。

运动风格转换的最新进展(State of the Art in Motion Style Transfer)

我们首先回顾计算机图形学中的运动风格转移方法,然后我们探讨深度学习在数据转换中的应用,重点强调风格转移。(Then we explore the use of deep-learning methods in data transformation with an emphasis on style transfer.)最后,我们讨论之前用深度学习技术合成运动数据的方法。

运动风格转移(Motion Style Transfer)

运动风格转移在计算机动画中是一个古老的问题,其思想就是从一个运动片段中导入风格,然后把该风格应用到另外一个运动中(with the idea being to import a style from one motion clip and apply it to another motion),运动风格转移对像计算机游戏这样的应用来说非常有用,其目标就是最小化包中的运动数据量。

一种方法是处理频域中的运动。通过传递傅里叶系数的差异,将中性运动转换为具有不同情绪的运动(Neutral motions are converted into motions with different emotions by transferring the difference of the Fourier coefficients)。K和C通过运动数据的高频元素定义运动的风格并且把它们添加到一个新运动中从而风格转移。E和N沿着运动滑动窗口应用快速傅里叶变换(FFT)来提取表示风格的高频数据。

另外一种方法是使用动态模型。E和他的同事使用线性时间不变模型来生成时间序列模型,这个时间序列模型也是风格嵌入的模型。J和他的同事提出了多线性分析方法(multilinear analysis approach)来合成和转移运动风格。此方法可用于减少歧义,因为该模型可以代表低维空间中的运动数据。这个方法的另一个优点就是省略了脚接触的定义以防止滑步的问题,因为模型是由于运动配准构成的。Shihong Xia和他的同事证明了人类运动风格转移可以实时执行,方法就是通过构建风格和内容的自回归模型的局部混合,这个模型可以对一个序列里不同的运动内容进行风格化,比如说走路的动作接下来立刻跳跃该方法的思想就是用一个训练好的模型从给出的当前运动中计算出最相近的运动风格,然后来预测下一帧的运动。

前馈转换和风格转移(Feed-Forward Transformation and Style Transfer)

研究人员最近将前馈网络应用于各种图像处理任务的数据转换。相关工作包括使用卷积神经网络来变换低分辨率图像以产生高分辨率图像,灰度图像着色,以及图像的分割或语义场景理解。与其他神经网络方法一样,一旦训练了模型,就可以轻松快速地使用它们对新输入数据执行类似的转换。

G和他的同事证明了,使用深度神经网络进行图像转换的概念可以通过风格转移的方法用来组合图像的不同元素他们的工作也证明了,卷积神经网络可以通过将一个图像的风格转移到另外一个图像的内容上进而组合两个图像。组合的图像在保留图片内容的同时成功地捕获了视觉风格。正如M和B展示的那样,网络的每个卷积层捕获图像中对象的形状特征,其捕获细节的水平越来越高。因此,网络的这个特征也可以用来捕获数据的内容特征。另外一方面,图像数据的风格是以纹理的特色变现表现出来的,比如说颜色和局部特征,通常是由Gram矩阵编码

最近,J和他的同事提出了一个具有感知损失函数的深度卷积神经网络,可以用来执行图像转换的人物,比如说风格转移和产生高质量的具有超分辨率的图像。他们建议,与普通的每像素均方误差比较相比,基于感知差异的损失函数可用于改善性能。他们的方法产生的风格(样式)转移图像与原始样式转移方案相当,但速度提高了三个数量级。 我们采用这种方法,但使用特定于运动的约束附加的流形投影步骤使其适合与运动数据一起使用。

用于人体运动分析的深度卷积神经网络(Deep Neural Network for Human Motion Analysis)

在图像转换等各种研究领域取得广泛成功之前,深度神经网络的普及是基于它们在识别问题中的突出表现,特别是对于图像和语音识别。 这些成功可以推广并用于其他问题,包括人体运动数据的分类和识别

最早的使用神经网络来进行人体运动合成的技术包括条件限制玻尔兹曼机器(cRBM)和循环时间限制玻尔兹曼机器(RTRBM)。虽然这两种方法都成功地产生了人体运动数据,但由于每帧采样这些运动是有噪声的,并且因为它们通常由于映射模糊而收敛到平均姿势。K及其同事提出了一种RNN变体,也就是称为编码器 - 循环 - 解码器网络用于学习和合成人体运动数据(proposed a variant of recurrent neural networks to learn and synthesize human motion data known as the encoder-recurrent-decoder network )。H及其同事的工作表明,卷积自动编码器(convolutional auto-encoder )可用于学习人体运动的多种多样。这在研究中有许多目的,包括重建,清洁或对运动数据去噪。此外,作者将这种自动编码器与前馈神经网络相结合,从高级用户输入回归到全身运动数据。 然后,他们提供了一个框架,用于使用运动流形(motion manifold)编辑生成的运动,并通过优化隐藏单元空间中的运动来满足诸如骨骼长度脚部滑动之类的约束。此编辑过程还可用于在类似于Gatys方法的方案中使用Gram矩阵转换运动样式。

 

方法(Methodology)

正如我们前面提到的,我们提出的网络架构类似于J和他的同事提出的图像转换技术。Fig1显示了我们系统的概述,它由两个独立的神经网络结构组成:卷积自动编码器网络---用作损耗网络L前馈卷积网络---用于执行运动风格(样式)转换,我们称之为转换网络T.

数据表示(Data Representation)

每个姿势是由3D欧几里得空间的21个关节位置表示,这些关节位置是相对于角色的根形态的,而根形态是映射到地板平面上的。(Each pose is represented by the 21 joint positions in 3D Euclidean space local to the character root projected onto the floor plane)。附加于此的是转弯,前进和侧向速度的三个附加变量。这给了我们每个姿势总共66个自由度(DOF)。

虽然我们提出的框架可以处理任何长度的运动数据,为了训练目的,运动数据被分成240帧的重叠窗口,每秒60帧( for training purposes motion data is split into overlapping windows of 240 frames at 60 frames per second.)。任何少于240帧的运动都会用第一帧和最后一帧来填充到240帧(Any motions with less than 240 frames are padded with first and last frames)。

损失网络(Loss Network)

与使用预训练图像分类网络的J和他的同事不同,我们系统中的损失网络L是自动卷积编码网络,训练用于重建运动数据X的,运动数据X作为网络输入(the loss network L in our system is a convolutional autoencoding network trained to reconstruct the motion data X, which it receives as input)。 使用这种网络的目的是学习运动数据库的潜在的多样结构。我们只是部分模仿J的分类网络,但是是以无监督的方式。

H和他的同事表明,单个卷积和池化层足以有效捕获潜在变量中的运动内容样式,因此,不需要更深或更复杂的网络。因此,我们遵循H建设,我们对其进行了简要的修改。 损耗网络由单个卷积和池化层构建,该池化层使用在时间维度上计算的1D卷积。 编码操作可以写成如下:

其中权重矩阵W0表示张量由m个隐藏单元d个特征宽度为w0的时间滤波器组成。在本文中,m=256,d=66,w0=25.(where the weight matrix W 0 represents a tensor that consists of m hidden units (in our case, m = 256), d features (in our case, d = 66), and a temporal filter width of w 0 (in our case, w 0 = 25).)向量b0表示层偏置, 表示最大池化操作---用于通过获取两个连续参数之间的最大值来减少时间轴上的特征数量的。我们使用整流线性单元(ReLU)作为激活函数来为网络提供非线性。过滤器宽度25对应于在池化之后大约半秒的运动,这是表示大多数运动或运动分量的合理时间长度。因为我们的初始输入有66个维度,所以使用256个隐藏单位允许我们使用稀疏偏置来表示运动,这比通常通过主成分分析(PCA)等方法找到的完全相关偏置更自然。类似地,卷积自动编码器的解码操作定义如下:

H是前向操作产生的隐藏单元,是反池化操作,是一个解码操作。为了训练卷积自编码,输入的运动数据X编码到隐藏单元空间,然后解码回来重建损失函数

反向传播使用随机梯度下降以优化网络参数,第二个项是L 1稀疏性正规化术语。

训练大约需要6个小时,用的是Nvidia GeForce GTX 660 GPU,但因为我们使用的是之前已经工作的预训练网络,本文的目的,不需要训练。

转换网络(Transformation Network)

转换网络T是一个简单的三层卷积神经网络,其中每个层的结构类似于损失网络L的编码层,但是没有池化操作。 每层包含128个隐藏单位,除了最终输出层之外的所有层都使用ReLU。

训练(Training)

这项工作的目标是训练转换网络T,并且不用明确的提供理想的输入和输出。 要做到这一点,我们使用给定损失网络L以编码各种基于优选的变换运动约束。在培训期间,我们定义了转换网络的损失函数使用以下术语。

内容。为了确保转换网络的输出output包含输入运动I的内容,我们将内容损失content loss定义为传递给损失网络L时输入运动的隐藏单位值 与 变换运动T(I)的隐藏单位值之间的差异。 该比较可以被认为沿着运动域在变换和未变换运动之间的距离编码。 这是通过用户指定的权重c(在我们的例子中为1.0)来缩放的:

风格。为了确保变换网络的输出包含给定样式片段S的样式(To ensure the transformation network's output contains the style of the given style clip S),我们将样式损失style loss定义为传递给损失网络时变换运动的隐藏单位值的Gram矩阵 与 该变换运动的Gram矩阵之间的差异。 这跟随Gatys及其同事的工作,比较确保了转换网络产生的运动风格与给定样式片段S的运动风格相匹配。这是由用户指定的权重s(在我们的例子中,0.01)来缩放的:

Gram 矩阵代表了隐藏单位值的内积的时间轴i上的和(The Gram matrix represents the sum over the temporal axis i of the inner product of the hidden unit values and is given by the following)并由下式给出:

通过在训练期间将风格化片段与其关联的内容片段配对,我们训练可以在不同环境中应用该风格的转换网络。 例如,给定生气的风格,内容包含跑步的所有训练片段与“愤怒的跑步”样式配对,并且包含步行的所有内容片段与“愤怒的行走”样式配对。 以这种方式,尽管每种样式需要不同的网络,但是可以训练单个网络以用于各种内容。

约束。除了内容和风格之外,重要的是变换的运动T(I)尊重人体运动约束。 这意味着不应存在滑动瑕疵骨骼长度不得变化并且轨迹应与形状中的输入运动相似。 因此,我们计算与人体运动约束相关的额外损失函数。 所有这些约束必须相对于输入数据的单位进行缩放。
为了消除滑步,当脚被认为与地面接触时(先前在训练数据中标记的变量),对于每个脚关节j,我们确保关节局部速度局部平移速度局部旋转速度的和 negate 角色的根形态相对于forward 方向的速度:

对于每跟骨头b包含关节j1j2,我们计算在转换运动后的两个关节位置的距离,并且在给定骨头长度lb的情况下计算平均方差:

给定理想的轨迹速度和理想的转身角速度,我们计算转换运动的平均方差错误还有轨迹还有转身角速度:

训练。因此,最终的损失函数考虑了内容,风格,运动约束,计算公式如下:

给定该损失函数,使用随机梯度下降来训练变换网络T,其中使用Theano执行自动导数计算。 我们使用基于动量的优化算法Adam来提高学习速度。使用大约20分钟的运动数据的运动数据集训练转换网络100个epochs。 在Nvidia GeForce GTX 970上进行单一样式的训练大约需要20分钟。经过训练,转换网络可以非常快速地执行样式传输任务。

域值映射(Manifold Projection)。使用深度神经网络生成的数据通常包含少量噪声或其他伪像(参见Fig2)。 这些小错误对于图像可能是可接受的,但对于运动数据,它们极大地影响结果的视觉质量。


为了解决这个问题,我们重新利用了用作损耗网络的预训练卷积自动编码器,并且在之前的工作之后,通过它的变换运动将其投射回运动流形,有效地去除任何不期望的噪声或伪像。

实验结果(Experimental Results)

我们在10种不同风格和各种运动中包括步行,慢跑和跑步 测试了我们的方法。 除了定性评估之外,我们还将结果与之前最相似的工作进行了比较:基于Holden优化的样式转移方法.有关结果的更详细信息,请参阅https://youtu.be/AvVQZjygQBQ上的补充视频。 Fig3显示了不同风格运动的风格转移结果选择,包括老人,僵尸,受伤和沮丧,Fig4显示了这两种技术的比较。


我们的方法生成的结果在大多数情况下视觉上相似,但生成的运行时间要短得多。 Table1给出了每种方法的运行时间细分。 由于转换网络的隐式并行性,我们的方法具有非常优越的运行时间和更好的缩放特性。 所有性能特征均记录在Nvidia GeForce GTX 660 GPU上。

与Holden方法不同,我们的方法需要训练运动数据数据库,其内容类似于将在运行时提供的运动类型。例如,训练我们的方法来执行运动数据的风格转移需要一个运动数据库。对于更具体的运动,获得这样的数据库可能是困难的或不希望的。

我们的方法还需要预先指定整个运动,因此需要进一步调整以用于交互式应用。此外,虽然神经网络风格转移几乎不需要人工干预,也没有数据对齐,但与之前的样式转换技术相比,从艺术角度来看很难控制,并且通常没有明确的方法来修复不良结果。

在实验上,我们发现我们的方法对于主要不是运动的运动(例如冲压和踢腿)产生了良好的结果。由于神经网络风格转移难以理解和控制,因此未来的实验有必要了解它如何最有效地应用于不同类型的运动。

用于从程式化运动中去除伪影的域投影操作可以引入滑步。在我们的结果中,我们没有尝试删除它,只显示系统的原始输出。为了在生产中有用,必须通过一些快速后处理(例如分析逆运动学(IK))将其去除。

我们在这里提出的框架特定于样式转移,但是在给定单个样本的情况下学习运动数据的其他变换可能是有用的(在我们的例子中,这将是单样式剪辑)。例如,可以使用此框架来转换运动以用于不同大小,重量或结构的角色

猜你喜欢

转载自blog.csdn.net/keneyr/article/details/88593879