A Deep Learning Framework for Character Motion Synthesis and Editing
2016-08-25 15:31:31 0 举报
AI智能生成
A Deep Learning Framework for Character Motion Synthesis and Editing
作者其他创作
大纲/内容
摘要
介绍了一种基于高层参数(high level parameters)的运动合成方法
学习的运动流行由卷积自编码器的隐藏层所表示,在稀疏成分中表示运动,可以结合起来生成大范围的复杂运动
为了能够将高维参数映射到运动流行中,文章在自编码器顶部堆叠了一个前馈神经网络,这个网络被用来从参数中生成真实运动,比如地形上的曲线,拳击的位置等
前馈控制网络和运动流行单独训练,允许用户根据期望接口在前馈网络中简单切换,而且无需预训练运动流行
一旦生成运动,那就可以通过运动流行空间中的最优化进行运动编辑。允许引入动力学限制,或者风格转化,同时保证运动自然。
最后总结,模型可以生成平滑高质量的运动序列,而不需对训练数据做任何人工预处理。
引言
大部分数据驱动方法需要大量人工数据预处理,包含运动分割,对齐和标签。
本文提出了一种运动融合与编辑方法,可以在非线性流行中学习运动数据的表示,使用大量的运动数据集,并且无需人工处理或者人工干预
本文在大数据集的基础上训练了一个卷积自编码器,因而它能够生成类似输入的运动数据,同时使用插值方法生成新运动
在自编码器顶部堆叠一个前馈网络,将高层参数映射到低层运动中。作用是用户可以依据直观地输入去生成运动,比如满足地形的轨迹,拳击位置等。
前馈控制网络和运动流行独立训练完毕以后,用户可以根据期望接口再训练前馈网络。
文章的主要贡献
快速、并行、深度学习框架,从高层参数中融合运动
满足用户限制的在流行空间中运动编辑方法,以及改变运动风格
相关工作
基于核方法的运动合成
通过混合(blending)运动数据的合成(synthesis)方法
最经典的RBF是混合同种风格多个运动的高效方法。
1998年,同种运动称为"verbs",使用RBF根据角色移动方向进行插值
2001年,使用RBF的逆运动学方法,映射关节位置到角色的姿态。为了使得混合运动更加真实,运动需要归类与时间对齐
2004年,通过计算运动的相似度以及动态时间规整完成归类和对齐,但是RBF方法非常容易过拟合,原因在于缺少处理噪声和变化的机制
2005年通过高斯过程克服了这个问题。元参数meta-parameters被优化去适应数据。
2004年应用高斯过程隐变量模型映射运动数据到低维空间,因而动画师可以直观地控制角色运动。GPLVM
2005年GPLVM被应用到时序运动数据中。给定前N帧学习下一帧。
2012年,在GPLVM的降维空间中使用增强学习reinforcement learning,计算指定任务的最优模型,比如移动,拳击,踢腿等
总结:基于核函数方法比如RBF和高斯过程都需要大量的内存。因此,可合成的运动数目受限。本文方法无此限制,并且可以扩展到庞大的训练集上
交互角色控制
使用运动数据库生成符合用户指令的运动
交互角色控制是基于高层指令去生成连续运动的一种机制
2002年基于运动图的方法是非常好的方法
运动图是从大数据集中自动计算得到的。运动图仅仅重播运动,2007年2006年和2012年有提出合成同种风格的运动去丰富数据集。
在交互角色控制中许多运动合方法需要运动被分类,分割和对齐,为每一个运动风格生成生成一个丰富的运动模型。不同时刻和不同类别的运动不能被混合
2004年尝试自动化此过程,运动之间距离度量的选择以及运动序列的分割标准严重影响到了效率和准确度。明确实施这些步骤是性能的一个瓶颈
文章的无监督框架自动混合最近运动去合成真实运动,不需要任何分割和分类
2004、2007、2010、2012年的文章基于强化学习的方法是为了按照用户指令找到每一个时间点最好的姿态,强化学习需要大量的预计算随着运动数目呈指数增长
随后2010年的motion filed方法变得很难处理intractable,因为数据量和控制参数的增长,需要很多额外技术间少状态数量。比如在2012年的分类和降维技术
本文的方法避免使用增强学习和直接将用户给定的高层参数退回到低层模型特征。
深度学习方法
以前都是在做图像和演讲者识别,现在从模型中生成新颖数据引起了极大兴趣。原因在于深度学习框架能够自动学习数据集特征。比如低层类似于Gabor滤波器,而高层有更加复杂的滤波器
2009年提出的NEAT算法,包含神经网络拓扑结构去控制两足动物;2014年此技术用到控制自行车特技上
2014年使用神经网络学习最优控制策略应用到双足机器人步态控制
2015年应用RNN为关节角色学习近似最优反馈控制器
已经有一部分方法被应用到运动捕捉数据中了
2015年构建hierarchical RNN,达到很高运动识别率
2015年将卷积自编码器用到CMU数据中,在数据检索中取得很好效果
2009和2011年将条件RBM应用到人体运动合成
2014年使用循环时序RBM提高了重构效果
2015年引入编码-循环-解码神经网络学习时序动力学特性,然后生成了平滑的插值运动并且减少了漂移(滑步)
以上三种方法都是时序方法,需要结合第一帧计算整个模型。如果动画师希望第一时间看到整个运动序列,则这种框架是不合适的,随后当修正运动的时候需要较小修改。当采取时序方法的时候,运动变换可能发生在向前传播的早期。
本文方法克服上面缺点,采用并改善卷积自编码器《Learning Motion Manifolds with Convolutional Autoencoders》,在第一时间生成运动,无需预处理
模型简介
左边的图展示了模型,使用卷积自编码器学习运动流行(绿色部分),隐单元就表示运动特征,然后通过前馈网络(橘黄色)映射高层控制参数与低层隐单元(特征),图中的高层参数就是轨迹。这些参数可以模棱两可,另一个小网络(红色部分)就被用来消除歧义
数据处理
数据集
CMU
内部数据。重定向到一个统一骨架
先将源骨架对应关节数据复制到目标骨架上
然后根据目标骨架进行缩放
最后根据逆运动学调整整个身体
一旦构建完成最终的运动数据将比CMU大两倍,包含6百万帧,120FPS
数据格式
下采样60FPS,转换为3D关节位置数据。关节位置是身体局部坐标系下定义的,原点在根节点在地面上的投影
前进方向(Z轴)使用右肩膀和右臀,计算平均值,并且计算与垂直方向(Y轴)的交叉。使用高斯滤波移除高频移动。XZ平面的全局速度和绕Y轴旋转被附加在输入中。这些可以被整合在时间中去修复全局转移和旋转。
2002年Lee发现脚部接触地方可以通过检测脚尖或者脚跟是否超过一定高度
减去平均姿态,关节角位置除以标准差进行归一化。速度和连接点也被各自的标准差相除
关节位置能够有效代表运动的原因在于:两个姿态的欧拉距离近似匹配姿态的视觉差异,多个姿态可以利用简单的线性方法进行插值,许多限制也被包含到表示中
模型不需要一个固定长度的运动片段,但是有一个固定长度的窗口去提升速度。所以运动被分成具有n帧的重叠窗口。
建立运动流行(manifold)
方法与2015年的那个方法相似,不同的是
①采取单层去编码运动,因为池化层和反池化会导致在重构以后运动模糊,因为池化层减少了数据的瞬时清晰度(temporal resolution)
②仅仅使用单层缺乏更进一步提取低层特征的能力,所以增加了深度反馈网络。同时也改善了部分性能
网络结构
卷积自编码是在时间域单独利用每一个滤波器进行一维卷积。网络提供了正向编码和反向解码,正向操作是接受输入向量,输出编码隐单元。
前向计算
W0维度是m*d*w0,bo的维度是m,进行最大池化操作,以及RELU激活
w0是时间滤波器的宽度,类似于卷积核个数,设置为25,能够保证对应接近半秒的帧:原始帧120FPS,降采样为60FPS,半秒为30FPS
m为隐单元个数,设置为256,根据经验得到
反向推导
逆池化inverse pooling是每一个隐藏层需要生成两个可见层,然而这个过程不可逆,需要一种近似方法。在训练阶段,随机选取两个对应可见单元之间的数,并将完整的值赋给其中一个单元,其它单元置零。这能够对最大池化操作的逆操作提供很好的近似,但是还是有噪声。因此当执行运动融合的时候,这个逆操作就表现为类似平均值操作,将隐单元的值平均地分配在可见单元中
W0的初始化遵循fan-in和fan-out标准,b0初始化是0
fan_out保存的是对于上一层的一张特征map,我在这一层需要对这一张特征map提取outputmaps种特征, 提取每种特征用到的卷积核不同,所以fan_out保存的是这一层输出新的特征需要学习的参数个数 。而fan_in保存的是,我在这一层,要连接到上一层中所有的特征map,然后用fan_out保存的提取特征 ,的权值来提取他们的特征。也即是对于每一个当前层特征图,有多少个参数链到前层
训练自编码器
损失函数
第一项代表重构数据的平方误差
第二项代表额外的稀疏项,保证使用最少的网络参数去重构输入数据
为了最小化孙志函数,采用随机梯度下降SGD
从数据库中随机抽取输入,使用Thenao的自动求导,使用自适应梯度下降算法Adam提高算法速度以及最终的基的质量
为了避免过拟合,使用了Dropout,训练15次,花费6小时
将高层参数映射到人体运动
简介
使用前向卷积神经网络学到了高层参数与人体运动之间的回归
高层参数是描述运动的抽象参数,比如根节点投影到地面的轨迹或者末端效应器的轨迹
从低维高层参数映射到人体运动是比较困难的,因为会有很多模糊不清以及多模态的输出。比如角色沿线走,会有不同的步长或者步伐不同步
前向网络的结构
前向卷积神经网络把高层参数映射到自编码器的隐单元。前馈神经网络使用前面的前向过程,但是包含三层和一个额外操作γ,用来解决模糊问题。
前馈方法
训练前向网络
损失函数
第一个项计算均方差
第二项是稀疏项
训练网络仅仅使用与特定运动相关的数据
消除运动歧义
文章研究了很多输入,发现提供接触地面的时间可以很大程度上消除歧义
并且接触地面的时间能够很好地区分行走和奔跑,因此训练的模型可以被用来自动计算依据给定路径的脚步触地时间。在输入中包含此可以消除歧义
分支主题
网络的输入是XZ平面的平移速度,以及绕Y轴旋转的旋转速度。给出了每一个时间点以及路径的朝向方向。T维度维n*k,n为路径中的帧数,k是输入路径的维度
F值是{-1,1},维度n*4表示左右脚脚跟脚尖是否触地。
用方波模拟触地状态
分支主题
W和T分别控制频率和前进时间。这些参数均可从轨迹中获得
分支主题
ah和at是调整脚跟和脚尖的相位的常量,分别设置为-0.1和0
bh和bt是控制脚跟和脚尖的触地时间的常量,从而控制走、跑。设置均为0
c是一个能够控制步伐频率的常量,设置为1
从数据中提取方波参数Γ=
从数据集中的脚步触地信息来计算参数
对于每一个关节wi(是第 i 帧),计算
其中
Li是每一步的波长,通过计算相邻帧的差值以及对四个点(左右脚尖脚跟)做平均
提取Ti当做是步态周期,利用提脚ui与落脚di的帧比率,作为方波的阈值
对于每一个脚尖和脚跟都学习变量T,此时△w是一样的。
对运动路径和接触信息做回归
主要是建立T和Γ之间的关系
使用两层卷积神经网络
一旦网络训练完成,给定了轨迹T,计算T和△w,可以被用来计算方波F,生成轨迹的触地信息
隐单元中的运动编辑
由于运动是在隐空间中编辑的,将有效运动的流行进行参数化,保证了即使在编辑以后运动也是流畅以及自然的。对于每个隐单元值,将约束作为一种代价。主要分为两部分,第一个是动力学约束方法;第二个是隐单元空间中的运动风格调整
隐空间中的约束
位置约束
消除滑步或者引导角色抓住某个目标
给定输入运动,得到隐空间H,损失依据违反位置约束的处罚
分支主题
vj'是坐标系下第j个关节的速度,vrH,pjH,vjH维度维n*3.wH维度维n,分别代表根关节速度,第j个关节的局部位置和速度,以及身体的绕y轴的角速度。分别从隐单元值H的解码过程计算的,即反向过程。比如为了避免滑步,脚尖和脚跟在接触地面的时候必须为0
骨长约束
使用关节位置作为特征代表,此外还得邻接关节的骨长保证刚体特性
分支主题
b代表骨骼索引,P和H是b的两端的重构的3D位置,同样是解码部分完成,lb是骨骼长度
轨迹约束
运动编辑和融合运动的误差可能不能精确地沿着期望路径,所以需要这个额外的精确路径的限制
约束零空间投影
自编码器生成的运动是通过隐单元中利用梯度下降法计算,直至损失收敛到一个阈值
分支主题
通过最小化上式和将H'投影回可见单元空间(利用反向过程),可以限制关节在一个期望的位置,并且能够保证每一个骨骼刚体特性
隐空间中的运动风格
2015年Gaty描述了图片的艺术风格是被编码在神经网络隐层的Gram矩阵中,并且介绍了一个结合照片内容与图片风格融合的例子
损失函数包含内容C和风格S
分支主题
其中c和s是控制内容和风格的相对重要性,分别设置为1.0和0.01
G是计算Gram矩阵,可以被当做相似度的平均或者隐单元的共激活
分支主题
H通过运动融合或者自编码器的前向操作得到,可以避免偏向内容或者风格
实验
第一个例子是使用高层参数和框架去生成人体运动,用的零空间约束投影;第二个例子是风格化,展示了大群人的动画生成,最后是计算的分解(breakdown)
地形运动
训练的时候,使用了各种类型的运动,具有不同的速率和步伐模式等。根节点轨迹被投影到地面去生成地形曲线作为输入
运行时,用maya画曲线。第一个例子角色速度是固定的,脚尖与脚跟接触地面的时间是自动从曲线中计算出来的,并且作为前馈网络的输入。第二个例子用测试集中的数据,增加了一些转圈的路径。最后一个例子设计了加速和减速
拳击踢腿控制
让运动跟随末端效应器的轨迹
隐空间的运动编辑
展示使用前向网络给生成添加限制前后的运动
比较在隐空间修改的运动与在笛卡尔空间根据逆运动建立的运动
运动风格的转换
各种走的姿态,经过自编码器计算Gram矩阵,这些Gram矩阵用来转换运动风格
拥挤人群动画
一次性创造多个角色,生成动画角色大集合
将卷积自编码与其它的网络结构相比
与单纯的神经网络对比,不添加最大池化和dropout
如果不进行dropout或者最大池化,会导致没有学习到很好的时间相关性
没有时间相关性的运动流行与每一个姿态PCA处理非常相似,因为没有任何时间平滑编码,输出是极具噪声的。
在运动合成中,如果没有最大池化或者dropout,会产生轻微的低平均误差
计算分解
给出了各个过程的计算时间
讨论
09年11年14年15年的方法都是基于时序关系的,本文方法是程序相关方法,无需一步一步计算,并且任意时刻的单独帧可以被按要求生成。在99年09年都有程序相关方法,并且需要分割对齐以及加标签
本文的卷积滤波器是沿着时间轴平移的,如果卷积能够用于空间,比如角色的图构架。使用事件卷积模型是为了保证学习到的自编码器的基局部和具有不变性,但是局部不变性在空间域不太好用。在胳膊的基在腿部可能并不适用,说明结构并不是具有不变性的。
我们的滤波器不活了不同关节之间的联系,不同的自由度被卷积操作综合起来,因此滤波器可以被优化用来发现相关运动
后面介绍了关键参数,这也显示了模型对于参数的敏感性
限制:前向网络的输入参数需要小心选择,因为高层参数和运动输出之间有些歧义。歧义是机器学习常见问题,需要额外模型去处理歧义,比如本文采用脚部触地模型。
总结
提出了一个深度学习框架,将高层参数映射到运动输出中,首先利用大量运动数据学习运动流行,然后再用户输入和运动输出之间做一个映射
本文的自编码器只有一层,因为深度堆叠自编码器在解池化处理时有模糊效应。本文结合和抽象出低层特征,利用前馈网络堆叠在顶部。然而简单的前馈网络容易训练,并且在学习运动流行时采用深度自编码器时候可以被使用
比较新颖的解池化方法比如 hypercolumns方法(14年提出)应对模糊效应,为运动流行建立深度网络
0 条评论
下一页