0引言计算机视觉领域的3维人体重建是指对现实中的3维人体建立适合计算机表达和处理的数学模型。重建的目标是使重建模型保留更多现实人体的细节性和真实性。在该方向上,人们常用的方法有:基于深度扫描仪重建(韩凯等,2015)、基于深度摄像头重建(Yu等,2017, 2020)等方法。随着深度学习方法的普及,人们大多使用深度学习回归参数的方法完成重建任务(Yoshiyasu等,2018;Kanazawa等,2019;Zheng等,2019),目前主要使用SMPL(skinned multi-person linear model)模型(Loper等,2015)实现3维人体重建。该模型解决了以往同类模型中一些软组织异常变形问题,如“太妃糖”、“领结效应”等,使模型的软组织运动更逼近真实人体。同时,使用模型重建也能避免进一步处理由于重建对象因为穿宽大衣服造成的重建不稳定性(Yang等,2016)。但如果针对多种多样的姿势进行3维重建,则需要先得到图像中人体的姿势和体型数据,然后再拟合模型完成重建。虽然SMPL模型一定程度上减轻了人体运动过程中软组织异常变形效应,但是实际的人体重建模型却常常因为回归参数的不准确而使重建损失较大。比如姿势参数$θ$代表的是该关节点相对父节点在空间中3个方向旋转轴角的大小,其中根据实际人体限制,某些关节点在一定角度下不可旋转,比如膝盖不可向前弯曲。但是由于一般重建方法的重心仅在外形相似而不在乎关节之间的内在联动性,所以此类误差常常出现,使得重建结果虽然外形类似,却并不符合人体工学。本文在研究中发现,直接学习模型参数常常会重建出异常动作,即人体不可执行的动作。Pavlakos等人(2018)通过实验证明,给姿势参数$θ$的72个轴角参数(axis-angle)加上不同权重,有助于提高回归精度,减少异常动作的发生概率,但并没有完全消除异常动作。因此,本文以消除此类误差为目的,提出一种基于关节机械结构设置值域的3维人体重建方法,完成3维重建任务。通过给72个轴角参数加上值域先验,使回归得到的参数值更符合人体工学,在重建外形相似的同时,关节运动、关节联动效果更真实,为重建结果在虚拟试衣等场景的应用做准备。本文采用主流的两段式重建方法,首先提取原始图像的2维特征,然后根据2维特征学习回归3维特征,在判断3维特征的值符合实际后,输入SMPL模型完成重建。本文方法的整体网络结构如图 1所示,整体工作分为3段,阶段1为数据预处理阶段(①,②),通过神经网络提取图中人体2维特征;阶段2为学习SMPL参数阶段(②,③),通过神经网络预测SMPL参数;阶段3为根据回归参数生成SMPL模型(③,④)。其中,③中的箭头——值域设定模块是本文的重点模块。 图1 基于姿势先验的两段式3维重建网络结构简图 Schematic diagram of two-stage three-dimensional reconstruction network structure based on posture priorFig 11相关工作由于3维人体重建实验常常存在数据集较小的问题,并且该问题难以解决,于是人们尝试通过改变监督方法来减少对原始数据的依赖,通过选用其他3维表征方法、提高预处理时对原始数据集中视频的取帧频率等方法来提高回归精度。Kocabas等人(2019)采用自监督学习来减少对3维数据集的依赖性,提出使用同一时间同一对象不同视角的两幅图像创建先验进行3维重建的方法。首先分别提取两幅图像中人体的2D关节点数据,然后使用“对极几何”计算实际3维空间下的人体骨架作为姿势预测的先验知识,最后直接从RGB图像进行卷积回归重建人体模型。该方法虽然效果不错,但在实际应用中难以推广,因为该方法首先需要制造一个大型的可以进行自监督学习的数据集,而该数据集的采集成本很高。在弱监督学习方面,Kanazawa等人(2018)通过对公开数据集中的3D模型进行学习,训练姿势判别器,通过对抗先验的方式,对回归的姿势进行鉴别,判断重建姿势是否合理。但这种通过离散数据学习得到的判别器,判别结果显然存在一定“假阳性”。使用不同的3维表征方法提高重建精度是另一种研究方向。Yao等人(2019)在3维人体重建上使用Güler等人(2018)提出的UV图,将人体展开UV图作为3维人体表征,同时作为回归对象,通过对RGB图像直接卷积回归UV图,以此解决2维数据推测3维空间的不确定性。同时,Kolotouros等人(2019)则为了避免回归过程中二次生成网格(mesh)造成的误差,采用图卷积回归人体表面点的空间坐标,将顶点坐标位置误差作为监督实现反向传播更新网络参数,并根据生成的3D模型二次回归SMPL模型人体参数,拟合SMPL模型,实现效果展示。虽然上述方法都取得了一定成果,但两段式全监督重建方法依旧是目前3维人体重建领域的主要方法,且很多研究证实了其有效性。Pavlakos等人(2018)证实了通过增加中间监督进行3维人体重建的方式能够减少重建误差。其主要特点是首先通过给定RGB图像提取图像中人体的2维特征(包括热图、关节点位置和人体轮廓等),然后根据2维特征推测人体空间状态下的3D信息。主要的代表工作有Bogo等人(2016)结合DeepCut(Rajchl等,2017)提取图像中人体的2维关节点,然后再推测3维空间;Pavlakos等人(2018)回归了人体关节点热图和人体轮廓二值图;Lassner等人(2017)回归出了关节点和人体的部分分割图。本文结合以往工作经验,使用两段式全监督重建方法进行重建工作,并在原有工作的基础上进行改进,使建模真实性上更进一步。主要工作包括:1)基于SMPL模型进行参数回归,为需要回归的姿势参数$θ$创造足够的先验,每一个参数设定了符合人体工学的值域作为回归先验;2)使用一种简单的3维人体模型重建方法成功重建3维人体,并在该方法上验证了关节轴角先验的必要性;3)使用基于人体关节结构的机械结构分析,作为回归参数的值域判别器,不仅可以使回归参数可变化空间呈线性,而且可以使重建人体的动作更接近真实人体。23维重建方法回归先验需要结合实际重建方法才能发挥作用。本文提出的3维重建方法采用两段式重建方法。首先,对单幅图像进行预处理,提取人体2维特征。然后,将提取的2维特征图像进行叠加,输入3维特征回归网络,得到基于SMPL模型的3维特征。最后,根据损失函数对回归得到的3维特征信息进行值域分析,将符合条件的回归结果输入SMPL模型,完成3维重建。整体工作分为3块:预处理模块、回归模块和姿势参数的值域设定模块。2.1预处理模块预处理阶段需要提取原始RGB图像的人体部分分割图(segmentation)、2维关节点位置信息、人体轮廓二值图以及去除背景的原始RGB图像,该模块的整体网络结构如图 2所示。其中,①为原图,②为分割图和关节点图的叠加图(render-light),③为去掉背景的RGB图(background-free RGB),④为人体轮廓二值图,⑤是②的最大外接矩形图,⑥是③的最大外接矩形图,⑦是④的最大外接矩形图,⑧为⑤和⑥的通道叠加图。 图2 预处理模块结构图 Pre-processing module structure diagramFig 2首先,沿用Lassner等人(2017)的工作,根据原始图像,得到人体部分分割渲染图②和人体轮廓二值图④,然后根据原始RGB①和轮廓二值图④, 使用简单的循环遍历法,生成去除背景的RGB图像③,背景像素为0。接着对②、③、④分别进行最大外接矩形裁减得到⑤、⑥、⑦,最后,将⑤和⑥进行通道叠加,得到1个长、宽与原图相同,通道数由3变为6的矩阵,作为回归模块中姿势回归的输入。至此,预处理结束,输出结果是裁减后的二值图像⑦和叠加的裁减图像⑧,分别作为体型回归器和姿势回归器的输入。2.2回归网络的结构设计整体网络设计需要考虑:1)找到一个合适的网络结构;2)调整合适的网络参数;3)选择合适的损失参数;4)损失函数的选择。这将影响反向传播时梯度下降的方向和速度。回归网络的网络结构如图 3所示。首先改变输入矩阵图①和②的尺寸大小,得到③和④,然后再分别进行学习和回归。整体网络分为两部分,一是姿势回归网络③→⑤,二是体型回归网络④→⑥。 图3 回归网络的网络结构 The network structure of the regression networkFig 31) 姿势回归器,如图 4所示。输入为预处理模块输出的叠加的裁减图像⑧(图 2),输出为SMPL模型的姿势参数$θ$。其中,回归网络使用ResNet50(residual network)加3层全连接,将输出神经元的个数调整到与SMPL模型的姿势参数$θ$个数相同。 图4 姿势回归器网络结构 The network structure of the pose regressionFig 42) 体型回归器,该回归器沿用Pavlakos等人(2018)的经验,使用人体二值轮廓图作为输入,回归生成SMPL模型的体型参数$β$。使用的网络结构是通过3×3卷积层和最大池化层叠加的方式,最后加上一层全连接层,将输出神经元的个数降至10,与实际的$β$值的参数个数相同。2.3损失函数损失函数分为3个部分: 1)姿势参数$θ$和体型参数$β$预测值与样本值的损失。即通过姿势回归器和体型回归器两个网络学习得到的姿势和体型参数与数据集样本“.pkl”文件中参数的误差损失$L_{{\rm{para}}}$;2)3维顶点损失。根据预测值生成基于SMPL模型人体表面网格(mesh)可以得到网格的6 890个顶点,这里的损失是顶点预测值和实际值的误差损失${L_{{\rm{3D\_vertex}}}}$;3)投影损失。将生成的SMPL模型进行投影,得到投影图像,并与原图进行对比,得到投影损失$L_{{\rm{reproj}}}$。具体损失$L$为1$L = {\mathit{\lambda }_1}{L_{{\rm{reproj}}}} + {\mathit{\lambda }_2}{L_{{\rm{3D\_vertex}}}} + {L_{{\rm{para}}}}$ 式中,$λ_{1}$为重投影损失在总体损失函数中的权重,$λ_{2}$为网格顶点损失在总体损失函数中的权重。Pavlakos等人(2018)证明了人体模型顶点坐标作为损失参数要比使用姿势和体型参数作为损失参数得到的重建误差更小。本文认为,这是由于将回归参数的“不均等代价”默认为“均等代价”求“全局代价”引起的(周志华,2016)。因此,可以使用增加权重的方法,对整体影响大的参数给予较大的权重以侧重回归重点。但是权重的设置成了一个非常大的问题,甚至需要通过一个特殊网络学习权重。Pavlakos等人(2018)没有给出解释,本文认为因为重建的最终目的是为了使建立的模型更加逼近真实人体表面,因此,可以理解为建模的顶点位置欧氏距离足够近,因为顶点位置由人体表面网格得到,人体表面网格在SMPL模型中可以通过回归得到的姿势和体型参数代入模型得到。那么,如果以网格顶点的重合性为回归目标的话,SMPL模型本身的生成过程就可以看做是一个给姿势和体型参数赋予权重的过程。因此可以理解为给需要回归的体型参数和姿势参数赋予权重后,得到了网格顶点。所以使用网格顶点作为回归的损失对比值有助于提高回归的精度。3姿势参数值域分析姿势参数值域分析是本文工作的关键,也是本文的主要创新点。对于回归SMPL模型的两个参数$θ$和$β$,常常会出现根据回归参数求到的损失难以下降的现象。无论是通过调整学习率、调整输入数据集的个数、将网络结构更复杂或者简单化,还是通过修改batch size(一次学习输入图像的个数)或dropout等参数都无法解决这一问题。很多类似的研究提出了一种观点和现象:基于回归得到的$β$和$θ$的SMPL模型,即使回归精度达到要求,有时也会出现奇怪的非人类可执行动作。图 5即为SMPL模型的姿势参数中5号关节点(右膝)的第1个参数的异常值情况。图 5(a)(b)为右膝前向弯曲,显然为人体健康情况下不可执行动作。图 5(c)为SMPL模型0值情况,即所有动作参数都为0的正常动作。 图5 异常动作 Abnormal movementsFig 5 ((a) main view; (b) left view; (c) main view of pose parameters are all 0)因此,可以很直观地看出,pose参数的第15个参数绝对不应该小于0,如果纯粹从数学角度讲,当这个旋转数值$θ_{15}$满足条件$θ_{15}∈(-2$π$, -$π$)$,却又成为正常动作。以此类推,只要该值满足条件$θ_{15\_\rm{pred}}=θ_{15}+n×2π,θ_{15}∈(-2π, -π), n∈{\bf{N}}$,那么重建动作就符合实际情况,但这样异常数值的回归毫无意义,因为当一个数值符合动作但出现异常大小时,将扩大整体回归的代价“不均等性”,影响整体回归精度。本文基于人体工学,结合机械原理分析人体关节连结的联接结构,从机械角度对所有关节角参数设置值域先验,使得基于学习得到的预测值重建的3维人体模型动作均符合人体极限,为人体可执行动作,同时,关节运动更符合人体联动性。如图 6所示,本文对基于SMPL模型的人体23 + 1 = 24个关键点72个参数值变形分析。首先将所有关节点置0得到标准模板,然后分别对24个关键点72个参数赋值-π/6旋转角度,得到关节变化展示图。24个关键点在SMPL中的定义为骨盆(视角)、左/右臀、下脊柱、左/右膝、中脊柱、左/右脚踝、上脊柱、左/右脚、脖子、左/右锁骨、头、左/右肩、左/右肘、左/右手腕、左/右手。 图6 2D关节点定义 2D joint point definitionFig 6最后,依据变形规则,绘制了符合该轴角规则的欧拉角坐标系,如图 7所示。 图7 SMPL模型中的欧拉角坐标系 Euler angle coordinate system in SMPL modelFig 7本文对每个关节进行机械结构分析,然后计算关节点的空间自由度。接着,因为SMPL中每个关节点的位置都是用该结点在关节树中相对于父节点旋转的3个轴角表示的,由此,结合自由度分析轴角值域,设置姿势参数值域,具体设置如表 1。表1 根据自由度设定姿势参数取值范围 关节点 代表含义 序号 取值范围 序号 取值范围 序号 取值范围 0 骨盆(视角) 0 - 1 - 2 - 1~2 左/右髋 3/6 [-π, π/2] 4/7 [-π/2, π/2] 5/8 [-π/2, π] 3 下脊柱 9 [0, π/4] 10 [-π/2, π/2] 11 [-π, π] 4~5 左/右膝 12/15 [0, π] 13/16 [-π/4, π/4] 14/17 0 6 中脊柱 18 [0, π/4] 19 [-π/2, π/2] 20 [-π/2, π/2] 7~8 左/右脚踝 21/24 [-π/2, π/4] 22/25 0 23/26 0 9 上脊柱 27 [0, π/4] 28 [-2π, 2π] 29 [-π/2, π/2] 10~11 左/右脚 30/33 [-π/2, π/2] 31/34 0 32/35 0 12 脖子 36 [-π/2, π/2] 37 [-π/2, π/2] 38 [-π/2, π/2] 13~14 左/右锁骨 39/42 [-π, π] 40/43 [-π, π] 41/44 [-π, π] 15 头 45 [-π/2, π/2] 46 [-π/2, π/2] 47 [-π/2, π/2] 16~17 左/右肩 48/51 [-π, π] 49/52 [-π, π] 50/53 [-π, π] 18~19 左/右肘 54/57 [-π, π] 55/58 [-π, 0] 56/59 0 20~21 左/右手腕 60/63 0 61/64 [-π/4, π/4] 62/65 [-π, π] 22~23 左/右手 66/69 0 67/70 0 68/71 [-π, π] Set the range of pose parameters according to degrees of freedomTable 1 “-”表示取值范围不做限制。图 8展示了所有关节点在赋值-π/6后变形异常较为明显的7个关节点(左右对称关节仅展示左边),具体为下脊柱(关节点3序号9~11)、左膝盖(关节点4序号12~14)、中脊椎(关节点6序号18~20)、上脊椎点(关节点9序号27~29)、左脚(关节点10序号31~32)、左肘(关节点18序号54~56)和左手腕(关节点20序号60~62)。显然,这些动作都是健康人体不可能实现的。 图8 SMPL标准模板各关节逐一变型效果 SMPL standard template effect of each joint one by oneFig 8 ((a)standard template; (b)lower spine; (c)left knee; (d)middle spine; (e)upper spine; (f)left foot; (g)left elbow; (h)left wrist)根据机械原理(郑文纬和吴克坚,1997)对运动结构的定义,在机械上,将两构件直接接触形成的可动联接称为运动副,按照组成运动副两构件之间的相对运动是平面运动还是空间运动,将运动副分为平面运动副和空间运动副。将构件所具有的独立运动的数目(或确定构件位置的独立参变量的数目)称为自由度。显然,做平面运动的自由构件具有3个自由度,即沿$x$轴的移动、沿$y$轴的移动和绕$xOy$平面的轴转动。但当其与另一个构件组成运动副之后,构件之间的直接接触,使得某些运动会受到限制,自由度随之减少。平面机构的机构自由度计算为2$F = 3n + 2{P_{\rm{L}}} - {P_{\rm{H}}}$ 式中,$n$指某一平面机构中,除了机架外共有$n$个构件,$P_{{\rm L}}$指低副个数,$P_{{\rm H}}$指高副个数。$2P_{{\rm L}}$表示低副限制两个自由度,$P_{{\rm H}}$表示高副限制一个自由度。对于空间运动副,显然,做空间运动的自由构件具有6个自由度,即沿3个轴线的移动和绕3个轴线的转动,运动副引入的最大约束为5。因此,空间机构的自由度为所有活动构件自由度与所有运动副引入的约束数的差值,其计算公式为3$F = 6n - 5{P_5} - 4{P_4} - 3{P_3} - 2{P_2} - {P_1}$ 式中,$n$为活动构件数;$P_{1}$、$P_{2}$、$P_{3}$、$P_{4}$、$P_{5}$分别为1~5级运动副的个数。本文根据运动副引入约束数目的不同,将运动副分类。按组成运动副两构件之间联接方式划分关节点的运动结构。其中,属于平面运动副的关节点有膝关节、脚踝、脚、手,其余均为空间运动副。对于平面运动副,自由度都为1。因为人体所有关节点的运动副均为转动幅而没有移动副。因此,如图 7所示,对于平面运动副关节点,除了绕$x$轴旋转的俯仰角值域不为0,其余轴角的值域都为0。图 9为踝关节简化示意图。根据踝关节机械结构(图 9(a)),将踝关节简化为标准铰链结构,并绘制对应的机构示意图。首先,将该机构简化为活动铰(图 9(b)),由于SMPL模型中轴角参数是子节点相对于父节点的旋转角度,所以可以假设父节点为固定的机架,于是便可以将该关节继续简化为固定铰(图 9(c))。因此,该机构只能在平面内转动,结合人体关节限制设置值域为[-π/2, π/4],具体表示如图 9(d)所示。 图9 踝关节简化示意图 Simplified schematic diagram of the ankle jointFig 9 ((a) CT image; (b)active hinge; (c) fixed hinge; (d) range setting)图 10为膝关节简化示意图,虽然将其归并为平面运动副,但是基于值域“从大原则”,绕$y$轴旋转的偏航方向也增加了部分值域[-π/4,π/4]来表示“外八”、“内八”脚45°。 图10 膝关节简化示意图 Simplified schematic diagram of the knee jointFig 10对于空间运动副,因为人体任意关节联接的两个骨架均为转动联接,可简化为球面副,为空间Ⅲ级运动副,有3个自由度,为3个方向的转动,如图 11所示。因此,关节空间运动副最大自由度为3,其中数值以[-2π,2π]为最大值域,表示正负圆周大小,具体数值结合实际进行讨论。根据计算,这些关节点中,自由度为2的有肘关节和腕关节。其余关节点自由度均为3。自由度为2的关节中,肘关节可旋转方向为绕$x$轴旋转的俯仰方向和绕$y$轴旋转的偏航方向。腕关节可旋转方向为绕$y$轴旋转的偏航方向和绕$z$轴旋转的翻滚方向。其余方向的值域为0。 图11 肩关节简化示意图 Simplified schematic diagram of the shoulder jointFig 11自由度为3的关节联接方式常常可以表示成标准的球面副,表示3个旋转方向均有一定值域。如图 11和图 12所示。 图12 髋关节简化示意图 Simplified schematic diagram of the hip jointFig 12所以,虽然人体感觉似乎很多关节可以多角度旋转,但其本身的机械联接方式决定了其运动副的自由度。本文依据计算的自由度设置真实人体SMPL模型姿势参数值域。并依据从大原则,即若无法判定具体关节联接机制则值域放大。对完全无法准确定义SMPL模型对应的人体关节点,如脊柱,由于无法定位该关节为哪个脊柱位置,因此将该关节值域放大设置为[0,π/4]、[-π/2,π/2]、[-π/2,π/2],如表 1中18—20序号所示,表示以脊柱为中心,可向前弯腰π/4,向左向右旋转(即人体向后旋转)π/2,向左向右下腰π/2。4评价4.1数据集本文在UP-3D数据集(Lassner等,2017)上完成实验。该数据集包含8 515幅初始RGB图像,同时包含对这些图像进行处理得到的人体分割图、人体轮廓图、2维关节点标注图以及拟合SMPL模型得到的姿势和体型数据。本文使用前6 000幅图像作为训练集,后2 000幅作为测试集,这样划分也可以防止普通电脑的内存溢出问题。同时,该数据集提供了同时包含分割图和关节点位置信息的渲染图(图 2中的模块②),作为回归网络的输入之一,可以提供更多信息和细节。4.2训练细节4.2.1整体网络在姿势回归器和体型回归器中分别作回归时,本文使用控制变量法,如果要回归$θ$,那么就会在输入数据集时,将$β$的实际值作为已知条件,用以生成重建人体,然后计算损失函数。同理,如果要回归$β$,也是首先假定已知$θ$。在姿势参数$θ$和体型参数$β$的回归网络输入部分,使用最邻近插值法将图像尺寸变为128 × 128像素,当然该尺寸越大越好,尺寸越大可以使网络接受输入信息的信息量越多。同时,在对比实验中将尺寸缩放到与对比实验的输入重定义大小尺寸相同。整体网络在TensorFlow框架下搭建,搭建时需要解决回归参数如何生成SMPL模型,得到网格表面顶点,并依据顶点误差求损失值的问题。这里不能直接提取SMPL模型,需要重新改写基于TensorFlow框架下的SMPL模型,因为直接调用SMPL代码会出现变量类型不同使梯度下降的计算出错等问题。本文主要通过改写HMR(human mesh recovery)(Kanazawa等,2018)的开源代码得以实现,其中对SMPL源码进行了改写。4.2.2姿势回归器和$θ$的值域分析姿势参数$θ$的回归网络是整体工作中最难的部分,参数多、回归要求高。该网络使用ResNet50作为主要卷积层,然后增加3层全连接层,分别是1 024、512和72个神经元,将神经元个数调整到与$θ$参数的个数相同。实验参数如下:每一批数量batch size为64,学习率为5E-6, 使用Adam优化,L2损失函数,ReLU(rectified linear unit)激活函数,共训练80 k次迭代(iterations)。具体设置方法是先缩小数据量,通过损失函数下降速度初步确定参数的取值范围。然后,扩大数据量进行数据微调,节省了一定的工作时间。设定值域后,对回归的参数进行值域对比时,本文提出两种想法,一是直接舍弃本次网络参数,继续上次的训练参数训练;二是保留参数并采用值域对比约束预测值, 这里考虑两种约束方法:1)小于最小值或大于最大值,均置零;2)若小于最小值则赋值为最小值,若大于最大值则赋值为最大值。在随后的实验中发现,Kanazawa等人(2018)使用的直接舍弃的方法在此处不能直接使用,该方法会使抛弃的训练太多,损失值振荡、无法快速下降收敛,能否收敛全依赖于几率。本文实验中训练80 k后预测值损失依旧很大。因此,本文尝试使用第2种方法,将值域约束作为中间约束。因为只做预测结果约束对训练过程无法造成干扰,因此每一次迭代结束,对预测值进行值域矫正然后求损失。首先,使用直接归零的方法,但实验发现,该方法同样会造成严重的损失振荡,60 k次迭代后依旧无法收敛,分析发现是值域矫正使梯度损失值变化发生了异常,反向传播时参数更新方向出现紊乱,将本来的异常值规范化,使错误预测的中间神经元预测方向默认为正确。最大最小值约束存在同样问题。因此,采用两种想法结合的方法。通过舍弃的方法干预训练过程,预测值约束干预训练结果。每46次迭代进行一次值域判断,超出值域约束则剔除此次训练参数。选用46是为了使平均每一训练周期有两次以上值域判断,同时不会有太多训练结果被抛弃。计算损失值依旧使用实际预测值计算损失值进行反向传播,然后使用值域约束对每次预测值做约束,并用约束后的参数生成模型,得到预测结果。整体姿势回归对比效果变化如图 13所示。图 13(b)为原图的无权重回归,常常因为视角问题出现投影视角差错,使整体误差偏大。本文基于回归的姿势参数生成SMPL网格,使用网格点误差作为损失值,有效给定了回归方向(图 13(c))。增加值域分析(图 13(d)),重新训练后得到的回归结果如图 13(e)所示。图 13(f)为加上所有损失函数得到的结果,与原始RGB已非常相似。最后加上回归的体型参数,得到本文方法最终结果(图 13(g))。对比图 13(h),并对UP-3D数据集中给定参数进行阈值分析,发现UP-3D中提供了很多异常数值,规则化后得到图 13(i)。可以看出,该数据集剔除异常数值后与数据集本身(图 13(h))仍有很大偏差。 图13 姿势训练结果的整体变化情况 Overall changes in posture training resultsFig 13 ((a) original image; (b) weightless regression; (c) grid regression; (d) grid (range analysis); (e) retraining; (f) estimated posture (all losses); (g) the results of this paper (with body type); (h) UP-3D; (i) analysis of the UP-3D range))4.2.3体型回归器$β$参数回归网络共7层,5层3×3卷积层、1层1×1卷积层和1层线性全连接层,使得输出神经元节点数为10。该网络使用ReLU激活函数,dropout为0.5,优化方法使用Adam,损失函数采用L2,batch size为64,学习率为5E-5,训练60 k次迭代。使用$β$作为损失对比参量,对回归参数$β$进行消融实验。在回归SMPL模型参数中的$β$参数时,若不考虑“不均等代价”问题,仅使用$β$参数的10个值求预测和样本值的损失,由于回归精度均摊,使某些对回归准确度影响较大的参量没有回归到一定精度。图 14为直接使用$β$计算损失函数的回归效果。10个参数中的前两个参数分别控制大小和胖瘦,影响较大,人显得更大更瘦(图 14(d))。因此要考虑在10个参数的回归过程中赋予权重,而使用3.2节提到的根据体型和已知姿势生成SMPL模型的3D网格顶点位置(Per_vertex)求损失值即可解决该问题,加上所有损失函数后,得到的回归效果如图 15所示。 图14 直接使用回归参数$β$计算损失函数得到的回归效果 Regression result with using the regression parameter $β$directly to calculate the lossFig 14 ((a) original RGB image; (b) render-light image from UP-3D; (c) UP-3D ground truth; (d) result) 图15 加上所有损失函数后得到的回归效果 Regression result with adding all lossesFig 15 ((a) original RGB image; (b) render-light image from UP-3D; (c) UP-3D ground truth; (d) our result)4.3实验分析本文在UP-3D数据集上完成实验,实验结果如表 2所示。数值为平均顶点误差即表面误差,对比数值来自对比方法文献。可以看出,使用轴角作为损失函数参数时,本文方法重建的平均误差比Pavlakos等人(2018)的方法低15.1%,这是因为避免了如图 5所示的异常动作。使用所有损失参数时,本文方法的平均误差比Pavlakos等人(2018)的方法低7.0%。表2 在UP-3D数据集上的3D姿势估计 方法 平均误差 轴角 所有参数 Lassner等人(2017) - 169.8 Pavlakos等人(2018) 514.9 117.7 本文 437.0 109.5 3D pose estimation on UP-3D dataset /mmTable 2 加粗字体表示各列最优结果,“-”表示无对应实验。由于数据集UP-3D本身的误差较大,重建精度常常较低(Yao等,2019)。本文发现UP-3D数据集本身存在一定的不合理性。比如,pose的第15个参数为右膝关节,数据集中实际回归数应全部为正数,表示向后弯曲,但数据集中偶尔会出现为负数的情况,这是后期误差较大的原因之一。同样,本文仅展示了最理想的一次的结果。但通过对旋转角轴角(axis-angle)的预测值和实际值计算出的损失求平均误差的两种方法结果进行对比,可以看到,由于本文方法成功避免了很多异常动作,因此在第1次实验中取得了良好效果,表明本文思路正确,将实验效果与其他3维人体重建算法SMPLify (keep it SMPL)(Bogo等,2016)和HMR对比,效果对比图如图 16所示。可以看出,符合实际人体的动作(第3行)将引起全身骨架的结构性变化,特别是肩关节处的变化,本文方法更加符合真实人体,也更像一个在运动的人体运动过程中骨骼变化。这是由于本文的肘关节和腕关节的旋转是根据大臂运动变化延展出来的,而并非数据集中使用的肘关节异常旋转。同时也说明本文的工作是非常有价值和意义的,将有效提高重建人体的真实性。 图16 不同方法的效果对比 Comparison of results among different methodsFig 16 ((a) original RGB image; (b) render-light image from UP-3D; (c) UP-3D ground truth; (d) SMPLify; (e) HMR; (f) ours)5结论在实现端到端的基于RGB图像重建3维人体模型的算法时,基于SMPL模型中关节角度回归值域的设定能够有效降低异常动作发生率,使重建动作更加符合人体运动时的关节联动性,如手臂运动常常会引起肩关节、脊柱等相应关节一起运动。本文对回归时的网络结构提出了两点改进,通过增加输入信息和限制回归特征的取值范围改善回归性能,避免学习和回归非正常人体动作参数值。实验证明,本文的改进对基于该模型的参数回归方法有一定的作用。同时,本文的重建结果真实性更强,更符合真实人体运动时的关节变化。在3维人体重建领域,未来主要有两个工作方向: 一是提出更加精准丰富的模型,如使模型具有更细致的纹理,表情和关节动作表现得更加丰富;二是为模型增加逼真的人体肤质,并使模型完成生动的动作。
使用Chrome浏览器效果最佳,继续浏览,你可能不会看到最佳的展示效果,
确定继续浏览么?
复制成功,请在其他浏览器进行阅读