APP下载

三维人体骨骼动画自动合成方法研究

2022-10-25李淑琴

计算机仿真 2022年9期
关键词:插值骨骼编码

李淑琴,马 昊,丁 濛

(1. 北京信息科技大学计算机学院,北京100101; 2. 北京信息科技大学感知与计算智能联合实验室,北京100101)

1 引言

三维人体骨骼动画技术广泛应用于游戏、电影等娱乐产业的角色动画中,它在人体行为分析以及计算机动画领域具有十分重要的地位。传统的人体骨骼动画制作方法是首先参考真实人体骨骼运动过程中关节点的坐标位置变化轨迹,据此确定关键帧与插值帧模型,再进行必要的编辑处理。这需要大量的专业领域知识以及复杂的交互规则,需要投入较大的人力与时间成本,因此成为了限制用户使用的一个瓶颈。为了解决上述问题,研究者们给出了多种方法,大致分为以下两种:

1)基于几何与物理的方法。在基于这种方法的研究中最早出现的是Witkin等人提出的时空约束法,通过动作学甚至是动力学中的物理约束进行人体角色动画的编辑,具有很大的应用价值;Gleicher使用偏移映射来编辑并控制动画中角色的运动路径,通过采用信号处理的方法进行运动中自由度的修正;Choi等人提出使用绘制人体二维动作轨迹草图曲线的方法进行三维人体角色动画制作与编辑。基于几何与物理的方法虽然可以实现丰富的动画制作,但是增加了交互的复杂程度。

2)基于视频与动作捕捉数据驱动的方法。这种方法的思想是利用已有的视频或者是动作捕捉数据,通过给定人体姿态搜索空间将已有的动作数据信息匹配到新的人体角色模型上,从而生成全新的人体角色动画。这种方法早上一世纪末就有相关研究者提出并应用。随着技术的发展,近些年使用这种数据驱动的方法越来越偏向于用于行为分析与动作预测方面的研究。大部分研究者将关注点放在了从单张或多张人体骨骼图像中恢复三维空间下人体的骨骼动作信息,并合成完整的人体骨骼动画,从而进行人体动作预测。

随着深度学习技术在计算机图形学的成功发展与应用,以及人体动作捕捉数据库提供的大量数据支持,基于深度学习的研究方法成为了研究学者所关注的重点。其中文献[6]提出了一种基于深度神经网络的人体动作预测的方法;文献[7]使用多任务CNN网络模型实现从单张图片进行三维人体动作的预测;文献[8]使用深度卷积自编码网络实现三维人体骨骼动画的合成;文献[9]将关注点放在了动画游戏中的角色控制上并提出了PFNN网络,通过提前预测骨骼动画中下一帧中各关节点的坐标位置,将传统角色控制中的实时运算转化为提前运算,从而大幅度提高角色控制时的响应速度。

三维人体骨骼动画技术由于本身会涉及到多个领域的相关学科,因此,对于研究者而言仍然是当下研究的关注点与难点。

2 骨骼动画自动合成模型架构

本文所需要解决的问题是以三维空间下给定的两帧动作数据作为输入,并以输入的动作帧作为一段动画序列的首尾帧,根据首尾两帧间隐藏的动作趋势信息自动合成两个动作帧之间的缺失帧数据,从而实现完整动画片段的自动合成,提升动画系统的交互效率以及智能水平。具体的设计思想和模型架构设计如下。

首先对首尾两帧中的具体动作信息进行抽象描述,根据已经学习到的动作变化趋势经验,对最能够合理描述给定两帧数据间所期望的运动趋势数据进行预测,然后逐步进行缺失帧数据的插值与补全,恢复完整运动信息,实现骨骼动画的自动合成。具体设计步骤如下:

1)提取动作捕捉数据库中骨骼结构与骨骼关节点在运动时的运动特征,建立特征提取模型;

2)根据动作特征恢复首尾帧之间丢失的动作趋势信息,对首尾两帧间的运动趋势进行预测并得到合理的运动变化特征模型;

3)结合2)中所预测到的运动特征与给定动作帧信息逐步进行中间缺失帧的插值,合成三维空间下完整的骨骼动画序列。

骨骼动画自动合成模型架构如图1所示。整个模型可以分为两个部分,其中第一部分(左侧部分)是动作信息特征提取与恢复单元,在这部分中经过特征提取的原始动作数据会以动作流形的形式在隐藏单元中进行表示。另外,为了可以实现从动作流形中的特征数据到原始动作数据的恢复,这部分单元在设计上可以同时进行特征提取与特征恢复的双向操作。第二部分(右侧部分)是动作趋势信息恢复单元,这部分与动作信息提取模块的顶端相连接,在整个计算过程中逐步完成丢失动作趋势特征信息的预测与恢复,输出结果以动作流形的方式映射到隐藏单元。经过预测并恢复的特征信息最后通过第一部分单元的动作信息恢复操作进一步恢复完整的动作信息,实现动画序列缺失帧的插值与补全。

图1 骨骼动画自动合成模型结构

3 骨骼动画特征提取模型构建

为了从原始骨骼动画数据中抽象出具体动作的骨骼关节点变化趋势特征,并能够通过已有特征数据信息恢复出完整的动作序列,在这部分的模型设计上本文采用具有双向性的自编码网络作为主要模型单元。由于自编码网络同时具有编码与解码两种计算,因此可以通过编码计算进行特征提取从而对原始动作数据进行抽象,通过解码计算从具体的动作特征信息中恢复完整的动作信息。在设计上具体的细节如下。

3.1 数据准备与生成

本章中在数据采集时使用CMU的Mocap提供的人体动作捕捉数据作为原始数据集,(包括走、跑、跳跃、拳击等20种基本人体动作),其中数据集中的帧率为120帧/秒,并对原始数据集中人体骨骼关节点坐标数据进行位移和正方向的统一化预处理。在具体的预处理过程中通过消除骨骼根节点的位移信息实现位移统一化,并根据人体骨骼结构定义正方向为人体左右大腿骨骼向量和左右手臂骨骼向量的平均向量,通过消除正方向相对于右手坐标系轴正半轴在轴上的相对旋转,实现正方向的统一化。

为了满足自编码网络的输入条件并屏蔽不同动画序列中的帧数目的不一致性,在数据处理时使用尺寸为=240的滑动窗口法依次对原始动作序列数据进行切片,从而获取等帧长的动作序列片段,为了增加数据集容量并丰富动画序列的多样性,在数据切片过程中控制窗口滑动步长为2 ,相当于对原始的数据序列每隔1秒进行切片,这种切片策略可以在人眼可分辨的时间间隔条件下有效地利用原始数据并生成足够丰富动作片段数据。当滑动到序列末尾使得剩余帧序列长度小于窗口尺寸时则从动作序列的尾帧开始向前继续滑动一个完整的窗口长度,具体的窗口滑动过程如图2所示。经过滑动窗口法切片后可以生成具有统一维度的动作序列片段数据,用∈××3表示,其中表示人体骨骼关节点的数目,每个关节点对应于三维坐标系下的位置坐标。

图2 采用滑动窗口法的特征提取模型训练数据生成过程

3.2 使用卷积自编码网络的骨骼动画特征提取模型

自编码网络作为深度学习领域广泛使用的基础性结构,其主要应用于无监督学习。自编码网络可以通过多层的堆叠和逐层的预训练,帮助整个网络可以更快更好地收敛到最小值点。相对于传统的特征提取操作,使用卷积操作的自编码网络可以更加有效地对输入信号进行叠加和滤波进而提取信号内容中的主要特征信息。整个自编码网络通过隐藏层对输入进行压缩,并在输出层中进行解压缩,通过最小化整个计算过程中的信息丢失来最大程度地保留输入中的主要特征信息。

基于上述讨论,本文在针对骨骼动画特征提取的模型设计上使用基于卷积自编码网络的模型结构。在整个过程中分别提供了编码操作EC和解码操作DC,通过编码EC计算可以抽象出输入动画片段序列的主要特征并以动作流形的形式存储与隐藏单元H中;另一方面,解码操作DC可以将隐藏单元中的动作流形进行重构并恢复完整的骨骼动画序列片段数据。

在进行编码网络的设计上,本章中使用2层卷积结构作为基本运算单元,具体编码计算如式(1)所示

()=((((⊗+))⊗+))

(1)

作为编码网络的逆方向运算,解码计算的运算过程如式(2)所示

(2)

图3 自编码网络结构

自编码网络中完整的编码与解码计算实际上是以原始输入数据作为标准实现数据再生成的过程,在整个过程中通过最小化中间误差来提高网络质量。根据上述分析,本文给出了如式(3)所示的误差函数:

(3)

该方程的含义是通过衡量原始输入数据与再生成数据间距离的方差来反应在网络运算中所造成的误差损失。

4 插值帧自动合成模型构建

为了可以从给定的首尾两帧动作数据中自动合成中间缺失帧数据,本文采用基于深度学习的方法,将整个合成过程分为两个步骤。首先,通过给定帧动作间的具体骨架结构之间的关系,根据所提取的骨骼动画特征经验,进行动作变化趋势预测并将预测结果以动作流形方式进行存储;其次,根据预测的动作流形结果生成插值帧数据,实现完整骨骼动画序列数据的自动合成。

4.1 数据准备与生成

在实现动画插值帧自动合成过程中最重要的就是根据动作捕捉数据库中的具体动画片段数据学习并建立给定两帧动作间的关系到运动变化趋势之间的映射关系,具体数据选择上同样使用在21节中经过预处理所得到的统一化数据集。为了能够通过神经网络模型学习到完整的映射关系,在数据准备上需要同时给出输入数据和真实动作变化趋势输出数据。其中输入数据为一段完整动画序列中的首尾两帧人体各骨骼关节点在三维坐标系下的坐标位置信息;为了从动作捕捉数据库中获得具体动作序列中的变化趋势,本文使用同22节的滑动窗口法生成的固定长度的骨骼动画序列数据作为真实输出数据,将动画序列首尾两帧的数据信息直接进行拼接并作为输入数据。具体的训练数据集的生成过程如图4所示。

图4 采用滑动窗口法的动画插值帧自动合成模型训练数据生成过程

4.2 双线性插值与卷积策略相结合的插值帧自动合成模型

在进行插值帧自动合成模型的设计上,本文使用双线性插值与卷积策略相结合的策略进行模型构建。双线性插值算法广泛用于计算机视觉领域,其中比较典型的应用是进行图像缩放。另外,该算法还具有数据填充的功能。根据这一功能,插值帧生成模型第一步需要解决的就是将输入数据第一维度的尺寸进行放大从而满足到动作流形数据格式上的一致性。另外,考虑到单纯使用双线性插值法只是实现了维度上的统一,但并不能根据输入数据反映出所隐藏的动作趋势信息,本文在进行模型设计上加入了卷积操作对双线性插值后的数据进行滤波,通过训练对卷积运算中的参数进行优化从而实现到具体动作趋势的拟合。

在具体的网络模型设计中,从输入中的首尾帧动作数据到具体动作流形的转换通过基于深度学习的5层前馈网络进行实现。考虑到网络输入与输出数据间在第一维度上的尺寸相差较大并结合双线性插值算法本身在数据填充的过程时会造成数据的失真,一次性将输入数据直接放大到与输出数据相同的尺寸会造成较大的数据损失,从而加大了卷积滤波的负担从而无法得到期望的结果。为了解决上述问题,在网络模型的设计上将双线性插值计算平均分配到了前馈网络的各层之间从而可以递进地放大输入数据的尺寸,并逐步通过卷积滤波实现到网络输出的拟合。综上所述,整个前馈网络的计算可以用式(4)所表示

∏()=((((((((

(4)

图5 双线性插值与卷积策略相结合的前馈网络结构

根据Mocap中所提供的数据集,可以分别根据∏运算和EC运算将输入数据集In和输出数据集Out映射到隐藏单元H,因此在进行前馈网络的训练时本章所给出如式(5)所示的误差函数对前馈网络质量进行评估。

(5)

在自编码网络已经训练完成的条件下,该公式的含义是通过衡量经过前馈网络所预测的动作趋势信息到真实动作趋势特征数据间距离的方差来反应前馈网络在进行动作流形预测时的质量。

5 实验与分析

在实验中,为了能更好地反映数据本身的特征并为了在进行网络训练时加速网络收敛能力,本文使用z-score标准化方法将数据进行标准化处理,目的是能够将不同量级的数据统一转化为同一个量级,以保证数据之间的可比性。为了可以测试网络性能,本文将数据全集分为训练集和测试集两部分,其中训练集占全集的80%,测试集占20%。

5.1 网络训练

在具体训练过程中,本文使用Tensorflow0做为深度学习平台,在此基础上使用NVIDIA GeForce Titan进行GPU加速来提高计算力从而缩短训练周期。具体两个部分网络的训练细节如下:

1)在进行动作特征提取网络的训练时,设置mini batch值为64,并对完整数据集训练300轮,使用Adam方法作为优化器通过最小化误差函数(3)实现卷积自编码网络的优化。最终生成完整的骨骼动画特征提取模型。

2)在进行骨骼动画插值帧自动合成网络训练时,设置mini batch值为64,为对训练数据全集训练1000轮,使用Adam方法最小化函数(5)进行网络参数优化。最终生成骼动画插值帧自动合成模型,由于在网络训练时将数据进行了标准化,因此在真实应用场景下需要将经过网络运算后得到的标准数据进行z-score标准化的逆运算,恢复动画序列中各动画帧中真实的骨骼节点位置坐标数据。

5.2 结果与评估

基于自编码网络的动画特征提取模型训练时的误差走势如图6所示。

图6 基于自编码网络的动画特征提取模型的训练期间误差走势

根据误差走势信息可以反映出自编码网络在训练阶段得到了较好的收敛,并将最终误差稳定在0.01数量级。在实验中同时使用测试集对训练完成的网络模型进行测试。对于特征提取模型而言使用式(3)作为衡量标准以一个mini batch为单位逐批计算并记录测试集中真实数据与经过自编码网络再生成数据间的距离方差,结果如图7所示。根据结果可以看出自编码网络对于测试集具有比较理想的效果,并且可以将大部分误差基本稳定在0.0100.025左右。

图7 基于自编码网络的动画特征提取模型测试结果

基于双线性插值与卷积相结合的骨骼动画插值帧自动生成模型训练时的误差走势如图8所示。

图8 使用双线性插值与卷积相结合的插值帧自动合成模型

为了反映使用双线形插值与卷积相结合策略的特性,在实验中同时使用同样具有数据填充功能的最近邻插值与卷积相结合策略以及深度反卷积策略的前馈网络模型进行对比实验(其中最近邻插值与卷积策略相结合的网络模型用nn+conv表示、双线形插值与卷积策略相结合的网络模型用bl+conv表示、深度反卷积网络模型用de-conv表示),训练时的误差对比走势如图9所示。

图9 使用不同策略的骨骼动画插值帧自动生成模型训练期间误差走势

由实验结果可知对于使用同种误差函数进行训练时使用插值与卷积策略相结合的两种网络策略会从一个相对反卷积网络而言从更高的误差迅速下降并保持平稳,而使用反卷积策略的网络会在初期从相对其它两种网络而言从更低的误差值缓慢下降,并最终下降到与使用插值与卷积策略相结合的网络相当的误差水平并保持平稳;对于两种使用插值与卷积策略相结合的网络而言,使用双线形插值策略的网络在训练时的误差下降会略优于使用最近邻插值策略的网络,可以在第100个epoch左右迅速下降并保持平稳状态。在实验中同时使用测试集对上述三种网络模型进行对比测试,由于对于该模型最终的衡量标准是最终完整动画序列的合成能力,因此在使用测试集进行网络质量测试时使用式(6)作为网络误差衡量标准。

(6)

在实验中对以测试集按照mini batch为单位逐批计算并计算平均误差,得到如表1所示的测试对比结果。

表1 采用不同策略的测试平均误差结果

综合上述结果可以看出在使用双线形插值与卷积策略相结合的网络模型的效果略高于其它两种模型,并且可以得到较为理想的结果。为了验证本文方法的有效性,在实验中随机从Mocap数据库中抽取两帧人体动作数据作为模型的输入,根据本文方法将生成的动画序列进行三维渲染,并生成三维人体骨骼动画,结果如图10所示。

图10 根据任意两个人体动作数据作为首尾帧自动合成三维人体骨骼动画序列

根据结果可以得出在任意给定两个人体动作数据作为动画的首尾帧时,本文所提的方法具有完整骨骼动画自动合成的能力。

为了反映本文模型方法在插值帧生成过程中具有动作趋势转折信息的预测和还原能力,在有效性验证中将本文方法与传统基于几何插值方法的动画生成方法进行对比,对比结果如图11所示。根据结果可以得出传统的方法在合成动画时由于单纯使用几何插值方法,因此不能得到动画序列中动作的转折信息,而为了实现上述功能,传统方法不得不多次在动画序列中插入能够描述动作转折信息的关键帧,从而增大了交互复杂度;而本文所提出的方法由于在训练时学习到了动作变化趋势信息,因此可以根据首尾帧的动作数据预测出动画序列中可能存在的动作转折信息,并能够很好地描述这种变化趋势。

图11 本文方法与传统几何插值法动画合成结果对比

6 结束语

本文以人体骨骼动画作为研究背景,将简化人体骨骼动画作为出发点,并使用深度学习方法从骨骼动画特征提取与动画插值帧自动合成两个角度进行分析与讨论,并使用深度学习策略给出三维人体骨骼动画自动合成方法。在研究过程中首先确定了整个方法的输入与输出数据结构并根据数据特征进行模型动画特征提取模型与使用前馈网络作为结构的骨骼动画插值帧自动合成模型;通过分析网络模型质量的影响因素,给出了使用双线性插值与卷积策略相结合的骨骼动画插值帧自动合成模型,并在训练过程中给出了网络质量的误差函数。最后通过实验对比并分析了本文方法的合理性与有效性。由此可见,本文所提出的方法可以实现三维人体骨骼动画的自动合成工作,在简化交互复杂度以及提高动画系统智能水平方面具有一定的实用价值。

猜你喜欢

插值骨骼编码
滑动式Lagrange与Chebyshev插值方法对BDS精密星历内插及其精度分析
生活中的编码
做家务的女性骨骼更强壮
三减三健全民行动——健康骨骼
《全元诗》未编码疑难字考辨十五则
子带编码在图像压缩编码中的应用
Genome and healthcare
基于pade逼近的重心有理混合插值新方法
混合重叠网格插值方法的改进及应用
基于混合并行的Kriging插值算法研究