CVPR 2022 最佳论文候选|PIP 6个惯性传感器实现全身动捕和受力估计
作者丨伊昕宇
项目主页:https://xinyu-yi.github.io/PIP/
论文链接:https://arxiv.org/abs/2203.08528
开源代码:https://github.com/Xinyu-Yi/PIP
图1本文提出的方法进行实时人体动作捕捉
图2 本方案进行实时人体关节受力、地面作用力估计
在电影制作、VR/AR、运动、医疗、游戏等众多领域,人体动作捕捉都有着重要的应用。目前商业的光学动捕系统往往需要在人体上穿戴大量的反光标记点,而商业的惯性动捕系统通常需要在人体上穿戴大量的惯性传感器。这些设备价格昂贵,穿戴麻烦,会阻挡人体的运动,不能满足普通消费者日常动作捕捉的需求。
图3 Vicon光学动捕系统。该系统需要人体穿戴大量反光标记点。
图4 Xsens惯性动捕系统。该系统需要人体穿戴大量惯性传感器。
近期很多研究工作提出使用少量彩色或深度相机进行人体动作捕捉,但它们受到相机摆放、环境照明、遮挡等影响,且限制人体只能在相机的视野内运动。使用稀疏惯性传感器进行人体动作捕捉是一个新兴的研究领域,这种方案有着不受遮挡影响,不限制人体运动范围的优势。目前最好的工作可以仅穿戴6个IMU在人体小臂、小腿、头部以及后背处进行人体姿态和运动估计。然而,由于输入惯性数据的稀疏性,基于稀疏IMU的最好的方案仍存在着坐/站难以区分的问题,输出结果存在抖动、身体穿过地面等反物理现象,且系统有着巨大的延迟。这些问题显著影响着该类动捕系统的实用性。
为了解决上述问题,本文引入基于动力学的物理优化,并创新地提出基于学习的RNN隐藏状态初始化策略以及双重比例微分(PD)姿态控制器,使得仅使用6个IMU即可估计符合真实世界物理规律的人体运动,并同时估计人体关节受力、地面作用力等。该方法大大提高了系统稳定性,使得系统可以进行长时间、稳定地运行,捕捉的动作和受力具有非常高的精确度和真实感。
图5 PIP在连续捕捉30分钟的动作中漂移很小
图6 PIP准确地捕捉羽毛球运动
总体思路
前人的稀疏IMU动作捕捉工作[1,2,3]中经常出现身体抖动、身体穿过地面、脚滑动等问题。出现此类问题的原因可归纳为,以前的方案并没有全面地考虑真实世界的物理约束,也没有显式地建模人体运动的物理属性。基于此,我们考虑在姿态求解系统中引入物理优化来减少此类问题的出现。
我们进而发现,在人体姿态求解过程中,仅仅考虑人体的运动学属性(kinematics,即关节的位置、旋转、速度等)是不够的,系统可能会输出不符合物理的人体运动(如抖动,不平衡的身体倾斜)。因此,建模人体的动力学属性(dynamics,即物理属性,包括质量分布、几何形状、运动加速度、关节力矩等)对于估计真实的人体运动是必要的。受到PhysCap[4]等工作的启发,我们引入了人体的物理模型——该模型包含了人体的物理属性,由关节力矩控制,与环境产生物理作用后,可以产生符合真实物理规律的人体运动。简而言之,我们可以将该人体物理模型想象成一个真实世界的机器人,该机器人的每个关节由电机控制,我们可以指定每个关节发出的力矩大小,从而控制机器人在真实世界中运动。我们发现由此得到的人体运动极大地满足了物理可行性,可以解决上述反物理现象的出现。
基于该设想,我们的系统目标变为:如何从稀疏的IMU测量值估计出一组人体关节力矩,该力矩可以驱动一个人体物理模型得到正确的人体运动。一个很简单的方案为:迭代优化人体关节力矩,使得该力矩作用到物理模型上产生的人体运动符合输入的6个IMU的惯性观测值。然而实际中,我们发现该优化问题的约束条件太少,有无数多组关节力矩的解都可以满足稀疏的惯性观测值,因此求解精度很差。我们发现该方案不可行的主要原因为,我们虽然建模了人体运动的物理规律,但却忽视了人体运动的先验信息,以及人体关节之间运动的相关性。由于这种先验知识很难用数学准确全面地建模,我们考虑使用基于学习的方法从大量数据中学习得到人体运动先验。
基于此,我们利用了前人的稀疏IMU动捕工作TransPose[3]。该工作通过多阶段循环神经网络从大量数据中学习到了人体运动的先验知识,然而它并没有考虑人体运动的物理规律。因此,我们综合两种方案,形成了PIP的基本框架:我们优化一组人体的关节力矩(图7橙色部分),使得在该力矩的驱动下,我们的物理人体模型产生的运动可以满足一些运动指标(motion status,具体包括关节旋转,关节速度,和地面的接触情况)。而这些运动指标,则通过循环神经网络从稀疏的惯性测量值输入中回归得到(图7绿色部分)。通过结合基于学习和物理优化的方法,我们在系统中同时引入了人体运动先验知识和真实物理规律,使得估计的运动不仅具有足够高的精度,而且符合真实世界的物理规律。
然而,一个简单的融合并不会得到非常漂亮的结果。更进一步地,我们发现TransPose工作中使用双向LSTM建模人体运动先验知识的方案有一定的缺陷,该缺陷导致系统难以区分坐/站等歧义动作(歧义性来源于绑在四肢的IMU测量的结果基本一致)。基于此,我们提出了基于学习的RNN隐藏状态初始化策略,有效解决了该问题。有了比较好的人体运动预测网络,我们发现如何将预测结果充分融入到物理优化中是一个关键问题。我们认为前人工作中经常使用的用于控制物理人体运动的比例微分(PD)控制器可以加以改进。普通的PD控制方案仅对人体的局部姿态起到控制作用,而对人体的全局姿态没有保障。基于此,我们提出双重PD控制器,利用关节旋转和关节速度同时控制人体的局部和全局姿态,以更好地约束人体运动。综上,通过结合更好的人体运动预测网络和更充分的物理优化,我们的方案显著提高了姿态和运动估计精度。
图7 方法流程图
基于学习的人体运动学估计
根据上述总体思路,我们首先通过神经网络,从稀疏惯性测量值预测出人体的一组运动指标(motion status),用于后续的物理优化(图7绿色部分)。该部分利用了前人工作TransPose[3]中提出的多阶段姿态估计方法,通过引入估计关节坐标的中间任务以更好地学习人体运动先验知识。和TransPose的一个不同是,我们使用单向LSTM网络,不再依赖未来的惯性信息(因此系统延迟得以大幅降低),可以在网络中保留完整的历史信息,而且大幅提高了运行效率(不再使用窗口数据输入,每时刻输入当前帧惯性信息即可)。
具体地,我们的输入是6个IMU测得的加速度和朝向信息。我们首先使用两个LSTM网络和预测末端关节坐标和全身关节坐标,随后拼接上输入的惯性信息,使用三个LSTM网络分别预测人体关节旋转,关节速度,和脚-地接触信息(统称为运动指标,motion status)。这些网络的训练和TransPose一致,即使用AMASS数据集(合成IMU信息)和DIP-IMU数据集(真实IMU信息),并合成脚-地接触信息,分别训练五个LSTM网络。
我们发现,在人体保持坐或站时,6个IMU测得的旋转信息可以完全一致,而加速度基本为0,因此仅使用当前帧的惯性测量值不能预测坐站,区分坐站的关键是坐下、起立的历史运动信息。然而仅仅通过使用单向LSTM而利用完整的历史信息,仍不足以让网络稳定预测坐站等歧义姿态。我们发现该问题的本质为RNN隐藏状态初始化的问题。
为了更清楚地描述,我们简化我们的问题定义:假设我们现在只需要预测坐、站的二值状态(就像一个二分类问题),而关键的输入信息为坐站切换时的惯性信息,例如突然变大的加速度,因此我们不妨认为输入是二值的“加速度大”或“加速度小”。我们希望训练这样一个LSTM:在输入“加速度小”时,就维持上一帧的输出(坐/站)不变;在输入“加速度大”时,就切换坐/站输出(由“站”切换成“坐”或反之)。然而,即使是这样一个简单的任务,使用普通的LSTM训练方式是无法收敛的,其根本原因为训练集里人的初始姿态不确定,但我们却一直使用固定的0去初始化LSTM隐藏状态。
这也就意味着,LSTM可能一直都从“站”初始化,而我们的训练数据却有一半都是以“坐”开头,导致网络无法学到正确的状态机行为,反而去学习如何从输入的模式直接估计输出状态。这种全0初始化在其他领域中可行且被普遍使用的原因为,那些任务假定前几帧的输入就能让LSTM得到一个比较好的隐藏状态,因此后续可以正常训练。
然而我们的任务中,只要初始姿态是不知道的,LSTM无法通过几帧的坐站切换信息预测初始状姿态。因此,针对该问题特定的模式,我们设计了基于学习的RNN隐藏状态初始化策略。我们使用一个浅层全连接网络直接从初始人体姿态预测一个RNN的初始隐藏状态,以替换掉全0初始化,该全连接网络和RNN同时训练。
因为没有修改RNN的内部实现,我们的方法在训练时可以使用黑箱RNN(如CUDA实现)进行加速,因此并不会影响实际训练速度。在实际测试时,由于人体必须要做T-pose校准,因此初始姿态是确定已知的T-pose。我们对受影响的LSTM网络采取该方案(图7中的和),取得了很好的效果,使得网络可以准确区分坐站等歧义动作。
图8 使用基于学习的RNN初始化策略帮助估计坐站等歧义动作
基于物理的人体动力学优化
有了预测的运动指标(关节旋转、关节速度、脚-地接触信息),我们需要求解出一组关节力矩,使得物理人体产生的运动尽可能满足该指标(图7橙色部分)。然而,物理人体的运动受物理规则束缚,不能尽如人意,因此我们需要一套控制系统以及时补偿之前运动产生的误差。
PD控制器是一个常用的选择。该控制器以目标关节旋转为输入,给出当前姿态下需要产生的角加速度(从而达到目标旋转):
其中为目标姿态向量(由人体每个关节的本地旋转拼接而成,下同),和为当前的姿态向量和角速度向量,和为PD控制器的参数,而为控制器输出的人体需要产生的角加速度。该等式意味着,如果目标姿态距离当前姿态比较远,则需要比较大的加速度;然而,如果当前的速度已经很大了,那需要的加速度可以小一点。两个参数可以通过对姿态做一阶泰勒展开获得近似值。
我们发现,上述普通的PD控制器仅控制人体的局部姿态,即控制每个关节的本地旋转要达到目标值。受误差影响,全局姿态很可能会有较大误差累计,从而导致结果变差。基于此,我们提出了双重PD控制器,希望同时控制人体的全局姿态。然而将PD控制原理作用到关节全局旋转上,将得到高次的优化问题,这会大幅降低求解速度(见后续的优化模块)。我们仍希望将目标函数保持在二次并利用二次规划进行快速求解。因此我们提出了更简单的关节坐标PD控制器:
和前面的关节旋转控制器非常类似,这里通过给定目标的关节三维位置,求得每个关节需要产生的线加速度,进而控制全局的姿态。而目标关节位置则通过网络预测的关节速度和上一帧位置求得。使用双重PD控制器同时控制关节局部旋转和关节全局位置,可以大幅提高预测精度和真实感。
图9 使用双重PD控制器可以提高预测姿态的精度和物理正确性
有了控制器输出的关节角加速度和线加速度,我们可以构造物理优化问题如下:
1)地面作用力仅应在人地接触时产生——人地距离增大时地面作用力大小应迅速衰减;
2)人们总是倾向于以最省力的方式运动——关节力矩应尽可能小;
3)人体根节点不应有驱动力(除非穿上一个喷气背包)——根节点上的力矩和驱动力尽可能小。其中对于人地接触的建模,我们假设人体全身关节都可以与地面发生碰撞,并以面接触的方式进行建模(我们发现面接触会比点接触更加稳定)。由于脚与地面的接触出现得更多一些,我们利用神经网络估计了脚地接触概率,以增加脚地接触的判别准确度。
优化变量还应满足线性的约束条件。其中:
1)第一条动力学方程建模了三个优化变量之间的线性关系,可以简单理解为F=ma,即关节力矩和地面作用力决定了关节产生的角加速度和根节点线加速度。
2)第二条摩擦锥约束则要求地面作用力中摩擦分量和压力分量的比例应在摩擦系数之内,且限制地面作用力的方向必须指向地面以外。
3)第三条接触滑动约束则要求人地接触点不能发生相对滑动,且不能穿入地面。
请注意,这里为了通俗易懂使用了关节“角速度”,“角加速度”等简化描述,这些描述并不准确。此外,为了将优化问题构建为二次规划,实现中还需要将很多函数线性化,更详细的建模请参考论文。
我们对PIP的实时动作捕捉进行了定量定性的测试和比较。在DIP-IMU测试集和TotalCapture数据集,我们将PIP与DIP[2]和TransPose[3]两个方法进行了详细的对比。
表1 姿态定量对比
在姿态的定量对比中,SIP Err衡量大腿、大臂的全局旋转角度误差,单位为度;Mesh Err衡量重建的SMPL模型顶点误差,单位为厘米;Jitter衡量抖动大小,单位为千米/秒3;ZMP Dist衡量人体处于动态平衡的程度,单位为米,在人体静止时可以理解为人体重心在地面的投影与脚之间的距离;Latency衡量系统延迟,从接收到IMU测量值到计算出姿态和运动为止,单位为毫秒。
在该对比中,前两项衡量姿态的精确程度,后两项衡量姿态的物理正确性。所有指标均为越小越好。注意其他工作中常见的脚滑动距离、脚穿过地面的时长占比等指标,在PIP中自然都为0,因此我们没有汇报这一误差。可以看到PIP以极低的系统延迟,在姿态精度和物理正确性上都大幅超过前人的方法。
图10 TotalCapture数据集上全局运动对比
在全局运动对比中,我们展示了真实人体每走n米时,不同方法的平均全局位置漂移量曲线。可以看到在真实人体走7米时,PIP可以实现仅0.32米(4.6%)的漂移量,好于前人工作。
图11 姿态定性对比
图12 姿态定性对比
在姿态定性对比中,我们画出了TotalCapture数据集中顶点误差分布情况及曲线下面积(AUC),并在10%、众数、中位数、和95%误差点选取了4帧进行定性比较。可以看到橙色的PIP最接近白色的真值。即使是在95%的情况,PIP的结果也没有错得太离谱。
表2 消融实验
在表2和全局运动对比(图10)的消融实验中,我们证明了基于学习的RNN隐藏状态初始化、双重PD控制器、和物理优化的必要性。物理模块帮助提高了估计运动的物理正确性以及全局运动的准确性。
我们还做了很多实时展示以证明PIP系统的姿态估计、受力估计、运动估计。
图13 PIP准确估计人体姿态和地面作用力
图14 PIP不受遮挡的影响
图15 PIP准确估计全局运动
本文通过引入物理优化提高了稀疏IMU动捕的精度、物理正确性、并大幅降低了系统延迟。物理优化只是稀疏IMU动捕任务中一个简单的尝试,任务本身还存在着很多待解决的问题,如全局运动的漂移,磁场干扰的处理,非平整地面上的运动捕捉等等。相信未来会研究出更多更好的解决方案,进一步提高稀疏IMU动捕的精度和鲁棒性。
参考文献:
[1] Timo Marcard, Bodo Rosenhahn, Michael Black, and Gerard Pons-Moll. 2017. Sparse
Inertial Poser: Automatic 3D Human Pose Estimation from Sparse IMUs. Computer
Graphics Forum 36(2), Proceedings of the 38th Annual Conference of the European
Association for Computer Graphics (Eurographics), 2017 36 (02 2017).
[2] Yinghao Huang, Manuel Kaufmann, Emre Aksan, Michael Black, Otmar Hilliges, and
Gerard Pons-Moll. 2018. Deep inertial poser: Learning to reconstruct human pose
from sparse inertial measurements in real time. ACM Transactions on Graphics, 37.
[3] Xinyu Yi, Yuxiao Zhou, and Feng Xu. 2021. Transpose: Real-time 3d human translation and pose estimation with six inertial sensors. ACM Transactions on Graphics, 40.
[4] Soshi Shimada, Vladislav Golyanik, Weipeng Xu, and Christian Theobalt. 2020. Physcap: physically plausible monocular 3d motion capture in real time. ACM Transactions on Graphics, 39.