摘要:文中提出在单张图片中3D姿态自动重建的方法。人体铰链关节、易产生错乱的身体部位的存在,杂乱的背景,都将导致人体姿态判断的歧义性,这都说明这不是一个简单的问题。为了减小歧义性,研究者研究了许多基于运动和阴影的方法,并对3D姿态进行重建。我们算法的关键思想就是增加运动和方向限制。前一个是在3D模型映射到输入图像时增加的限制,可以减掉那些与模拟人体不适宜的地方。后一个是通过创建合成视点加入限制,将输入视点复原成多方向的视点。应用这些限制后,3D模型映射到最初的和合成的视点,这样会进一步减少歧义性。最后,借用从相对于初始视点的合成的视点中没有歧义的部位,产生最后的3D姿态。在HumanEva-I数据库上,我们进行量化实验,在Image Parse (IP)数据库上非限制的图像上,我们进行定性分析。结果显示,提出的方法具有鲁棒性,并且能够精确的从单张图片中重建出3D姿态。
从单目图像中自动恢复人体的3D姿态是一项在机器视觉中非常具有挑战性的问题。因为铰链式人体的变形,自遮挡的存在,很大的自由度,相同的人在不同的环境限制下所表现的动作众多,因此从单张图片中估计人体的铰链结构具有很大的歧义性。这个问题的解决将有助于行人检测和跟踪、汽车安全、视频标注、人体行为识别和图像方面的应用。
最近的从2D图像中恢复3D姿态的方法可以被归类为(1)基于数据驱动和(2)从运动中恢复结构的技术(SfM)。基于数据驱动的方法通过图像的观察值或者2D节点的位置映射出的3D节点,预测出3D姿态[1.5.6]。与此相反,从运动中恢复结构(SfM)的方法,通过估计摄像机的参数、骨骼长度和部位方向,从相同组(一类)[18][19]不同图片中所获得的2D节点中,提取3D节点。这里我们综合了这两种技术,来取优舍弊。
给一个输入图像,我们使用现有的2D人体部位检测子估计2D关节位置(比如,Yang 和Ramanam[20])。由于自遮挡存在的限制,我们增加了一个预测步骤处理自遮挡,改善初始输入,再进行3D姿态估计。接着,我们将3D模型映射到2D节点,获得了一个有较强歧义性的3D姿态。通过增加运动和几何限制,我们降低了歧义性。为了解决所有剩余的歧义性,我们使用Twin-GP回归方法[5],从最初的一个视点预测新的视点,然后将3D模型映射到最初的和合成的视点上,来估计部位的相对深度。最后为了解决部位方向的问题,我们借助在合成视点中非歧义性的部位校正在初始视点中有歧义性的部位。(这是总体方法)
文章的主要贡献:
在困难的人体姿态场景中的2D图片上,建立了一个3D姿态自动重建的框架;
自遮挡的推理方法改善了初始化步骤,提高了2D姿态检测的精度,在公共数据库上已测试;
提出了一个自动解决部位方向歧义性的方法,而不是像[18]中依赖用户的输入。
图1 处理流程概图 (从左:)首先输入一张图片,运用2D部位检测子和自遮挡推理进行处理。下一步通过初始的视点产生多个合成的视点。然后,使用SfM方法增加运动限制减少歧义性。最后,从合成视点映射到最初的视点输入增加方向限制,生成3D姿态
正如图1展示的那样,我们提出的算法可以分成三个子阶段:1)初始化 2)预测合成视点3)估计3D姿态。我们采用了最好的Mixture of Parts检测子[20]来初始化我们的算法流程。尽管这些检测子在检测铰链身体部位时效率高效,但自遮挡存在时,他们依然会失败。在初始化步骤中,因此我们又增加了一个小的高效的方法来克服自遮挡问题(见3.1部分)。
将3D模型映射到初始视点上,将会产生歧义性的姿态。我们明显的增加几何和运动模型来减少3D姿态的歧义性,消减不合适的拟人化部位。然而,只利用这些限制不足解决歧义性部位的问题,尤其是肢体方向的问题(朝向/远离摄像头)。因此,为了解决剩余的歧义性,我们需要更多的关于部位方向的线索。这里我们提出了一个新的推理方法,通过从训练数据中学习的姿态分布生成合成(增加的)视点,最后采用SfM的方法,在最初和合成的视点中的相应的节点中估计部位的相对深度。这可以解决剩余的歧义性姿态的问题,不仅可以用于实验室控制事例中(比如HumanEva数据库[13]),也可以用于困难的易产生错乱的情况,比如IP(image Parse)数据库中[12]。
是从图像I的Pi位置中提取的HOG描述子,第一项求和表示的是图像的位置相相对之前定义的外观模板集的分数,第二项的求和是对相邻部位之间的弹簧关系的编码。推理通过最大化在位置p和类型t的分数继续进行(?)。
MoPS的自遮挡处理:在树结构模型中,孩子的本地得分将能够被其父母正确的遍历。然而当存在遮挡时(部分或者全部),树形结构转为图,分数有可能会被错误的父母遍历到,导致部位的丢失和不精确的检测,正如图2a展示的那样。
图2 使用[21]的部位检测子的样例结果(a)和自遮挡处理的结果(b)
在[11]中,我们提出了一个基于自遮挡校正的回归方法。我们观察到遮挡处理比遮挡校正更加困难。本文中,我们在MoPS框架中进行遮挡检测,MoPS在树中编码了运动结构。它隐含假设非连接部位是独立的,这在自遮挡下不符合的[14]。为了能够保持独立的假设,我们可以使用置信传播,从它们的得分中我们估计出遮挡的部位。当部位i的检测不够精确甚至丢失,即被其他的部位遮挡时,像素p的得分会下降到负无穷。在自遮挡情况下,位置p的得分是:
为了找到遮挡的像素,我们进行下面情形的处理:对于每个部位i,选择k个最大分数像素;获取它的边界框表示候选部位结果;找到其他部位与部位i的最大覆盖率;如果它超过了阈值 ,如果在p位置的得分比重叠区域环绕的像素的得分小,那么部位i的处理就当作是在像素p的遮挡部位。因此,我们削弱了特性结构,这使得有可能自啊非连接的部位间建立弹簧,由于自遮挡的存在。因此局部得分是独立的。然后我们使用[20]中的剩余的信念传播推理过程,获得了更精确的检测,如图2b。在实验中,我们根据经验设置k=5, =0.15。表1显示了,由于自遮挡推理步骤的处理,相对于现有最佳结果的提升。详细的评价协议,参照[20].
表 1 在MoPS中处理自遮挡的影响:相比默认的MoPS上,有较小的但是连续的性能提升,这里使用[21]中正确关键点的概率(PCK)作为评价标准。
为了生成精确的3D姿态,我们使用了Wei 和Chai[19]的方法,将3D模板映射到从前面步骤获得的2D结点矢量x上。[19]假设假定至少可获得5张2D图片,使用SfM方法估计摄像机参数。相反,我们只使用一张2D图片,这里假定摄像机的尺度参数是统一的。为了不同部位深度信息的歧义性,我们提出从最初的视点中估计多个合成的视点,这使得我们可以在每个骨骼的方向空间上增加新的限制,减少了3D姿态的歧义性。
3.2.1 提取3D训练数据
在我们的实验中,所有的数据是从CMU Motion Capture 数据库中收集的。每个视点的数据集是随机从每个视频序列中选择5帧。基于提取的每帧的3D结点,我们测量了人体头的角度,然后旋转3D姿态,在360度的极坐标上提取3D结点(?)。映射landmarks(?)到不同方向的2D平面,获得所有极坐标角度下的所有节点的2D点。
归一化骨架:在回归中,世界坐标的应用经常会获得失败的预测,由于不同尺度的人体骨架在进行不同动作时,和在转换过程中,都会产生很大的变化。为了实现在转换和尺度上,一定程度上不变,我们对每一个视点使用一个模板进行归一化。2D输入骨架是一颗树,Chip是根节点root,关节表示为结点,父结点与其孩子之间的边表示骨头。数学上,表示为 , 是一个含d个结点的骨架,归一化是这样进行的:首先,将Chip结点作为参考结点,将每个部位xi都转换为以Chip为起点(?)。第二步,将直角坐标系的结果转换为极坐标的形式。Xi= , 表示在父节点p和孩子结点c之间的骨头的绝对长度, 是骨头相对于水平方向的坐标。第三步,参考预先为每个视点定义的基础骨骼x0(?:),对每个估计骨头的长度进行尺度变换。归一化步骤的优势,和在尺度转换上变化的减弱,是为了适应高斯分布的输入数据。
3.2.2 多视点扩展
在所有的实例中使用归一化的步骤,将在每个视点产生N个样例。然后,在这部分中,我们将建立一个特定的模型从视点i到视点j进行回归。在我们的实验中,我们收集了CMU数据库中16个视点的数据(0-360度,间隔22.5度)。这里关键的思想是,通过回归的方法,从输入实例中产生新的骨架。对于这项任务,我们使用了级联形式的Twin-GPR。最后,我们使用建立的模型,从以下姿态上推测实质上的模型。
最近,在从图像观察值中进行3D姿态的结构预测中,Twin-GPR的使用已经代替了传统的回归方法,比如高斯过程回归和岭回归。Twin-GPR是一种多变量的回归方法,其编码了输入和输出之间的相互关系。使用[5]的方法,我们建立了一个回归模型,从输入视点中生成新的视点。
考虑到 ,是在n个实例中,从两个连续的视点i到j的归一化的实例,回归的目标是,在给定输入矢量 是,在观察到的 上预测观察不到的矢量 的分布,因此,一个测试矢量的预测高斯将会通过最小化输入[5]分布间的散度来进行测出(??):
输出的分布是:
其中 是对输入的矢量z估计的目标的姿态的归一化矢量, 和 视点I和视点j的训练姿态的均值矢量,且
是半正定协方差函数,编码了输入训练矢量I与测试矢量z之间的关系,训练目标矢量J和估计的目标矢量 之间的相关性,K是输入I或目标J的NxN的矩阵, ,每个 都是Nx1的矩阵,表示矢量z, 间和矩阵I,J间相关性(?)。现在的问题是,如何在没获得z~估计值的情况下,计算Eq.4 中分布。为了达到这个目的,我们使用了kullback-Leibler散度,在Eq.3, Eq.4 两个公式的分布中。然后,通过迭代过程,使用拟牛顿优化(?)最小化散度,使用岭回归子初始化z~,对每个输出矢量单独训练。
级联Twin-GPR:Dollar等[10]提出了一个有趣的回归方法,能够以级联的形式逐渐达到真值。在我们的框架中,我们从输入视点中恢复其他的多个视点。一种简单的方法是,学习从一个视点映射到所有的视点。然而,这样随着模型需要学习的数量很大,增加了系统的复杂性。受[10]的启发,我们将学习特定视点回归模型的问题作为一种级联的Twin-GPR问题。 看作是基于Twin-GPR的函数,从zi->zj的映射中,zi是输入姿态的的归一化矢量,zj是新的视点的矢量, 是zi的视点。Reg的输出成为下一次迭代的输入, 。在每一步中, 加入到视点中,使用特定姿态的模型进行回归。Algorithm 1,计算了N次,概述了从输入视点生成新的的视点的步骤。
3.2.3 原始视点估计
为了初始化级联回归过程(Alg.1),我们估计了初始视点的方向。知道了人体姿态的初始视点,将大大减少3D姿态重建的歧义性[4]. 采用高斯混合模型(GMM)推测初始视点[7].GMM使用最大概率贝叶斯框架。已经用来学习贝叶斯回归模型的数据,也用来训练GMM模型。现在,共16个视点(类)。我们将每类的成员分为了很多组合(根据经验,我们使用了50个进行实验)。根据输入初始视点,在推理中,初始视点的方向,由最大可能性的类决定。
表2 HumanEva上算法比较,单位mm,括号外的值是与真值的评价结点误差。括号外的是标准差。[4][9]没有提供Jogging的测试。[5]进行了先验背景提取。
在初始化步骤中,我们提出了一种当自遮挡存在时,对部位重叠和缺失问题的一种解决方法,即打断非连接结点间的弹性(?)。然而,我们清楚的认识到,一定程度上这个问题还是存在的,我们需要寻找一种跟鲁棒性的技术减少歧义性的观察值。受[15]的启发,计算产生的形状和真值进行严格对齐(?),这进一步减少了重建的误差。在我们的实验中,平均的重建误差在大约200mm,平均分布错误是90mm.注意,大部分的误差产生与从初始化步骤中输出的2D结点的偏离。
关于计算时间,每张图片的3D姿态估计约1min,包括需要获得初始2D视点的时间。
Fig.3(左图) 定性分析:(a)输入图像 (b)Valmadre[18] 的图像3D姿态恢复结果,使用了多张不同图片重建3D (C)提出的方法的结果,在单张图片中,使用2D结点的初始化。3D姿态归一化了,并且以起点为中心。
Fig.4(右图)最后的3D姿态估计的视觉比较(a)无 (b)含有自遮挡的处理。在(a)中,自遮挡导致错误的初始化,传播到最后3D姿态。(b)中,初始化是精确的,导致了精确的3D姿态估计。
在第二个实验中,(Fig.4),我们估计了提出的自遮挡处理的影响。实验是在IP数据库的图片上进行[12]。Fig.4a展示了使用混合图模型结构进行初始化的结果。Fig.4b显示了显示了相同图片的输出,但是有自遮挡处理机制。从视觉上可以看出,使用自遮挡处理的机制,提高了初始化的精度,阻止了误差传播到合成视点,再到最后的3D姿态。