IJCAI 2018 Long-Term Human Motion Prediction by Modeling Motion Context and Enhancing Motion Dynamic
论文: Long-Term Human Motion Prediction by Modeling Motion Context and Enhancing Motion Dynamic
论文地址: https://arxiv.org/pdf/1805.02513.pdf
作者针对很多模型长期预测方面的不足,提出了一种新的模型改进人体运动的长期预测。通过motion context总结之前所有的mocap数据,为长期预测提供更丰富观测到的证据。此外,作者的模型具有能根据行动命令改变运动类型之后继续生成预测值的能力,不再限制于预测一个序列只存在一种类型的运动。
Table of Contents(目录)
Background (论文背景)
LSTM & GRU
作者提到在很多模型里RNN结构中选用了LSTM或者GRU,虽然它们的应用是为了得到历史信息,尤其是长期的,但是由于RNN的结构需要不断encode然后更新hidden state,当前时间点的input将会大幅改变hidden state从而发生信息的丢失。在长期预测中,会导致mean pose的问题。如图中LSTM-3LR以及Res-GRU的预测值。
Modified Highway Unit (MHU)
作者发现大多模型对于mocap数据中所有的人体关节结点作为整体被对待,但是实际上并非所有关节都参与了某种运动。所以作者提出了MHU单元,通过gate在每次生成预测值时过滤掉静止的关节结点。将在Methodology中详细说明。
Gram Matrix Loss
作者提出为了能更好的训练模型对于运动动态的敏感度以及能生成在时间上相关性很高的预测值,选用了gram matrix loss。也将在Methodology中详细说明。
Methodology(实现方法)
Network Structure(模型结构)
模型总体分为两层:Skeleton Embedding Layer和Recurrent Prediction Layer,总体也是encoder-decoder的结构。
Skeleton Embedding Layer
这层layer的作用在于encode,将mocap数据encode得到semantic space yielding。,
,
。
Recurrent Prediction Layer
先前提到,当前时间点的input将会大幅改变hidden state从而发生信息的丢失,作者对其在decoder中做了改变,加入了Temporal Attention。具体通过累加encoder层的输出,并给每次乘以参数,参数随着时间递减,从而避免了input大幅改变hidden state的情况,尽可能多的保留历史信息。对应了图中temporal attention模块,具体实现方法如下:
,
,
就是motion context,是对历史mocap数据的总结,不是单纯的RNN不断更新hidden state,而是对于encode之后的输出进行含参数的累加,尽可能地保留了时间久远的信息。
除了temporal attention,作者还提出了MHU来过滤静态的结点。对应了图中MHU模块,具体实现如下:
,
,
其中是[0,1]的值,是预测值前一帧,即当前值的gate,
是预测的下一帧的关节。
Training(训练)
传统的MSE方法,将每一帧的运动分开计算loss,这可能会造成运动的前后不连续。所以作者提出通过最小化gram matrix loss来训练模型。
其中为gram matrix,
。gram matrix可以捕捉mocap数据在空间上的相关性,而时间上的动态变化由
和
的相关性捕捉。
Experiments(实验)
Experiments detail(实验细节)
- MHU选用1024units
- 每次输入为30帧,预测值为10帧
- SGD with momentum 系数为0.9
- learning rate为0.05
- 10,000次循环的decay factor为0.95
- batch-size为80
Experiments results(实验结论)
根据实验结果,作者的模型在短期和长期预测上都有较好的表现。
在运动转换情况下的预测也有较好的表现,但是针对有些运动,例如照相等具有很高不确定性的动作,无法预测出真实值。
Summary(总结)
- 作者提出的模型第一个重点在于保留时间上久远的信息,不让新的input不断大幅改变hidden state导致信息丢失。通过temporal attention,不断累加encoder的输出,在累加之前乘以一个随时间变小的参数。而不断累加的结果就是motion context,尽可能的保留了时间跨度大的信息。
- 第二个重点在于过滤了于该运动类型不相关的结点,这样更为高效,并且更加适用于动作大的运动。