基于视频的三维人体姿态估计
2020-01-02杨彬李和平曾慧
杨彬,李和平,曾慧,*
(1.北京科技大学 自动化学院,北京100083; 2.北京市工业波谱成像工程技术研究中心,北京100083;3.中国科学院自动化研究所,北京100190)
人体姿态估计是指还原给定图片或者视频中人体关节点位置的过程,其对于描述人体姿态,预测人体行为起到至关重要的作用。近年来,随着深度学习技术的发展,人体姿态估计越来越广泛地运用到计算机视觉的各个领域之中,例如人机交互、行为识别以及智能监控等等。现如今,二维人体姿态估计算法的日渐成熟,三维的人体姿态估计开始受到更多研究者的关注,其在二维姿态估计的基础上加入了深度信息,这也进一步扩大了姿态估计的应用场景。早期的研究过多关注于利用人体的几何约束为主要特征来估计三维人体姿态[1-3],例如使用梯度方向直方图以及层次物体识别模型提取特征来对三维姿态进行预测,这种方法保证了输出结果的合理性,不过由于不同个体之间存在差异,往往难以获得精确的结果。当前的研究算法大多通过单幅RGB图像[4-8]以及利用已知二维姿态方法[9-15]来恢复人体的三维姿态,前者将姿态估计由回归问题转化为在离散空间中定位关节点位置的问题,取得了不错的效果,但其一定程度上会因遮挡等环境因素而导致检测性能下降。使用二维姿态恢复的方法则是寻找由二维关节点向三维空间的映射[16-17],这种方法相比其他方法更为直接,且最终的检测结果往往依赖于二维关节点坐标是否精确。
以上研究算法大多建立在对单帧图像进行分析的基础上,而现实生活中更多的数据源来自于视频输入,视频作为多帧连续图像的组合,包含了更为复杂的时序信息。而基于单帧图像进行估计一定程度上会导致相邻帧的检测结果存在巨大差异,因此,基于视频的三维人体姿态估计比单帧图像检测具有更大的挑战。在时序分析领域,循环神经网络(Recurrent Neural Network,RNN)一直因其善于处理序列化数据而有着广泛地应用,英国著名的人工智能公司Deep Mind于2016年提出的WaveNet[18]通用模型证明一维的卷积神经网络(Convolutional Neural Network,CNN)同样对序列化数据特征有着良好的提取能力,另外与RNN相比不容易受到梯度消失和爆炸的影响而且有着更为简单的网络结构。因此以一维卷积为基础设计深层网络来挖掘分析视频中的时序信息可能会具有更加突出的作用。
本文受到上述启发,构建了一种以视频中人体二维关节点坐标作为输入恢复得到三维人体姿态的算法,主要贡献概括如下:基于一维卷积对时序信息的提取能力,设计了一种高效网络,对视频中的三维人体姿态实现了准确的估计。深入研究视频相邻帧之间视觉信息的连续性,提出了一种新的损失函数,改进姿态估计结果的平滑性和有效性。最后在特定数据集上进行试验并对比分析,充分验证了本文方法对视频中的三维人体姿态估计的有效性,研究成果也为一些实际应用提供了技术支持。
1 三维姿态估计
1.1 方法概述
直觉上,二维关节点坐标向三维空间的映射可能会因缺少深度信息而导致错误姿态,不过Martinez等[16]提出的基准方法证明了使用网络实现二维关节点恢复三维姿态是完全可行的,网络能够很好地依据关节相对位置来预测深度信息和连接关系。因此本文设计了一种以连续二维关节点坐标序列为输入恢复视频相关三维人体姿态的方法,如图1所示。二维关节点坐标直接由数据集的标注得到,除此之外,还可以通过将单帧图像送入二维姿态检测器得到人体二维关节点坐标,本文方法可以与目前许多高精度二维姿态检测器相结合,实现对于任意图像或视频输入,都能够准确恢复人体的三维姿态。之后对得到的二维关节点坐标序列进行归一化处理,加快网络收敛速度。最后将处理过的序列数据送入三维姿态估计网络,训练时网络会生成与序列数据相同数目的姿态,测试时本文只取中间一帧的姿态作为输出,因此输入二维关节点坐标序列的数目应为奇数。
1.2 三维姿态估计网络
图1 三维姿态生成过程Fig.1 Generation process of three-dimensional pose
三维姿态估计网络主要由4个具有相同结构的残差网络模块进行串联组成,除输入输出外,第一层的3×1卷积和最后一层的1×1卷积分别用于将输入维度进行扩展以增加网络宽度和将维度降至输出维度。残差网络模块由卷积层、Batch-Normal(BN)层、ReLU层以及残差连接组成。
1)卷积层。残差网络模块在卷积层主要使用3×1的一维卷积和卷积核大小为1×1的点卷积,一维卷积通过卷积核的滑动来提取时间序列上的信息,点卷积主要用于改变特征的维度以此来对同维度的特征进行信息融合。
2)BN层。神经网络各层的输出由于经过层内操作,其数据分布显然会与对应层的输入不同,并且差异会随着网络层的堆叠而逐渐增大,而BN层主要用于对每层的输入进行规范化,用于解决数据分布不均而导致的训练深层网络模型困难的问题。BN层一定程度上起到了正则化的作用,使得训练过程中能够使用较高的学习速率,更加随意的对参数进行初始化,加快训练速度,提高网络的泛化性能。
3)ReLU层。ReLU层是一个非线性的激活单元,主要用于增加网络的非线性特征,其单侧抑制特性使得一部分神经元的输出为0,增加稀疏性,减少了参数间的相互依存关系,缓解了过拟合问题的发生。
4)网络还借鉴了ResNet[19]网络结构中残差连接的思想,将输出表述为输入和输入的一个非线性变换的线性叠加,使得各个层级提取到的特征可以随意进行组合,保证特征在网络中的传递,三维姿态估计网络结构如图2所示。
对网络的设计不仅要求模型结构有着良好的性能,还要考虑实际应用中网络运行所需要的存储空间以及计算资源。网络模型的空间复杂度主要指的是参数的个数,其中ReLU层作为激活单元并没有需要学习的参数,单个BatchNormal层也仅有2个可以学习的参数,因此网络模型占用的空间大小近似等于所有卷积层的参数量之和,网络模型的时间复杂度主要通过浮点运算次数(FLoating-Point Operations,FLOPs)来衡量。使用连续9帧图像中人体关节点二维坐标为输入,计算不同数目的残差模块对于参数个数以及计算资源的消耗,并比较最终的测试误差。
由表1可得,在4个残差模块的使用下得到了最优结果,此后随着网络的进一步加深,出现了过拟合现象,平均测试误差开始增加,后续实验也采用4个残差模块的网络结构与其他方法进行对比分析。本文设计的轻量级网络模型实现了对三维人体姿态准确高效的估计,在有效减少参数的同时也具有极快的处理速度,能够更好地应用在各种硬件设备中。
图2 三维姿态重建网络结构Fig.2 Three-dimensional pose reconstruction network structure
表1 网络模型参数量Table 1 Par ameter number of networ k model
2 相似姿态位移约束损失函数
本文网络主要是利用已有的数据,取连续帧的二维关节点坐标作为输入,对人体关节点坐标从二维到三维空间的映射进行有监督学习并最终输出人体三维关节点的坐标,其本质上是一个回归问题。网络优化的目标是使得预测得到的三维关节点的坐标与真值之间的差值最小,因此首先定义姿态距离(Pose Distance,PD)的损失函数:
式中:T为同时输入网络连续帧关节点的数目;N为人体关节点的数目,在实验中N=17表示Euclidean范数,通过使用预测值与真值的欧氏距离作为衡量关节点之间差异的标准;(pred)和(gt)分别表示输入第t帧图像中第i个关节点的三维坐标预测值和真实值。
视频数据承载的信息不仅仅存在于单帧图像中,其更多的语义信息会通过连续帧来表达,而传统的视频姿态估计算法大多基于单帧图像,然后将结果整合为视频输出,无法充分利用视频的时空结构特性,往往存在输出不连续等问题。本文随机选取任意视频序列进行分析,并通过计算两个姿态间各个关节点之间的欧氏距离之和作为姿态差异,将实验结果取平均,根据图3可以得出同一视频段中姿态差异随序列增加近似呈线性增长,且相邻帧保持着微小的差异,通过网络训练来学习这一特性,可以使网络能够依据当前时刻的输入预测下一时刻的输出,同时也保证后一帧的姿态预测结果与前一帧相比能够近似一致,以此来增加视频中姿态估计的准确性和平滑性。
民俗学是一门面向实践的学问,这其中包含两个层面的意思:一是研究者要关注民众的生活实践;二是研究成果要对民众实践有所助益。其中,研究成果对民众有所助益是民俗学最朴实的初衷,是民俗学者的初心之所在。与其他社会科学不同,民俗学特别强调了解民众理解民众,拥有比别的学科更多的了解老百姓的知识,这是民俗学者的优势,也是民俗学的长处。换句话说,我们民俗学者不局限于一时一地的民众知识,我们通过田野调查掌握了很多地方老百姓的知识,掌握了不同阶层、不同职业、不同修养的各种人群的知识,最终是为了更好地为他们服务,实践民俗学更是要强调这种服务民众的特殊责任。
图3 相邻帧姿态差异Fig.3 Pose difference between adjacent frames
基于上述分析,本文设计一种名为相似姿态位 移 约 束(Similar Pose Displacement Constraint,SPDC)的损失函数来学习视频中的人体姿态在时间维度上的连续性,计算公式为
式中:α和λ分别为姿态距离损失函数以及相似姿态位移约束损失函数的权重比,本文以姿态距离损失函数为主要的优化目标,使输出的每个关节点坐标值都尽可能地回归到真值附近,并辅以相似姿态位移约束损失函数来充分学习相邻帧的近似一致性,增加检测结果的平滑性。对α和λ的选取规则应该是α大于λ,经过多次实验对比,本文选取α=5以及λ=1作为最优的权重比,最终的损失函数为两种不同损失函数的加权和。
3 实验结果分析
3.1 实验数据集
为了对本文方法的性能进行评价,在三维人体姿态数据集Human3.6M[20]上进行了实验,Human3.6M是目前为止最大也是使用最为广泛的三维人体姿态估计数据集,其主要由7位实验者在4个不同视角下使用高清摄像机精确捕捉的360万个三维人体姿态组成,视频的帧率为50 Hz,分辨率大小为1 000×1 000。数据集被分割为11个子类别,其中7个类别包含了三维关节点标注,而且还使用相机参数对三维姿态的关节点数据进行投影,并获得准确的二维姿态信息,每个类别中都包括走路、打招呼等15个生活中常见动作。
3.2 实验细节和评价标准
实验过程中,使用Human3.6M 提供的二维关节点坐标,选取某帧前后数目相等的二维关节点坐标序列作为输入,训练时为了保证视频起始端和末端完整性,对输入数据采取边缘填充操作,根据输入连续帧数目对起始帧和结束帧的二维关节点数据进行复制并填充。此外,本文还对输入的二维关节点坐标根据图像大小进行归一化处理。训练时采用Adam优化算法,初始学习率设置为0.001,批处理大小为1024,权重衰减参数设为0.000 65,对整个数据集迭代50次。
实 验 使 用 NVIDIA GTX1060 显 卡,64 位Ubuntu系统,Intel i7-6700型号CPU,并Python3.5环境配置下使用开源深度学习框架Pytorch对网络模型进行训练。使用平均关节位置误差(Mean PerJoint Position Error,MPJPE)作为评价标准,即计算网络预测得到的关节点坐标与真实标签17个人体关节点坐标之间欧氏距离的平均值。为了与其他实验方法进行公平比较,根据协议使用Human3.6M 中的S1、S5、S6、S7、S8子数据集用于训练,S9、S11数据集用于测试。
3.3 实验结果与分析
三维人体姿态估计结果如图4所示,每25帧连续图像的二维关节点坐标作为输入,采用4个残差模块网络结构的条件下,得到了最佳的实验结果。
图4 三维姿态估计结果Fig.4 Three-dimensional pose estimation results
对于不同数目连续帧输入的实验分析如图5所示,当输入序列长度大于25以后,模型的性能开始下降,平均误差开始增加,推测原因可能因为当前帧的检测结果只与相邻几帧呈高度相关性,其余帧的存在会带来更多的冗余信息。而且由于输入维度的增加,网络前向传播所需的时间也会成倍增加。
表2 各种三维姿态误差Table 2 Various three-dimensional pose errors
图5 不同输入序列下的平均误差Fig.5 Average errors in different input sequences
接下来对本文设计的网络各个部分进行深入分析,表3给出了不同的网络设计对最终测试误差的影响。Dropout[22]正则化是最简单的网络正则化方法:通过任意丢弃网络层中的参数来减少神经元之间复杂的共适应关系,迫使网络去学习更加鲁棒的特征,缓解过拟合的发生,起到正则化的作用。然而加入Dropout反而增加了大约10 mm的误差,分析原因,可能由于Dropout随机删除卷积层参数,破坏了一维卷积提取时序信息的连续特征过程。与此同时,BN层的加入减少了14.9 mm的测试误差,大幅提高了网络的泛化性能。另外,残差连接的设计也为本文的网络带来了0.6 mm误差的减小。
表3 不同网络结构测试误差Table 3 Testing err ors of different network structures
最后分析本文所提出的损失函数对于网络性能的影响,具体方法为同时训练加入和不加入SPDC损失函数的网络,损失函数曲线如图6所示。由图6可见,在训练初期,随着三维点坐标回归的逐渐精确,两个网络的相似姿态位移差异同时减小,但加入SPDC损失函数的网络下降幅度更大。在继续迭代的过程中,加入SPDC损失函数网络的相似姿态位移差异进一步减小且具有更小的震荡幅度,这说明SPDC损失函数的加入使得网络很好地学习了视频帧间的连续性,增加了视频三维姿态估计输出的平滑性,另外,SPDC损失函数的加入最终减少了网络0.8 mm的误差,进一步提高了估计结果的准确性。
图6 损失曲线对比Fig.6 Loss curves comparison
4 结 论
本文结合用于提取时序信息的一维卷积神经网络,提出了一种基于视频的三维人体姿态估计方法。研究结论如下:
1)本文方法能够以连续帧图像中人体二维关键点坐标作为输入,将已有的二维姿态准确地映射到三维空间中。
2)针对帧间信息缺失的情况,本文又设计了一种新的损失函数,对帧间的近似一致性进行学习,充分利用视频时间维度上的相关性来估计视频中的三维人体姿态。
3)实验表明,基于连续帧输入的姿态重建网络具有一定的合理性,并且本文方法可以与二维姿态检测器相结合,具有一定的鲁棒性。
下一步的主要研究工作是将本文方法与二维姿态估计任务相结合,设计通用的框架同时对二维和三维的人体姿态进行估计,并利用三维的姿态估计结果对二维的输出进行优化。