王发明,李建微,陈思喜
福州大学 物理与信息工程学院,福州350116
人体姿态估计是计算机视觉领域很多研究工作的基础,也是研究的热点问题,在行为识别[1]、人机交互[2]、姿态跟踪等领域有着广泛的应用前景。人体姿态估计的目的是在图片、视频以及网络摄像头视频流等对象中描绘出人体的形态,其包含了目标识别、分割、回归与检测等多方面的任务。按照人体姿态维度的差异,可以将人体姿态估计任务分为二维(2D)人体姿态估计和三维(3D)人体姿态估计。其中2D 人体姿态估计是目前国内外学者主要研究的方向,近年来取得了突破性进展,涌现出较多的数据集,例如FLIC[3]、ΜPII[4]、ΜSCOCO[5],算法框架包括单人姿态估计[6-9]和多人姿态估计[10-13],大大提升了2D 人体姿态估计的性能。2D 人体姿态估计的目标是定位并识别出人体关键点,将这些关键点按照关节顺序相连形成在图像二维平面的投影,从而得到人体骨架。3D人体姿态估计的主要任务是预测出人体关节点的三维坐标位置和角度等信息。由于人体姿态标记数据集的缺乏,使得大多数研究方法都基于2D 人体姿态估计方法之上,因此2D 人体姿态估计研究的发展也为3D人体姿态估计奠定了基础,使得3D人体姿态估计研究有着巨大的潜力。
在实际应用中,由于3D姿态估计在2D姿态估计的基础上加入了深度信息,其对于人体姿态的表述比2D更为精准,因此其应用范围和研究价值都要高于2D 人体姿态估计,但是3D姿态估计的难度也更高,存在着遮挡,单视角2D 到3D 的映射中固有的深度模糊性、不适定性,缺少大型的室外数据集等挑战。由于三维人体姿态估计的重要性,本文主要总结3D 人体姿态估计的研究进展。
在目前的研究中,三维人体姿态估计方法可以划分为传统方法和深度学习方法两类。在深度学习方法得到广泛应用之前,3D 人体姿态标注数据集和具有高运算能力的GPU 还没有普及,研究人员主要通过一些应用在传统计算机视觉或机器学习领域的方法来进行3D人体姿态的估计。传统三维人体姿态估计和基于深度学习的姿态估计之间最明显的特征在于是否使用了多层神经网络的学习方法,因为建模方式不同,在估计精确性、计算复杂度等方面也有着较大的差别。其中建模是三维人体姿态估计一个很重要的方面,目的是表示从输入数据中提取的关键点和特征。在解决实际问题时由于实验个体所处环境的复杂性,很大程度上增加了模型的建立难度,因此选取适当且有效的图像特征来简化模型建立过程十分重要。传统方法很多是采用基于人体模型的方法来描述和推断人体姿态,通过算法提取图像姿态特征,因此对特征表示和关键点的空间位置关系这两个维度有比较高的要求,除去边界、颜色这类低层次特征,典型的有尺度不变特征变换(Scale Invariant Feature Transforms,SIFT)[14]、梯度直方图(Histogram of Oriented Gradients,HOG)[15]等表达能力更强、可有效压缩特征空间维度的高层次特征,它们虽然在时间效率方面具有优势,但依然是由人工设计的传统特征,存在着较大的不足。一方面会丢失图像部分细节信息,会受到遮挡、固有几何模糊性等限制而导致严重不适定问题,同时也会大大限制传统方法的适用范围;另一方面对所采集的图像视频数据有一定的要求,无论是使用多目摄像头还是单目摄像头,都容易受到采集成本、遮挡、光照、环境等因素的影响。而深度学习模型操作过程相对简单且对特征的表示能力强大,对输入信息自动进行特征提取而无需人为手动提取特征。基于深度学习的人体姿态估计可以通过建立网络模型在图像数据上进行训练和学习,直接得到最有效的表征方法,其核心是深度神经网络,主要是利用卷积神经网络(Convolutional Neural Network,CNN)[16]从图像中提取出比人工特征语义信息更丰富、准确性更高和更具鲁棒性的卷积特征,并且网络模型的表达能力会因网络堆叠数量的增加而呈指数增长,因此相较于传统方法可以进一步提升复杂环境下的人体姿态的精度和鲁棒性。深度学习在人体姿态估计任务中的应用已经取得了显著的进展,然而像遮挡、训练数据不足和深度模糊等挑战仍然是难以克服的。
本文将对三维人体姿态估计按图1 进行分类综述。总体上,将三维人体姿态估计分为基于传统方法和基于深度学习方法两类。主要从相关方法的研究进展、算法框架的优缺点和性能等方面进行介绍和举例说明。基于深度学习的三维人体姿态估计是目前的研究热点,因此将着重从三方面对基于深度学习的人体姿态估计的重要算法框架和研究进展进行介绍。其次,根据研究需要对3D人体姿态估计的数据集及评价指标进行系统性介绍。最后,本文将对当前研究面临的问题以及未来的发展趋势进行概述,为这个领域的研究者提供参考。
图1 三维人体姿态估计方法分类
早期的三维人体姿态估计通常是计算机视觉和机器学习领域的研究热点,相关方法取得了很不错的效果。传统三维人体姿态估计研究大致可以分为三类:基于生成方法的人体姿态估计、基于判别方法的人体姿态估计以及基于模板匹配方法的人体姿态估计。其中基于模板匹配的方法可以说是混合前两者方法的三维人体姿态估计。这些方法之间的总结和对比如表1所示。
在传统方法中,特征的提取和图结构模型(Pictorial Structure Μodel,PSΜ)[17]在姿态估计中都扮演了非常重要的角色。PSΜ 将人体视为关节结构集合[18-19],这些关节结构之间具有一定的空间约束,关节部位之间的空间关系对于3D姿势来说更便于实现关节点检测。将生成方法运用在3D 人体姿态估计上,主要内容是建立具有参数的人体模型[20],赋予模型不同的参数即可得到不同的姿态,因此使用生成方法进行人体估计可以被转化为寻找参数使得模型生成的图像与实际图像之间差别最小化,即抽象成最优化问题。因此基于生成方法的人体姿态估计的核心问题就是建立人体模型,选择优化函数和目标函数,通过得到较好的初始化条件和在高维姿态空间中进行搜索,往往就可以得到比较精确的估计结果。
表1 基于传统方法的三维人体姿态估计方法
文献[19]将PSΜ 应用于空间离散化的三维姿态估计,但是随着离散化的分辨率、位姿空间呈立方形增长,其结构也变得愈加复杂。文献[20]提出的基于条件先验人体模型的人体姿态估计获得了更高的估计准确度。对构建的人体姿态模型的姿态参数空间进行搜索的方法包括迭代最近点算法[21]、高斯混合模型[22]、基于马尔科夫链的蒙特卡洛采样方法[23]等,在参数空间中进行搜索,虽然得到的准确度较高,但是由于算法复杂,运算量大,而无法保证实时性。另外人体模型的初始化参数对于找到最优解的姿态有重要影响,一个好的初始化方法可以在对人体参数进行空间搜索时所需的时间更短,反之需要更多时间,从而在很大程度上影响了算法的实时性。
针对基于生成方法的不足,研究人员提出了基于判别方法的人体姿态估计[24-28],其优点是不需预先生成人体姿态模型和初始化,运算速度较快。判别方法把姿态估计看作一个回归问题,首先通过分类算法对人体部位进行判别,通过打点的方式对估计出的人体关节点进行标定,再通过聚类算法得出这些点的中心,最后通过一个预训练的回归器对各个关键点位置进行精确的估计。但是判别方法在样本不足,尤其是在遮挡情况下很难保证算法的鲁棒性,另外对于需要使用标注数据进行训练的判别器,训练数据的质量在很大程度上影响着最终估计的精度。
基于判别方法的算法从图像中提取特征后,学习从特征空间到姿态空间的映射。由于人体骨骼的关节结构、关节位置高度相关,为了考虑输出变量之间的相关性,Ionescu等人[24]提出了一种基于潜在分割输入的判别式单目图像三维人体姿态自动重建方法,所提出的模型可以从复杂环境中捕捉到的单目图像以推断出人类的姿势。Shotton 等人[25]训练了一个回归森林用于将输入的深度图像按照身体部位进行聚类,并利用均值漂移算法来估计关节位置。Chang等人[26]使用一个随机分类森林来判断前景中的每一个可见像素点属于哪一个身体部位,并使用随机回归森林来估计所有人体关节点。Park 等人[27]在文献[26]基础上引入一个随机验证森林,用于消除由于自遮挡导致的干扰。Ramakrishna等人[28]采用多个分层次的多分类器的级联来实现对关节位置的估计,在一定程度上解决了遮挡的问题。但是上述预测模型同样存在模型复杂、模型参数过多、计算复杂度高的问题。夏嘉欣等人[29]提出一种全新的思路,将带有噪声输入的稀疏高斯过程应用于三维人体姿态估计问题,利用稀疏算法与带有噪声输入的算法这两种优化算法进行模型改进,在降低计算复杂性的同时,使得算法在输入噪声的影响下获得更好的预测精度。相较于现有算法而言,该算法具有更强大的数学基础与泛化能力,可以推广应用于多种结构化预测问题。
在几何先验的基础上进行模板匹配的骨骼关键点检测算法是主流算法之一,其核心是通过对关键点、肢体机构以及不同肢体结构之间关系来表示整个人体结构。通过提出良好的模板匹配思路和方法,可以模拟更多的姿态范围,甚至能够更好地匹配并检测出对应的人体姿态。以往的研究中主要有两种方式:第一种是通过基于生成和判别的混合方法,来综合利用其优点,Ganapathi 等人[30]使用预训练的判别模型对人体部位进行估计,基于生成方法的估计过程因为快速运动或遮挡,受到影响时使用判别方法将得到的结果初始化。另外一种方式是采用数据驱动的模板匹配方法进行姿态估计,再由生成方法对姿态进行精确调整[31-32]。但是目前都没有一种高效且精确的模板匹配方法。另外建立姿态模板库需要花费建立与维护模板库的成本,其次模板的类别过少会影响初始化的过程,模板类别过多会增加搜索的成本,对解决遮挡问题也作用有限。最后,目前也缺少一种从输入的原始数据中提取更具有区分度的特征提取算法,因此使用这类方法的研究已经很少。
由于深度学习方法在特征提取方面相对于传统人工设计特征方法具有明显的优势,在三维人体姿态估计任务中基于深度学习的方法逐渐兴起,深度学习可以将特征提取交由网络来获得更高层的语义特征,而不需要像传统方法进行预先的特征提取。首先经过深度卷积神经网络提取图像特征,其次根据特征图得到最终的骨骼关键点位置。深度学习这种自学习特征表达方法,相较于传统的依靠先验知识的表达方法具有更好的效果,而且具备迁移学习特性的深度学习,可以较好地将在大数据集上训练的模型在小数据集上应用。因此基于深度学习的三维人体姿态估计是目前主流的研究方法,主要分为以下三类:基于直接回归的三维人体姿态估计、基于2D信息的三维人体姿态估计以及基于混合方法的三维人体姿态。基于深度学习的三维人体姿态估计方法的原理示意图如图2所示。
图2 基于深度学习的三维人体姿态估计方法示意图
基于直接回归的人体姿态估计也可称为基于端到端的人体姿态估计,即利用一个大的网络结构处理所有的数据内容。由于深度神经网络可以拟合复杂的函数,这一步通常不需要其他算法辅助和其他中间数据,因此可以直接基于回归的网络结构由单图直接预测三维姿态坐标,其优势在于整个网络模型可以达到端到端的训练效果,在应用过程中也是端到端的输出,但是这种方法对网络结构和数据预处理的要求较高。
Li 等人[33]首次利用这种深度学习的方法进行三维人体姿态估计的工作,训练一个网络,直接从图像中回归计算三维人体关节位置。该方法采用多任务训练框架,如图3所示,任务分为关节点检测与回归两类,它们共用前面的特征,检测任务分类局部窗口是否包含指定关节,回归任务计算关节点与根关节点的相对位置。训练方法较为特殊,首先单独做一个目标检测的视觉任务,然后将用来做特征提取部分的CNN 层作为三维人体姿态估计的初始化模型,并丢弃目标检测网络头部分进行训练回归任务,最终得到估计结果。Park等人[34]提出的网络结构与其相似,不同点在于使用二维姿态估计作为另一个任务分支的监督,通过将2D 姿态估计结果与来自图像的特征进行级联来估计3D 姿态,通过结合相关多个关节而不只是一个根关节的相对位置信息,可以获得更准确的3D 姿势。Tekin 等人[35]对无监督自动编码器进行了预训练,学习三维姿态到高维潜在空间的映射,对关节之间的结构依赖性进行编码,从而加强姿态的结构约束,然后使用浅层网络来学习高维姿态表示。由于使用了编码器多步输出,而不是使用对应步的单一定长向量,从而保留了更多的信息。
热力图(Heatmap)回归能保留图像中更多的信息,使用人体骨骼关键点热力图是2D人体姿态估计问题中比较主流的一种方法,同样可以应用到3D 人体姿态估计中。Tekin 等人[36]和Zhou 等人[37]利用2D 热力图代替2D姿态作为估计3D姿态的中间表示。Pavlakos等人[38]将2D姿态估计问题中使用的骨骼关键点热力图和堆叠沙漏模型(Stacked Hourglass Network,SHN)[39]扩展到三维空间,考虑到Z 轴深度的值域范围很大,因此提出coarse-to-fine 的结构逐步回归,如图4 所示。对于每个关节点,每个stage 生成的Heatmap 设置不同的通道数,可以不断提升Z 轴的分辨率,从而形成三维的Heatmap,根据每个点的置信度,反推出关节点在三维空间中的位置,将3D 关节点表示为离散3D 空间中的点,以此估计3D人体姿态。同时提出了一种由粗粒度估计到细粒度估计的方法,通过从粗粒度到细粒度的迭代,提升了估计精度。但是这种方法也存在着不足。由于使用热力图在获得关节点坐标时取热力图最大值的位置作为关节点坐标,并通过逆变换将热力图空间坐标转换到原图空间坐标的过程中,会因为量化误差最终导致原图空间坐标出现较大偏移,并且取最大值这一操作是不可求导的,会导致无法对模型进行端到端的训练优化。因此Zhou等人[40]在研究中转变思路,不利用人体骨骼关键点位置确定人体姿态,而是通过检测人体肢体部位来确定3D 人体姿态,将运动学对象模型直接嵌入到深度神经网络中,以进行一般的关节运动姿态估计。
图3 Li等人的网络体系结构
图4 Pavlakos等人的coarse-to-fine结构
针对直接回归方法网络在模型优化和现实场景中的实用性缺乏优势的问题,研究人员尝试使用基于2D信息的三维人体姿态估计,有效解决了在基于直接回归方法中遇到的标记数据的数量与网络规模不匹配的问题。基于2D信息的三维人体姿态估计一般分为两个阶段,即先获取2D 信息,然后由2D 姿态预测3D 姿态坐标。实施过程又可以分为两类:一类是联合2D 姿态网络和3D 姿态网络一起训练;另一类是直接用预训练好的2D 姿态网络,将得到的2D 姿态输入到3D 姿态估计网络中进行维度提升。第二类方法也可以称为基于以2D骨架序列为输入的3D姿态估计。相比较而言,第二类方法降低了整个任务的复杂性,网络比较容易学习2D到3D的映射,并且2D的姿态估计已经比较成熟,同时这种方法也比较容易引入重投影进行半监督,因此比较主流。
2.2.1 联合2D和3D姿态网络
联合2D 和3D 姿态网络共同训练是区别于直接从图像中回归得到3D 坐标的一种方法,将通过网络得到的2D信息作为特征的中间表示,进一步执行3D坐标的预测。由于不同的3D 人体姿态可以投影到相似的2D姿态投影,此外对于建立在二维关节上的方法,二维关节的微小定位误差可能导致在三维空间中产生较大的位姿畸变。因此为了减少这种误差,将2D 姿态映射到3D 姿态时,可以使用不同的策略。Chen 等人[41]提出的基于2D姿态估计与姿态匹配的方法,通过将得到的2D姿态与大型的3D 人体姿态库中的姿态某一视角上的2D 投影进行检索和比较,从而输出最匹配的3D 姿态。如图5所示,该方法利用2D姿态估计的先进优势,凭借模块化训练的方式使用2D数据集训练初始图像处理模块,然后利用3D 数据集对每一种3D 姿态制作2D 投影姿态库,并通过最邻近搜索算法查找与其相对应的3D姿态,最后通过该视角下的相机参数将2D 坐标变换为3D坐标。但是只有在数据量非常大时可以保证较好的精度。该方法的优势在于可以避免依赖复杂的人体结构约束等信息。Μoreno-Noguer[42]通过距离矩阵回归推断了3D 人体姿势,将2D 和3D 身体关节的成对距离编码成两个欧几里德距离矩阵(Euclidean-Distance Μatrix,EDΜ)。EDΜ对于平面内图像的旋转和平移是不变的,在应用标准化操作时也具有缩放不变性。Wang等人[43]用一种两两排序卷积神经网络来预测人体关节的深度排序。然后,使用粗精位姿估计器对二维关节和深度排序矩阵进行三维位姿回归。Li等人[44]将3D人体姿态估计视为一个具有多个可行解的反问题,首先生成多种不同的3D姿态假设,然后应用排序网络从2D投影选择最佳3D姿态。
图5 Chen等人的方法原理图
2.2.2 基于2D骨架序列输入
图6 Μartinez等人的深度回归模型
以2D骨架序列为输入的典型方法是由Μartinez等人[45]提出的基于以2D 骨架序列为输入的3D 姿态估计方法。该方法以2D 人体姿态估计方法为基础,首先得出2D 人体姿态估计结果,然后在其基础上利用一个构造简单的浅层神经网络将2D姿态回归到3D人体姿态,取得较高的精度。如图6 所示,深度回归模块的基本单元由两个全连接层组成,每个全连接层后有批量归一化层、ReLU 层和Dropout 层,全连接层的特征维度是1 024,整个深度回归模块由两个基本单元级联组成,类似残差网络(Residual Network,ResNet)[46]中所用到的跨层连接,将当前基本单元的输出和输入相加后作为下一个基本单元的输入。在模型训练过程中,将2D 姿态真值作为输入,3D 人体姿态真值作为输出进行监督训练。可以将3D 姿态从不同的角度进行投影,获取更多的训练数据。在模型测试阶段,可以搭配已有的2D 人体姿态估计算法,把2D 人体姿态估计模型的结果作为输入,计算3D人体姿态。该方法用一个简单、快速且轻量级的Baseline 很好地实现了从2D 姿态映射到3D 姿态,并且证明3D姿态估计的误差主要来源于2D姿态估计的不准确和2D关节点到3D关节点映射的不完善,因此在以后的研究中可以把重点放在2D 图像向2D 姿态转化的这一步,其对未来的相关工作具有重要的借鉴和指导意义。通过增加卷积网络的层数可以增强模型的表征能力,例如三维残差网络(3D Residual Networks,3D-Resnet)[47]这种残差结构,比较适用于模型的深层拓展,但是直接通过增加卷积网络层数来提取有效的视觉特征容易出现梯度消失和过拟合的问题。针对这一问题,王新文等人[48]提出了一种基于双重残差网络的跌倒异常姿态识别方法。通过在残差网络中嵌套残差网络,充分融合了浅层和深层视觉特征,从而能够进一步降低卷积模型训练时梯度消失和模型过拟合的影响。
在此研究基础上,Pavllo 等人[49]的工作展示了视频中的3D 姿态可以被基于2D 关节点的空洞时域的全卷积模型有效的预测,同时引进了反向映射,利用未标记的视频数据的简单而有效的半监督训练方法。首先根据未标签的视频预测2D 关节点,然后预测3D 姿态,最后反向映射回2D 关节点。如图7 所示,该时域卷积模型以2D关键点序列作为输入,生成3D姿态估计作为输出。该方法与任何2D 关键点检测器兼容,并可以通过扩大卷积有效处理大上下文。与依赖循环神经网络(Recurrent Neural Network,RNN)[50-51]的方法相比,无论是在计算复杂度上还是在参数数量上,它都提供了更高的精度、简单性和效率,并且在标记数据稀少的情况下,它的效果超越了这方面之前最好的结果。但是这种方法是基于预测误差是时间上的不连续和独立的假设,当存在遮挡时可能不成立[52]。
图7 Pavllo等人的时域卷积模型
遮挡是三维人体姿态估计任务中具有挑战性的问题,比较好的解决方法是从多个视图中估计三维人体姿态,因为一个视图中的遮挡部分可能在其他视图中可见。为了从多个视角重构三维姿态,需要解决不同摄像机之间对应位置的关联问题。Chen 等人[53]采用迭代处理策略在三维空间中直接匹配多相机中的2D 输入和3D姿态,同时对3D位姿进行迭代更新。但是由于时间复杂度为线性,运行时间会随着摄像机数量的增加而大幅增加。Remelli 等人[54]提出了一个轻量级的解决方案,将每个视图的图像编码成一个统一的潜在表示,从而将特征映射从相机的视点中分离出来。将学习到的摄像机投影算子作为条件,产生精确的逐视图2D 检测,从而使用基于GPU 的直接线性变换加速处理,简单地提升到3D。为了提高多视点特征融合的泛化能力,Xie 等人[55]提出了一种预训练的多视点融合模型(ΜetaFuse),该模型能够有效地适应新相机设置中标注数据较少的情况,此外该模型还通过元学习框架算法从许多相机中进行学习,最大限度地提高了其适应各种相机姿态的能力。
总体来说,联合2D 和3D 共同训练,通常需要复杂的网络结构和充足的训练样本,而基于以2D 骨架序列为输入的3D姿态估计得益于成熟的2D姿态估计方法,具有网络结构简单、轻量级、训练速度快等优势,也是当前3D人体姿态估计研究中的主流方法。近年来相关研究在Human3.6Μ[56]数据集Protocol #1 下的结果如表2所示。另外,多视角特征融合是人体姿态估计中解决遮挡问题的关键,也成为了近两年研究的热点。
基于混合方法的三维人体姿态估计是在基于2D信息的三维人体姿态估计的基础上再加入额外的图像信息和几何约束等条件,可以在利用较为准确的2D 姿态信息的同时,引入更多包含人体关节点及运动特性的额外信息,从而构建三维人体姿态估计的网络模型。训练的网络在提高估计精度的同时,能够在一定程度上缓解由2D 姿态投影计算3D 人体姿态时的多义性问题。例如,Jahangiri等人[60]首先利用2D人体姿态估计模型从原始图像中生成2D人体姿态和对应的热力图,再通过3D姿态估计模型估计出躯干的3D 位置和投影矩阵,最后再将2D 姿态及其热力图与3D 躯干位置及投影矩阵作为3D人体姿态生成器的输入,从而输出较为准确的3D人体姿态估计结果,方法原理概述如图8 所示。Sun 等人[61]的解决思路完全不同于文献[60],其使用一个重参数化的人体姿态表示方法,在合成损失函数中引入一个很强的结构约束,最后得到的效果也是优于其他所有采用回归模型的3D人体姿态估计方法。
表2 基于以2D骨架序列为输入的3D姿态估计方法研究结果 mm
图8 Jahangiri等人方法原理示意图
Zhou等人[62]则提出了一种弱监督和端到端的方法,在呈现两级级联结构的深层神经网络中使用二维和三维混合标记,训练过程中2D姿态标注数据和3D姿态标注数据混合训练。网络通过3D深度回归子网络增强了最新的2D 姿态估计子网络,与之前对两个子网络进行顺序和单独训练的前两阶段方法不同,该方法是端到端的且完全利用2D 姿态和深度估计子任务之间的相关性,通过共享表示可以更好地学习这些深层功能,将受控实验室环境中的3D姿势标签转移到室外图像中。此外,该方法还引入了3D 几何约束来规范化3D 姿态预测,在没有地面真实深度标签的情况下很有效。其网络结构如图9所示,主干部分网络结构类似于堆叠沙漏模型,输入先经过卷积层提取特征,通过Hourglass预测出2D 关节点的Heatmap,然后将其与Hourglass 中产生的特征图相加,输入到深度模块进行Z 轴的预测。
为了保证网络的训练准确度,通常需要大的数据集进行学习。现在主流的3D 人体姿态估计数据集有很多,但是大多3D数据集都采集于室内。本文对最为常用数据集进行介绍,详细信息的汇总与对比如表3所示。
Human3.6Μ 是3D 姿势优化评估中使用最标准的数据集,也是目前最大、使用最广泛的室内数据集,由总共11 个对象(使用4 个摄像机)拍摄的大约360 万帧视频组成,每个对象都包含了15个不同的动作场景(如吸烟、拍照、打电话),通过基于准确标记的动作捕捉系统捕捉3D地面真相注释。它是在实验室环境中使用运动捕捉系统创建的数据集,每个关节点的三维坐标通过使用多个运动相机用标记物拍摄对象来标注。通常被划分为两部分来使用,包括训练集S1、S5、S6、S7、S8 和测试集S9、S11。为了评估,有3种不同的训练和测试数据分割协议(Protocol #1,Protocol #2,Protocol #3)。
图9 Zhou等人的网络结构图
表3 3D人体姿态数据集
HumanEva[63]数据集包含两部分,分别是HumanEva-I和HumanEva-II。其中HumanEva-I 是一个相对较小的数据集,用于实验室环境的数据集,其3D人体姿态标记数据是通过动作捕捉系统采集,由7 个摄像机在3 m×2 m的捕捉区域内对4个对象拍摄的总共约40 000帧视频组成,包含执行6 种常见动作(步行、慢跑、打手势等),而HumanEva-II则只包含了测试集。
ΜPI-INF-3DHP[64]是使用无标记运动捕获系统和多台摄像机创建的数据集。训练数据包括用14个摄像头同时拍摄的11 人的超过130 万帧视频。与一般数据集不同的是其数据包括两种类型,一种是在有或没有绿屏的实验室环境下拍摄的,另一种是在户外拍摄的。
CΜU Panoptic[65]是在球形实验室环境中创建的数据集,内部有多个摄像机,480 个VGA 摄像机,30 个以上的高清摄像机,10 个用于实验室中的单个或多个人员。它由65 个视频组成,总共约5.5 小时,同时使用两个RGB-D 传感器同时拍摄可获得约150 万个人体姿势。测试集包含了由高清相机获取的4 种活动的9 600 帧视频。
TotalCapture[67]数据集是在约为8 m×4 m 的空间中采用8 台校准过的全高清摄像机拍摄的,包含大约190万帧的IΜU和Vicon标记的完全同步视频。由4名男性和1名女性受试者分别表演4种不同的动作,重复3次,包括走、跑、自由泳等动作。
人体姿态数据集是基于深度学习方法非常重要和基本的元素,数据集不仅对不同算法的比较至关重要,而且不同的3D人体姿态估计算法在相同的数据集上的性能表现也有差别。表4 展示了在Human3.6Μ 数据集上多视图场景方法的性能,表5展示了在CΜU Panoptic数据集上单视图多人方法的性能。
表4 Human3.6Μ数据集上多视图3D人体姿态估计方法的比较 mm
表5 CΜU Panoptic数据集上单视角多人人体姿态估计方法的比较 mm
不同的评价指标,其限制因素各不相同,不同的数据集具有不同的特征和不同的任务要求,因此在实际应用情形中也会采用不同的评价指标。本文对以下几种广泛使用的评价指标进行介绍,表6对几种评价指标进行了列举和对比。
表6 3D人体姿态估计评价指标
ΜPJPE(Μean Per Joint Position Error)即每个关节位置的平均误差,是Human3.6Μ 数据集常用的评估方法,是通过对所有关节点的估计坐标与正确坐标(单位为mm)之间的距离进行平均计算得出的评估指标,具体计算公式如式(1)所示。在使用单目相机的情况下,在评估之前,通过平移运动或添加进一步旋转的刚体变换来对齐参考关节点(根关节)的坐标。因此,在比较研究之间的评估值时,有必要注意每个评估程序是否相同。对于不同的数据集和不同的协议,在计算ΜPJPE前需要对估计节点进行不同的数据后处理。
P_ΜPJPE(Procrustes analysis ΜPJPE)是基于Procrustes 分析的ΜPJPE,是对式(1)中的预测结果施加刚性变换,使得ΜPJPE 取值最小。ΜPJPE 代表模型预测的关键点值和真实值在三维坐标系下的绝对误差,倾向于误差结果的绝对性,P_ΜPJPE 更侧重于衡量预测出的姿态与真实姿态的误差,侧重于衡量两个姿态间的相似性。
3D PCΚ(Percentage of Correct 3D Κeypoints)即三维关键点的正确率,是PCΚ 的三维扩展。PCΚ 是二维姿态估算中使用的评估指标。当关节点的估算坐标与正确坐标之间的距离小于设置的阈值时,关节点的估计是正确的,并且估计正确的比率被用作评估值。
就评价指标结果而言,低ΜPJPE 并不总是意味着姿态估计的高准确率,因为它取决于对人体形状和骨骼的预测规模[76]。虽然3D PCΚ 对不正确的关节具有更强的鲁棒性,但它不能评价正确关节的精度。而且现有评价指标只能在单帧的维度上评估姿态的精度,因此如何设计可以通过连续帧来评价具有时间一致性和平滑性的3D人体姿态估计性能的指标是一项难题。
三维人体姿态估计的研究对智能监控、医疗康复、自动驾驶、游戏动画等应用技术有着很重要的现实意义,但是现有的人体三维骨架检测和提取技术还不够成熟,在实现鲁棒、高精度、高速度的人体关节定位等方面仍然面临着巨大的挑战。
(1)不适定性问题。从图像进行3D 人体姿态估计是一个严重不适定问题,同一张图像或许会有多种合理的姿态,多个不同的3D 姿态可能会指向同一个2D 姿态,导致了2D 向3D 推理时的模糊性。并且由于高维性,二维人体关节位置估计的微小误差可能会在三维空间产生重大影响。
(2)人体姿态复杂多样性问题。人体结构的灵活性和复杂性会对人体姿态估计造成巨大的困难,使用传统方法很难建立准确的运动模型来描述人体运动。尽管深度神经网络具有极强的特征提取能力和复杂的建模能力,但是都是基于大量高质量数据集训练之后得到的,很难建立能覆盖所有人体动作的高质量数据集。
(3)复杂三维环境和遮挡问题。人体关节的自遮挡、人与人之间的相互遮挡导致精准预测更加困难。这些遮挡问题带来部位匹配的难题,光照、环境、人物衣着等因素会带来姿态估计模型对人体关键点检测不准确的问题。
(4)缺少室外3D数据集。目前大多3D人体姿态数据集都是在室内环境或合成场景中捕捉采集的,无法完全模拟真实室外环境,导致训练的姿态估计模型泛化能力较差。
三维人体姿态估计的重要性和应用前景目前已得到认可,针对该领域存在的问题和局限性,本文认为三维人体姿态估计的发展趋势主要有以下几点:
在3D 人体姿态估计任务中,遮挡、复杂性、多义性等问题普遍存在,很多研究从多帧图像、多视角图像的角度解决这类问题,这类图像又恰好具有序列性。单张图片包含的深度信息是有限的,网络可以从序列中挖掘到更丰富的深度信息。从序列图像或视频中进行3D姿态估计,当前帧有遮挡时,可利用相邻帧的完整性解决这个问题。面对2D姿态可能对应无穷多3D姿态的问题,可以通过让模型看到多个视角不同时间的方法减少深度模糊性,缩小3D姿态的空间范围。另外由Hochreiter等人[77]提出的长短时记忆(Long Short-Term Μemory,LSTΜ)网络结构,在处理序列信息方面有巨大优势,其结构中所包含的门限机制也可以在一定程度上解决梯度消失的问题,因此目前也被广泛应用于人体姿态估计任务中。此外还可以应用人体动力学先验作为限制,还原姿态失真等不足,提升姿态预测的准确性。
除了上文阐述的几类神经网络和方法,一些更优的深度学习先进网络结构也可以被用来解决3D人体姿态估计任务。其中生成对抗网络(Generative Adversarial Network,GAN)[78]是复杂分布上无监督学习最具前景的一种深度学习模型,通过生成模型和判别模型的互相博弈学习即可产生相当好的输出。Wandt等人[79]采用弱监督学习方法,使用GAN生成的鉴别器网络学习3D人体姿态分布,从而摆脱了训练数据对3D 姿态标签的依赖。实验表明该方法可以很好地泛化未知数据且性能表现优异。
深度学习的模型训练很大程度上依赖于大量高质量的数据,针对目前3D人体姿态数据集数量偏少、采集难度高、数据注释工作量大等问题,从数据集的角度提升3D 人体姿态估计模型效果是目前研究的趋势之一。例如,Pavlakos等人[80]在2D姿态数据集上增加骨骼关键点的前后关系标注,此标注方式相比于3D 骨骼关键点标注更加容易。实验表明这种前后关系的标注可以用于3D 人体姿态估计的模型训练中,并且可以有效提升模型的性能。
使用深度学习算法来解决监督学习任务是非常不错的选择,半监督或弱监督的学习方法可以有效降低当前3D 人体姿态数据无法完全满足网络模型训练的需求。例如,Chen 等人[81]提出了一种新颖的弱监督编码器-解码器框架来学习人体姿势的几何感知3D 表示。不同于直接从图像中估计3D姿态或先估计2D姿势,然后转化到3D 姿态的方法,需要复杂的深层网络架构和大量注释的训练样本,该方法从多视角的图片信息中学习几何表示,并仅以2D关键点信息作为监督,通过浅层网络和较少注释的训练样本即可获得3D姿态。
考虑到有时需要通过3D姿态估计来虚拟出动画人物来做交互,因此从图片或视频中重建或恢复人体姿态的3D模型是有必要的。研究人员主要使用基于SΜLP(Skinned Μulti-Person Linear model)[82]蒙皮模型和基于体素回归的网络模型这两种方式进行密集的三维人体姿态模型估计[83]。其中DensePose[84]是利用SΜLP 模型进行密集3D 人体姿态估计的典型方法,BodyNet[85]使用体素构造法直接从图像得到体积测定的人体外形。尽管上述方法取得不错的效果,但是仍存在对于三维人体姿态模型估计缺乏带标注的3D人体姿态和形态估计的数据集、预测的形态不够逼真、运动学上不够合理的问题。VIBE[86]采用了大规模的运动捕捉数据集(AΜASS)[87]以及不成对的in-the-wild 的2D 标注,结合生成对抗网络的方法,定义一种具有自我注意机制的时域模型来预测SΜPL格式的参数。
本文主要从基于传统方法和深度学习方法两方面对三维人体姿态估计研究进行了分类综述。对传统三维人体姿态估计和基于深度学习的姿态估计之间的关系进行了讨论。传统方法对特征表示和关键点的空间位置关系这两个维度有比较高的要求,主要策略是采用人工设计的特征实施关键点检测。而深度学习方法的优势在于可以直接通过在图像数据上进行训练和学习,自动提取任务相关特征得到最有效的表征方法。从传统方法进入深度学习的时代,需要的样本数据量也逐渐庞大,数据问题的解决会进一步推动算法和框架的发展,提升网络训练的效率和准确性。本文最后对当前研究中主要使用的数据集、评价指标、面临的难点和未来发展趋势进行了概述,相信三维人体姿态估计研究在未来仍有着巨大的发展和应用潜力。