Deephase:周期性自编码器学习运动相位流形
- 1. 简介
- 2. 相关工作
- 3. 周期性自动编码器
- 3.1 网络结构
- 3.2 相位流形
- 3.3 网络训练
- 4. 运动控制器
- 4.1 神经运动控制器
- 4.2 运动匹配
- 5 实验和评估
- 5.1 学习到的相位流形
- 5.2 神经网络的运动合成
- 5.3 评估
- 6. 讨论
- 7. 局限性
- 8. 结论和未来工作
best paper award 爱丁堡大学、艺电公司、香港大学
学习身体运动的空间-时间结构是人物运动合成的一个基本问题。在这项工作中,我们提出了一种新的神经网络结构,称为周期性自动编码器,可以以无监督的方式从大型非结构化运动数据集中学习周期性特征。角色的运动被分解成多个潜伏通道,这些潜伏通道在时间上向前推进的同时捕捉不同身体段的非线性周期性。我们的方法从全身运动数据中提取了一个多维相位空间,有效地对动画进行了聚类,并产生了一个流形,其中计算的特征距离提供了比原始运动空间更好的相似度测量,以实现更好的时间和空间对齐。我们证明,学习到的周期性嵌入可以显著帮助改善一些任务中的神经运动合成,包括不同的运动技能、基于风格的运动、来自音乐的舞蹈运动合成、足球中运球运动的合成,以及大型动画数据库中匹配姿势的运动查询。
神经网络,人体运动,角色动画,角色控制,角色互动,深度学习
1. 简介
学习运动空间的时空结构可以对运动数据进行插值,并在不同类型的运动内部和之间产生真实的过渡。在计算机动画和机器学习领域,为运动预测、合成和控制中的各种任务建立运动空间模型,已经有大量的工作被引入。运动空间是一个领域,空间中的每个样本都是从运动捕捉数据中收集的。已经提出了学习连续空间的方法,尽管它们经常受到平滑运动和不良响应性的影响。
学习运动空间结构的困难在于数据的稀疏性和空间的高度非线性结构。事实上,运动捕捉数据从根本上来说是稀疏的。虽然部分数据,即主体进行单一类型的运动,如行走或跑步,是密集的,但不同类型的运动之间的过渡是非常有限的。这使得建立不同运动类型之间的插值或过渡的模型很困难。当更新角色的状态时,通过插值附近的样本,系统倾向于在时间上向前和向后采样,导致角色停滞不前。另外,过渡到远处的状态也会导致更新的结果偏离到没有样本的空间。这意味着为角色控制任务生成运动的数据驱动模型可能会产生过度平滑或不稳定的运动,因为运动空间的相似性一般不代表它们在时间上的相似性。
为了应对这个问题,我们关注人物运动在时间和空间上的局部周期性。这是产生一个平滑和连续的运动空间所需要的关键特征之一。因此,考虑这种周期性对于运动合成、预测和分析的运动空间建模是有益的。更具体地说,步行或跑步等周期性运动是周期性的,但诸如抓握、冲撞、坐和跳或步行和跑步之间的过渡等运动也可以被视为(时间上的)局部周期性,假设它们是周期性运动的时间切片或周期性运动之间的过渡。除此之外,全身运动可以作为多个(空间上)局部周期性运动的组成而发生。对于人类/四足动物的运动,往往不是由单一的相位信号驱动,而是由多个局部相位信号组合而成,例如在行走时挥手或操纵物体,跑步时摇尾,或跳复杂的舞蹈,手臂、腿甚至臀部和头部都可能以不同的时间和频率运动。这种局部周期性使我们能够建立一个一般的运动流形结构,其参数由相位、频率、偏移和振幅组成。
在这项工作中,我们提出了一种新的神经网络结构,称为周期性自动编码器,它可以以无监督的方式从大型非结构化运动数据集中学习周期性特征。神经学家和神经科学家认为,肌肉骨骼系统、环境刺激和中央模式发生器神经回路(产生周期性脉冲信号)之间的相互作用共同产生了局部周期性运动的信号[Dimitrijevic等人,1998;Yuste等人,2005]。受此启发,人物运动被分解为多个潜伏通道,这些潜伏通道在同步、异步和过渡运动中捕捉不同身体段的非线性周期性,同时在时间上向前推进。我们的方法从全身运动数据中提取一个多维相位空间,有效地对动画进行聚类,并产生一个流形,其中计算的特征距离提供了一个比原始运动空间更好的相似度测量,这有助于实现更好的时间和空间对齐。这个特征空间比原始运动数据更紧凑,未来的姿势可以通过时间频率的增量从过去的姿势中取样。在训练过程中,每个潜伏相位通道会针对不同的局部运动进行调整,并在本质上作为一个带通滤波器,用于不同范围的学习频率和振幅值。
我们证明了学习到的周期性嵌入可以大大增强数据驱动的角色动画,用于一些任务,包括各种运动技能、风格化的动作、从音乐中合成舞蹈动作、合成足球中的运球动作(见图1)。我们展示了使用我们学习的相位流形在用神经角色控制器生成这类运动时的好处,以及在应用于运动查询任务,在大型动画数据库中匹配姿势时的好处,以便与不断增长的可用运动数据进行扩展。
本文的主要贡献可以归纳为以下几点:
- 一种新颖的神经网络结构,称为周期性自动编码器,它将非结构化的角色运动转化为周期性流形,有效地代表了全身运动在空间和时间上的一致性。
- 展示将学到的特征空间应用于角色动画的各种任务,包括双足/四足运动的实时合成、风格化的动作、来自音乐的舞蹈动作、足球运球,以及运动匹配中的有效运动查询。
- 与现有的最先进的动画系统相比,对所学的相位空间进行评估。
2. 相关工作
我们首先回顾了关于为动画目的从运动捕捉数据中学习的经典作品。然后,我们回顾了使用神经网络和大型运动捕捉数据集来学习如何进行运动建模的工作,并将这些方法与本文的方法联系起来。最后,我们回顾了专注于在频域中学习运动的工作。
从运动捕捉数据中学习。从运动捕捉数据中学习的经典方法是沿着时间轴对齐运动,并通过线性插值[Wiley和Hahn 1997]、径向基函数[Rose等人1998;Rose III等人2001]和高斯过程[Mukai和Kuriyama 2005]对它们进行插补。由于插值所有的运动在计算上很昂贵,所以经常使用通过最近的邻居搜索[Kovar和Gleicher 2004]找到的样本。当插值运动时,需要沿时间轴对齐运动,以产生一个遵循用户给定约束的运动。
另一种可以从运动捕捉数据中学习到的运动类型是从一类运动过渡到另一类运动,如从闲置到走/跑,走到坐等。为此,通过比较基于关节角度/角速度或关节位置/velocities的状态向量来计算姿势间的相似性。运动图谱方法[Arikan和Forsyth 2002;Kovar等人,2008;Lee等人,2002]根据这种距离指标构建运动图谱结构。在这些方法中,合成的运动只是原始运动捕捉数据的一系列回放,没有合成新的运动。为了实现良好的插值和良好的过渡,已经提出了通过插值同一类别/过渡的运动来增强运动图方法的方法[Heck和Gleicher 2007; Min和Chai 2012; Safonova和Hodgins 2007; Shin和Oh 2006]。这些方法需要大量的数据预处理,其中相同类型的运动需要沿着时间轴对齐,而且在大多数情况下,它们需要手动调整。
图的离散性引入了一些缺点,如对用户指令的快速变化或意外干扰的反应缓慢,或难以从任意状态开始。连续表示法已经被引入以应对这些问题。运动场[Lee等人,2010]在人类运动的高维矢量场中对一个姿势进行采样后搜索最近的邻居,并对它们进行插值以更新状态。强化学习被应用于构建一个控制器,输出跟随用户控制信号的动作。Levine等人[2012]从运动数据中构建了一个潜在的空间,这为强化学习降低了维度。Cho等人[2021]应用VQ-VAE[Oord等人2017]对动作和状态进行聚类,以降低强化学习的成本。运动匹配[Clavet 2016]遵循运动场[Lee等人,2010]的想法,但只是挑选与当前状态相匹配的最近的邻居片段,并遵循用户指令。这允许更灵活的转换,并提高了角色的反应能力。Lee等人[2021b]使用运动匹配产生的数据集训练一个学生策略,以生成一个时间关键的策略。我们的方法计算出的低维特征可以应用于运动匹配,也有可能用于强化学习。
图的离散性引入了一些缺点,如对用户指令的快速变化或意外干扰的反应缓慢,或难以从任意状态开始。连续表示法已经被引入以应对这些问题。运动场[Lee等人,2010]在人类运动的高维矢量场中对一个姿势进行采样后搜索最近的邻居,并对它们进行插值以更新状态。强化学习被应用于构建一个控制器,输出跟随用户控制信号的动作。Levine等人[2012]从运动数据中构建了一个潜在的空间,这为强化学习降低了维度。Cho等人[2021]应用VQ-VAE[Oord等人2017]对动作和状态进行聚类,以降低强化学习的成本。运动匹配[Clavet 2016]遵循运动场[Lee等人,2010]的想法,但只是挑选与当前状态相匹配的最近的邻居片段,并遵循用户指令。这允许更灵活的转换,并提高了角色的反应能力。Lee等人[2021b]使用运动匹配产生的数据集训练一个学生策略,以生成一个时间关键的策略。我们的方法计算出的低维特征可以应用于运动匹配,也有可能用于强化学习。
旨在改善运动沿时间轴排列的方法流之一涉及提供描述运动进展的相位变量。相位功能神经网络(PFNN)[Holden等人,2017]根据双足运动中的脚地接触定义的相位变量来调节网络权重。这种因子化使数据集中的每一帧运动都保持一致,并允许在不同类型的运动中的任意帧之间平滑过渡。Starke等人[2019]将这一概念扩展到其他类别的运动中,如搬运物体、坐在椅子上和开门。由于为涉及多次接触的复杂运动(如运球)提供一个全局相位标签是困难的,Starke等人[2020]提议为每个肢体提供局部相位。另一方面,这种方法只适用于涉及接触的运动,许多运动如舞蹈或不同风格的行走不包含手的接触,如何为这类运动定义相位一直是个问题。基于接触的相位的另一个挑战是,它们需要仔细调整计算相位标签的阈值。Mason等人[2022]使用PCA启发式来计算运动过程中手臂循环运动的局部相位,尽管对于任意运动需要不同的启发式。相反,在这项研究中,我们提出了一个架构,从任意的非结构化运动捕捉数据中学习多维相位变量。
另一个正在积极研究的课题是基于物理的运动跟踪[Bergamin等人,2019;Fussell等人,2021;Lee等人,2021a;Luo等人,2020;Merel等人,2020;Park等人,2019;Peng等人,2018,2016,2017;Won等人,2020] 。这些方法通过计算产生与运动学参考运动相似的运动的扭矩,为跟踪运动学运动捕捉数据提供解决方案。由于物理学上的限制,例如在受到外力干扰的情况下保持平衡,一小部分运动学运动可以产生很大的运动变化。众所周知,相位输入对于这样的设置也是有效的[Peng等人,2018]。也有人提出用GAN模型来合成物理域中的运动[Ho and Ermon 2016; Peng et al. 2021],尽管它们可能受到域塌陷的影响,这抑制了它们应用于广泛的运动。我们的目标是利用运动模型本身而不是依靠物理学来覆盖广泛的运动空间。本研究中开发的技术也可用于合成基于物理学的跟踪的参考运动。
频域中的运动合成。最后,我们回顾一下在频域中表示运动的方法,因为我们也预测运动的频谱参数。频域方法已被提出用于运动合成[Liu等人,1994]、编辑[Bruderlin和Williams,1995]、风格化[Unuma等人,1995;Yumer和Mitra 2016]和压缩[Beaudoin等人,2007]。这些方法大多将编辑应用于每个自由度,并不计算代表身体不同部分的相关性的特征。我们在这项研究中的想法是使用编码器构建一个潜伏空间,然后应用频域转换作为归纳偏置。通过应用我们的方法,我们可以提取代表全身运动的周期性潜在参数。
3. 周期性自动编码器
在这一节中,我们描述了周期性自动编码器的结构,该编码器从原始运动数据中计算出周期性潜伏向量,形成相位流形。我们首先描述网络的结构,然后是网络形成的相位流形,最后是网络的训练过程。
3.1 网络结构
为了将运动空间转化为学习的相位流形,我们利用了与Holden等人[2015]类似的时间卷积自动编码器架构结构。然而,除了训练模型以重建输入外,我们还强制要求潜伏空间的每个通道以周期函数的形式存在,这使得我们能够从一小部分参数中为每个潜伏通道学习一个相位变量。我们的网络结构如图2所示。时间数据被划分为长度为𝑁的重叠窗口,并有相应的中心时间窗口T。1(我们在一个居中的时间窗口内收集𝑁个均匀间隔的数据样本 [ − t 1 − t 0 2 , − t 1 − t 0 2 + t 1 − t 0 N − 1 , − t 1 − t 0 2 + 2 ( t 1 − t 0 ) N − 1 , … , t 1 − t 0 2 ] \left[-\frac{t_{1}-t_{0}}{2},-\frac{t_{1}-t_{0}}{2}+\frac{t_{1}-t_{0}}{N-1},-\frac{t_{1}-t_{0}}{2}+\frac{2\left(t_{1}-t_{0}\right)}{N-1}, \ldots, \frac{t_{1}-t_{0}}{2}\right] [−2t1−t0,−2t1−t0+N−1t1−t0,−2t1−t0+N−12(t1−t0),…,2t1−t0], where t 0 ≤ t ≤ t 1 t_{0} \leq t \leq t_{1} t0≤t≤t1)
鉴于输入的运动曲线, X ∈ R D × N \mathbf{X} \in \mathbb{R}^{D \times N} X∈RD×N,其中𝐷是身体的自由度,𝑁是X的帧数,我们训练一个编码器,𝑔,它使用1𝐷卷积来学习运动的低维嵌入。
L = g ( X ) \mathbf{L}=g(\mathbf{X}) L=g(X)
L ∈ R M × N \mathbf{L} \in \mathbb{R}^{M \times N} L∈RM×N,其中𝑀是隐通道的数量,即要从运动中提取的期望相位通道数量。
我们通过将L中的每条潜伏曲线参数化为一个正弦函数,由振幅(A)、频率(F)、偏移(B)和相移(S)参数定义,来强制实现周期性。为了计算A、F、B∈R𝑀,我们使用一个可微分的实数快速傅里叶变换(FFT)层。我们将FFT应用于L的每个通道,并创建傅里叶系数的零指数矩阵 c ∈ C M × K + 1 , K = ⌊ N 2 ⌋ \mathbf{c} \in \mathbb{C}^{M \times K+1}, K=\left\lfloor\frac{N}{2}\right\rfloor c∈CM×K+1,K=⌊2N⌋,然后应用逐元运算来计算每通道功率谱 p ∈ R M × K + 1 \mathbf{p} \in \mathbb{R}^{M \times K+1} p∈RM×K+1。
c = F F T ( L ) , p i , j = 2 N ∣ c i , j ∣ 2 \mathbf{c}=F F T(\mathbf{L}), \quad \mathbf{p}_{i, j}=\frac{2}{N}\left|\mathbf{c}_{i, j}\right|^{2} c=FFT(L),pi,j=N2∣ci,j∣2
其中𝑖是信道指数,𝑗是频带的指数。然后,相应的参数由以下公式给出
A i = 2 N ∑ j = 1 K p i , j , F i = ∑ j = 1 K ( f j ⋅ p i , j ) ∑ j = 1 K p i , j , B i = c i , 0 N \mathbf{A}_{i}=\sqrt{\frac{2}{N} \sum_{j=1}^{K} \mathbf{p}_{i, j},} \quad \mathbf{F}_{i}=\frac{\sum_{j=1}^{K}\left(\mathbf{f}_{j} \cdot \mathbf{p}_{i, j}\right)}{\sum_{j=1}^{K} \mathbf{p}_{i, j}}, \quad \mathbf{B}_{i}=\frac{\mathbf{c}_{i, 0}}{N} Ai=N2j=1∑Kpi,j,Fi=∑j=1Kpi,j∑j=1K(fj⋅pi,j),Bi=Nci,0
其中 f = ( 0 , 1 / T , 2 / T , … , K / T ) \mathbf{f}=(0,1 / T, 2 / T, \ldots, K / T) f=(0,1/T,2/T,…,K/T)是一个频率矢量。这些操作提供了在时间窗口内构建𝑀周期函数的形状参数,但还不包括时序,也就是函数的相移。为了获得这个时序参数,我们为每条潜伏曲线学习一个单独的全连接(FC)层,该层只通过一个中间的二维向量预测T的中心帧的有符号相移S∈R𝑀。
( s x , s y ) = F C ( L i ) , S i = atan 2 ( s y , s x ) \left(s_{x}, s_{y}\right)=F C\left(\mathbf{L}_{i}\right), \quad \mathrm{S}_{i}=\operatorname{atan} 2\left(s_{y}, s_{x}\right) (sx,sy)=FC(Li),Si=atan2(sy,sx)
其中𝑖是通道指数。
从学到的参数F、A、B和S,以及已知的时间窗口T,有可能以多个周期函数的形式重建一个参数化的潜在空间ˆ L,该空间的形状维度与使用参数化函数𝑓的原始潜在嵌入相同。
L ^ = f ( T ; A , F , B , S ) = A ⋅ sin ( 2 π ⋅ ( F ⋅ T − S ) ) + B \hat{\mathrm{L}}=f(\mathcal{T} ; \mathrm{A}, \mathrm{F}, \mathrm{B}, \mathrm{S})=\mathrm{A} \cdot \sin (2 \pi \cdot(\mathrm{F} \cdot \mathcal{T}-\mathrm{S}))+\mathrm{B} L^=f(T;A,F,B,S)=A⋅sin(2π⋅(F⋅T−S))+B
最后,网络使用解码器中的1𝐷解旋对参数化的潜在空间进行解码,ℎ,以映射回原始输入运动曲线。
Y = h ( L ^ ) \mathrm{Y}=h(\hat{\mathrm{L}}) Y=h(L^)
该网络使用原始和预测的运动曲线之间的重建损失来训练。
L = M S E ( X , Y ) \mathcal{L}=M S E(\mathrm{X}, \mathrm{Y}) L=MSE(X,Y)
这促使网络学习不同运动片段中姿势的时间排列,并以单向的方式为每一帧新的运动分配一个变化的相位。为了了解原因,请考虑一个以𝑡帧为中心的运动窗口,从某个较长的运动片段中提取并编码以创建L。参数A、F和B限制了周期性信号的形状,网络必须学习使用S来正确定位曲线。对于从同一运动片段中提取的、以第19+1帧为中心的运动窗口,我们预计A、F和B的任何变化都会非常小(见图3),所以𝑆需要进步,以保持潜伏空间与运动对齐,因为使用的是同一个卷积解码器。也就是说,该模型实际上必须学会预测以顺时针方向旋转的二维矢量,以改变周期性嵌入的值,它需要从中重建输入曲线。
构建相位流形的另一种可能是直接通过网络学习周期性参数,而不是使用FFT层:我们对此进行了实验,但不仅是相位参数,振幅和频率也会随着时间的推移而大量振荡,导致相位流形的噪声非常大。学习信号向频域的转换似乎并不容易,而使用FFT层可以显著稳定学习过程。
3.2 相位流形
我们现在描述一下如何利用周期性自动编码器计算的周期性潜变量形成相位流形。
在网络训练之后,非结构化运动数据集的周期性参数可以通过将周期性自动编码器沿着运动曲线移动来计算每一帧。周期性参数代表了潜变量的局部周期性:利用这些参数,我们形成了一个维度为 R 2 M \mathbb{R}^{2 M} R2M的相位流形 P \mathcal{P} P,其中帧𝑡的样本计算方法为
P 2 i − 1 ( t ) = A i ( t ) ⋅ sin ( 2 π ⋅ S i ( t ) ) , P 2 i ( t ) = A i ( t ) ⋅ cos ( 2 π ⋅ S i ( t ) ) \mathcal{P}_{2 i-1}^{(t)}=\mathrm{A}_{i}^{(t)} \cdot \sin \left(2 \pi \cdot \mathrm{S}_{i}^{(t)}\right), \quad \mathcal{P}_{2 i}^{(t)}=\mathrm{A}_{i}^{(t)} \cdot \cos \left(2 \pi \cdot \mathrm{S}_{i}^{(t)}\right) P2i−1(t)=Ai(t)⋅sin(2π⋅Si(t)),P2i(t)=Ai(t)⋅cos(2π⋅Si(t))
P中的特征很好地描述了输入运动X中的帧的时间,并大大有助于在同一类别中或不同类别的运动之间的对齐。这意味着它们可以有效地作为神经运动合成或运动匹配的输入特征,我们将在第四节和第五节介绍这种用法和结果。图3显示了在一个短的时间窗口内,十个通道的相位变量。可以看出,每个通道学习了不同频率的特征,这对应于不同的运动速度。我们在图4中绘制了每个通道的振幅和频率的分布。我们可以观察到,每个相位通道都学会了在整个运动中提取不同范围的振幅和频率值。该系统可以对运动的各种细节或模式进行编码,这对时间上的协调是很有用的。
给定一个运动序列,周期性特征在相位流形上平滑地移动。由于每个相位通道的振幅和频率可以随时间变化,周期性自动编码器可以对非周期性运动以及周期性运动进行编码,例如从一种类型的运动过渡到另一种。这种非周期性的过渡或运动行为可以以不同通道的振幅增加或减少的形式被观察到(例如,人在行走时开始挥手),或者相移或频率的非同步变化(例如,四足动物在步伐和小跑之间的过渡)。图5展示了这样的例子,在整个运动片段中,相位可以表现出循环或非循环的模式。
之所以在公式(8)中定义相位流形,而不是单独使用频率、振幅和相位等所有参数,是因为我们希望相位特征能够在空间和时间上对动画进行分类。诸如频率和振幅之类的特征随着时间的推移保持近乎恒定,并不能很好地帮助实现对齐目的。使用公式(8)将它们转化为超球形空间,就可以实现这样的时空对准,其中A和S定义了该空间中的点,F可以用这些点的窗口来表示。这种转换也构建了一个连续的插值空间。虽然一维相位值是不连续的,如果不进行运动,可能会变得不确定,但将其编码为二维矢量,可以在零振幅时过渡到流形的原点。
3.3 网络训练
为了训练周期性自动编码器,我们使用三维关节速度轨迹作为网络的输入,每条轨迹都被转换为角色的根空间[Holden等人,2017]。我们减去一个基于窗口的平均值,使运动曲线居中,但不应用任何标准差缩放,以保持相对差异。输入的数据涵盖了过去和未来各60帧(1秒),围绕中心帧的60赫兹帧率。这就构建了一个输入向量𝑋∈R3-𝐽×𝑁,其中J是角色关节的数量,𝑁(=121)是时间样本的数量。
对于编码器𝑔,我们使用两个卷积层,产生一个映射(3-𝐽×𝑁)→(𝐽×𝑁)→(𝑀×𝑁),以计算运动曲线嵌入。每次卷积后都要进行批量归一化和tanh激活函数。由于我们直接对潜空间进行操作以提取周期性参数,我们观察到批量归一化大大有助于稳定这一任务的训练,并有助于防止潜空间分布衰减或模型在训练时间过长时出现过度拟合。在计算其带符号的角度之前,我们进一步对预测的相移向量进行批量归一化。解码器ℎ再次涉及两个卷积层来计算映射(𝑀 × 𝑁 )→(𝐽 × 𝑁 )→(3 - 𝐽 × 𝑁 ),但批归一化和tanh激活只在第一次解卷后应用,不用于输出层。我们使用AdamW优化器[Loshchilov and Hutter 2019]对我们的网络进行了30个epochs的训练,使用的学习率和权重衰减都是10-4,批次大小为32。使用NVIDIA RTX 3080 GPU进行训练,对于较小的数据集(1小时以内的运动数据和24个人物关节),通常需要不到一个小时,但如果数据集或关节数量变大,则可能需要更长时间。对于相位通道的数量,我们观察到,根据数据中运动的多样性,通常5-10个就足够了。虽然对于常规的双足运动来说,5个或更少的相位就足够了,但更多的相位变量对于准确模拟更复杂的运动是有用的,比如舞蹈、四足动物或大范围内的不同风格的运动。在我们的实验中,它们被设定为5个(双足、四足运动)、10个(风格)、8个(舞蹈)和6个(足球)。
4. 运动控制器
我们证明了学习到的相位变量对两个不同的角色控制框架的有效性:神经网络和运动匹配。
4.1 神经运动控制器
对于基于神经网络的控制器,我们开发了一个时间序列模型,在给定前一帧和当前用户控制的情况下预测当前帧的姿势。该模型是以监督的方式使用运动捕捉数据进行训练的。我们使用类似于[Starke等人,2020;Zhang等人,2018]的Weight-Blended Mixture-of-Experts框架,但我们没有使用速度或基于接触的局部相位作为门控网络的输入,而是使用相位流形(即公式(8))上的相位向量作为输入特征,以自回归的方式产生运动。给予相位特征作为输入有助于系统沿时间轴对齐运动数据,并允许角色在运动之间真实地过渡,正如我们在第5节所介绍的那样。
系统自回归地更新人物的相位状态以及运动。系统首先预测下一个相位向量 P t + Δ t \mathcal{P}_{t+\Delta t} Pt+Δt,振幅𝐴𝑡+Δ𝑡和频率𝐹𝑡+Δ𝑡。而不是直接使用预测的相位向量,而是按如下方式更新。
P t + Δ t ′ = A t + Δ t ⋅ I ( R ( θ ) ⋅ P t , P t + Δ t ) , θ = Δ t ⋅ 2 π ⋅ F t + Δ t \mathcal{P}_{t+\Delta t}^{\prime}=A_{t+\Delta t} \cdot I\left(R(\theta) \cdot \mathcal{P}_{t}, \mathcal{P}_{t+\Delta t}\right), \quad \theta=\Delta t \cdot 2 \pi \cdot F_{t+\Delta t} Pt+Δt′=At+Δt⋅I(R(θ)⋅Pt,Pt+Δt),θ=Δt⋅2π⋅Ft+Δt
其中,Δ𝑡是帧delta时间,𝑅是二维旋转矩阵,𝐼是权重为0.5的球形线性插值,以便能够分别混合相位角和幅值。以这种方式更新相位,使频率按神经网络直接预测的方向推进相位。频率是一个统一的正值,很容易预测,并使网络以单方向的方式穿越相位空间(见图6)。这个方案可以防止运动出现僵硬或在时间上卡住,这是数据驱动的角色控制器中观察到的一个常见问题。
专家门控网络学习混合8组专家权重,由两个大小为128的隐藏层组成。运动生成网络使用两个大小为512的隐藏层。辍学率被设置为0.3,批次大小为32,学习率和权重衰减都被初始化为10-4。我们使用AdamWR优化器[Loshchilov和Hutter 2019]与余弦退火暖重启调度,并将其重启迭代次数设置为10,重启系数为2.0,并训练模型150次epoch。训练每个模型需要12到48小时。该网络在PyTorch中实现,并生成一个ONNX文件,可以在Unity中运行,使用其Barracuda库进行推理。
4.2 运动匹配
在运动匹配的背景下,相位可以以类似于神经网络的方式使用,不需要改变运动匹配的典型工作流程。关键的区别是,系统不是匹配当前角色状态的高维姿势或速度特征,而是匹配低维相位向量,以搜索下一帧的姿势,给定用户控制信号,如根轨迹。我们在图6中直观地展示了不同运动的相位特征和速度特征(详见5.1节)。相位空间中彼此相邻的点之间的欧氏距离是均匀的(底行),这意味着通过运动匹配的姿势在时间上会有相似的差异。这样就可以用较少的参数调整来合成更平滑、更真实的运动转换,而在匹配笛卡尔姿势特征(上行)时就不容易做到这一点,因为这些特征需要为特定的关节(如运动的脚)手工挑选或需要额外的过滤。
5 实验和评估
在本节中,我们展示了我们的实验结果,我们使用周期性自动编码器计算相位流形,并使用各种运动捕捉数据集生成运动(见表1)。我们首先将学到的相位流形可视化,并与使用现有方法学到的相位流形进行比较。接下来我们介绍了用我们的神经网络框架进行实时运动合成的结果。最后,我们对我们的结果进行了定量评估,并使用运动匹配作为测试平台进行了系统评估。
5.1 学习到的相位流形
如第3节所述,在计算每个数据集的相位流形后,我们计算相位特征的主成分(PC),将其投影到二维平面上(见图6底部)。为了进行比较,我们通过用完全连接的层替换相位层来计算嵌入,并在计算完它们的PC后同样将它们投射到一个二维平面上(见图6中)。最后,我们还绘制了原始关节速度的PC(见图6顶部)。在这些图中,同一运动片段的所有样本都被赋予相同的颜色,这意味着运动数据中相邻的帧在嵌入中应该是紧密相连的。可以看出,相位流形有一个类似于极坐标的一致结构。周期代表了各个运动的主要周期,其中时间由围绕中心的角度表示,振幅为运动的速度。此外,样本在不同振幅或频率的周期之间平滑过渡,这表明运动之间的过渡点。
我们在图7中强调了双足运动和舞蹈运动的2D投影的较短序列。这进一步阐明了类似运动状态的分割。完全连接层的嵌入产生的周期看起来结构性较差,而我们的方法产生的周期则彼此相邻。由原始速度产生的循环产生的分布,样本分布在二维平面上的随机位置。这表明,与原始运动空间或全连接嵌入相比,角色的运动和转换可以在相位空间中得到更好的表示,对于相位空间来说,即使是像常规人类运动这样的简单运动也可能在特征空间中表现出困难的路径。
最后,图8显示了双足行走、风格化多周期行走和舞蹈运动的三维可视化结果。虽然双足行走只有一个单调的周期,但风格化行走的多周期周期是可见的:在这种行走方式中,手臂移动得更快,其周期在垂直波中被捕获。舞蹈运动是由多个具有不同频率的子周期组成的。这导致各种方向的周期相互重叠。
5.2 神经网络的运动合成
我们介绍了使用第4节中描述的神经网络框架创建的动画结果。读者可参考补充视频了解详情。这里我们主要将我们的结果与PFNN[Holden等人,2017]、MANN[Zhang等人,2018]和LMP[Starke等人,2020]的结果进行比较。
运动。我们的系统能够产生一系列的双足运动动作(见图9,顶部)。与PFNN或LMP相比,在查看非常急转弯和敏捷的运动时,差异是最明显的。所提出的框架使更多的动量和重力能够在上半身看到,因为提取的相位特征包含了使上半身运动和下半身运动一致的信息。特别是,PFNN和LMP的相位是根据脚的接触来计算的,这可能会导致上半身的运动变得模糊,特别是当这种变化包含在数据中的时候。我们的系统还可以产生质量更好的从低频到高频的平滑过渡(见图10,右),因为相位流形中的特征过渡结构更好(对应于图7中从外循环到内循环的过渡)。
我们的系统在合成高质量的四足运动模式方面也非常好(见图9,底部)。与MANN或LMP相比,运动中的尾巴运动更加活跃,因为这些模型没有考虑尾巴的周期性(见图10,左)。特别是在站立期间,当没有控制输入时,角色的整个身体趋于僵硬(也见第5.3节,表2),而学习到的相位流形使尾巴和身体的运动不断进步。我们观察到,至少有一个相位变量学会了主要负责尾巴的运动,其周期与身体其他部位的相位不同。
风格化的运动。我们使用Mason等人[2022]的运动数据,用20个风格化的运动来训练我们的模型。这些动作涵盖了各种不同的风格化运动行为,特别是那些手臂与腿部不同周期的运动(见图11)。与LMP相比,由于LMP只根据接触来计算局部相位,因此手臂的运动明显更清晰,身体的重力得到了更好的保留。如果没有能力调整各种运动,接触相当稀少,上半身的肢体往往会变得僵硬(见图12,底部)。我们的结果与Mason等人[2022]的表现相似,然而,他们计算每个肢体或运动类型的局部相位的方法是为他们的特定运动数据集设计的。请注意,他们使用脚与地面的接触和PCA启发式函数来计算腿部相位,或者在无接触的脚部运动(如跳动)中计算。这需要额外的标记,而我们的方法是纯粹使用运动来计算相位。
舞蹈动作合成。为了让角色根据不同的音乐片段跳舞,我们训练了神经网络模型,其中音调和节奏的音乐特征(旋律频谱、旋律频率倒频谱系数、频谱通量、色度、节拍、零交叉),类似于Valle-Pérez等人[2021]的设置,被作为控制信号,根据这些信号以自回归的方式预测角色的运动和轨迹。我们的模型为手臂和腿产生生动的运动,与音乐同步(见图13)。训练过的系统对与训练音乐数据不同的测试音乐片段具有概括性:在这种情况下,其音乐特征与测试集最接近的舞蹈风格似乎被选中并适应了音乐及其节拍。我们还观察到,在舞蹈过程中随机切换音乐片段时,该模型选择了正确的转换时机,并产生了数据之外的适当的身体动作。相比之下,基线不能准确地重建数据集中多样化的舞蹈编排,并可能失去与音乐的时间对齐,导致运动变得僵硬。(见图12,顶部)。当视觉上将我们的结果与MoGlow[Henter等人,2020]、Transflower[VallePérez等人,2021]和AI Choreographer[Li等人,2021]的结果进行比较时,我们的系统产生了更平滑和稳定的动作(见补充视频)。虽然Transflower的运动由于在潜伏空间中的随机采样而显得很有创意,但这些运动是有噪音的,而且有抽搐感,在支撑阶段,脚经常在地面上滑动。
足球运球。我们最后用足球运球来测试我们的模型,在足球运球中,球相对于脚的行为是不同的。足球运动员也会进行各种不同频率的脚步运动,特别是在带球转身时的急转弯。在运行过程中,球与脚分离后,利用物理学原理进行控制,因此在训练中看不到运动。当球在人物根部或脚部周围的小范围内时,基于物理学的球速与网络预测的球速进行插值。尽管在这样艰难的条件下,角色在快节奏的运动中必须与外部物体保持一致,但系统还是相应地预测了角色的运动,以一种合理的方式继续运球(见图14)。与之前的结果一样,该系统没有提供任何接触信息,但仍然产生了身体和物体之间的真实互动。
5.3 评估
在本节中,我们首先进一步评估利用神经网络的结果。我们还通过应用相位变量进行运动匹配来评估相位变量的特征。
用神经网络评价运动。在这里,我们评估了运动的生动性和脚部滑行的假象。为了评估生动性,我们计算了每秒的平均关节旋转次数(见表2)。通常的情况是,由于在错误的时间内混合了不同的运动,由神经网络产生的运动是模糊的。通过使用相位变量作为特征,可以减少这种假象;可以看到,与基线相比,拟议的方法可以合成每秒有更多运动的运动。
我们接下来评估脚部滑行的假象(见表3)。首先,计算每组运动中脚部接触状态下的最大脚速(𝑣𝑚𝑎𝑥),然后计算推理过程中每个接触状态下的脚速(𝑣)并除以𝑣𝑚𝑎𝑥。最后,我们评估所有收集到的样本中的平均𝑣𝑣𝑚𝑎𝑥。基线使用脚部接触标签进行训练,但仍然可以混合不同姿势的运动,这在运行期间产生脚部滑行的伪影。由于我们的方法在空间和时间上都对准了运动,即使我们不提供脚部接触标签作为输入,大多数数据集的脚部滑移量也会减少。
相位特征度量的评估。我们现在通过将其作为运动匹配的距离函数来检验基于相位特征的度量。运动匹配将当前姿势与数据库中的姿势相匹配,用距离函数选择下一个运动片段。运动数据的KD树结构是根据状态向量和距离函数预先计算出来的。在运行期间,选择与当前姿势和控制信号相匹配的𝑘近邻,并进一步过滤以选择最佳的下一个片段。一个简单的方法是使用基于所有关节位置和速度的距离函数;由于状态向量是高维的,这需要大量内存,而且速度很慢。因此,开发者通常使用一个关节子集来定义状态向量。例如,对于运动来说,距离是脚和脊柱位置/velocities的组合,而对于舞蹈等运动来说,需要一个同时考虑手部位置/velocities的距离[Mach and Zhuravlov 2021]。
我们比较了使用基于相位特征的状态矢量/距离函数与基于关节位置/velocities子集的距离函数和全集的效果。我们首先考察了当给定当前姿势数据的特征作为输入时,运动捕捉数据中的下一个姿势将如何被索引(见图15,左),理想情况下应该是在第一个索引。尽管相位特征的维度很低,但下一个姿势的索引总是接近于当前姿势,同时也有效地缩减了特征数据库所需的内存成本。完整的状态和减少的状态向量不能总是将下一个姿势索引到靠近当前姿势的地方–这也解释了需要对运动进行进一步过滤以找到下一个合适的片段。
接下来我们研究这种索引是如何延伸到未来帧的。我们从身体的当前状态计算运动捕捉数据中实际未来帧的索引。在这种情况下,对于相位特征,我们首先通过使用当前状态下的频率和类似于公式(9)的从当前帧到未来帧的delta时间来推断未来的相位状态,但不改变其振幅。对于减少的和完整的原始状态向量,我们使用当前帧的位置和速度向量进行查询,但不将速度外推到未来,因为这将产生更坏的结果,特别是对于更遥远的未来帧。因此,与原始运动空间相比,将当前帧外推到未来的能力可以被认为是我们相位流形的一个独特属性。这种准确预测未来状态的功能支持了我们方法的稳健性,并且在与其他角色互动、规划过渡或计算指导肢体运动的IK偏移时,可以进一步发挥其作用。
最后,我们将基于接触标签的相位特征[Starke等人,2020]、启发式局部相位[Mason等人,2022]和我们的方法计算出的𝑘近邻姿势可视化(见图16和补充视频)。由于其他方法只计算基于脚部接触标签的相位特征和手部速度的主成分,在搜索最近的邻居时不考虑姿势本身的相似性。从图16和表4可以看出,我们的方法可以在数据集中找到腿部配置与查询姿势比较相似的姿势。事实上,我们的方法也不使用姿势信息,而是通过我们的方法压缩的长窗口的速度信息能够更好地匹配姿势。其他方法的变化较大,不仅在运动匹配中,而且对神经网络也会造成更多的溜脚,因为系统会倾向于混合具有相似状态向量的姿势(见表3)。请注意,相位特征的最近邻居在时间上也比较相似(见补充视频)。尽管带有动态时间扭曲的原始关节位置/速度[Kovar and Gleicher 2004]可以很好地对齐运动,但向量的维度要高得多,计算起来也很费劲。因此,这不适合用于实时运动匹配,也不适合在基于神经网络的系统的训练循环中使用。
6. 讨论
本文介绍的学习相位特征继承了Holden等人[2017]介绍的相位结构的各种特征,并由Starke等人[2020]进一步加强,其中包括单向性和运动对齐。单向性是通过相位的增量性质引入的。这一特性减少了系统将以前的帧作为当前帧的邻居进行匹配的机会,这有助于避免运动可能出现僵硬的伪影(见图17)。事实上,在可视化各种运动中每一帧之间的L2距离时,只有在使用相位特征时,时间增加的方向上,姿势的相似性才是明显的,而位置/速度特征则不是这样的(见图18)。另外,所提出的方法不仅可以对运动或接触密集的互动进行对齐,还可以对肢体以异步方式或不规则模式运动的复杂全身运动进行对齐。这比局部运动相位[Starke等人,2020]需要接触来定义相位,或Mason等人[2022]基于单个运动来定义局部相位,都是一种改进(见图16)。
周期性自动编码器的相位通道数量是一个超参数,其最佳数量可能取决于用于训练的数据量和数据集中包含的运动类型的变化。虽然低数量的通道可能会不正确地混合具有不同局部时间的运动,但增加通道的数量可能会在应用方面造成问题。虽然这不太可能成为运动匹配的问题,但在用于运动合成的门控网络中拥有大量的输入将减少门控网络对每个群组进行细分的样本数量;这可能导致运动之间的转换减少。此外,虽然没有直接控制哪个相位成为哪个特定身体区域或运动类型的专用相位,但系统正在学习身体不同部位在不同相位通道中的代表性协调。当不同的身体部位在不同的相位周期中运动时,这种相位周期可以被成功提取出来,如图8所示。同样,对于狗的运动,可以成功地提取专门针对尾巴的相位参数(见补充视频)。
我们的相位特征和使用变换器的位置编码[Vaswani等人2017]有一个共同点,即都使用多分辨率的正弦波函数。Vaswani等人和其他人的位置编码[Devlin等人,2019]只编码单词的位置,而我们学习的空间-时间嵌入则通过学习结合位置(时间)和身体姿势(空间)信息来表示整个运动。因此,我们的相位特征在表示上要丰富得多,可以应用于运动对齐和匹配等任务,而位置编码需要与语义嵌入相结合才能应用于复杂任务。除了将周期性参数转化为相位流形之外,这些参数的一个潜在的直接用途是用于运动风格化,其中参数可以作为特征向量,而不是使用单热表示法来描述运动风格。
7. 局限性
我们来自音乐的舞蹈动作合成系统并不能推广到任意的音乐;虽然它有助于找到输入音乐和相应的舞蹈动作数据的良好匹配,但它本身并不具备结合新的音乐的舞蹈动作的功能,例如在Transflower[Valle-Pérez等人,2021]。事实上,它需要与合适的模型相结合,这些模型可以学习音乐的背景以及它与运动的映射,以便更好地概括新的音乐。
虽然学习到的相位流形有效地对运动进行了聚类,并缩小了从一帧到下一帧的可能过渡的数量,但它并没有解决关于生成哪种运动技能的模糊问题。仍然需要提供用户控制或概率技术来从学习的分布中取样。
8. 结论和未来工作
在本文中,我们提出了一个周期性自动编码器,它可以学习相位特征来对齐高维非结构化运动数据。该系统产生一个称为相位流形的低维潜在空间。该系统有效地学习了具有不同振幅和频率的运动特征,这些特征很好地代表了身体运动的周期性,并通过学习的相位参数学习其相应的时间。我们表明,学习到的特征可以大大改善由数据驱动的框架(如运动匹配和神经网络)合成的运动质量。
我们为每个数据集和用途从头开始训练周期性自动编码器。它有可能在一个大型的异质数据集上进行训练,作为一个预训练的模型,通过多个相位变量来计算未见过的人物动作的运动对齐。
虽然我们的应用是针对实时角色控制的运动合成,但周期性自动编码器框架有可能被应用于其他模式的数据,如视频、声音或语音数据。