薛佳伟,孔韦韦,2,3,4,王 泽
1.西安邮电大学,西安 710121
2.陕西省网络数据分析与智能处理重点实验室,西安 710121
3.桂林电子科技大学,广西 桂林 541004
4.广西可信软件重点实验室,广西 桂林 541004
手势交互是人类与外界交互的最直接有效的方式之一,伴随着计算机技术的发展,人机交互的需求增长迅速,随之而来的是面对计算机时,人类如何能够更加有效地传递自己的信息素,使得计算机更加精确地理解需求。在交互手段上,除开语音系统外,肢体相关的语言也是极为有效的方式,对于手势的交互研究也就有了充足的应用前景。在实际任务中,AR/VR 等人机交互对于捕捉手部的运动有着严苛的精度和速度要求,在理想状态下,此类手部动作捕捉设备应该实时同步用户的动作并直接向计算机反馈记录相关数据,并且在保证精度和速度的情况下,能够降低相关设备的需求,比如仅使用单个RGB 相机来降低成本和功耗,以便拓宽设备的使用范围和实现对用户平台的下沉,更进一步地应该能够预测关节之间的角度和关联性,使得其可以更加直接地应用在计算机视觉、AR、VR等常见应用,提升设备的泛用性和之后针对其数据结果进行二次开发的便捷性。但是由于单目相机本身存在的诸如无法探测景深、数据收集范围不足等局限性,以及实际环境中出现的自遮挡,手部的复杂性,快速运动带来的动态模糊,甚至于不同肤色的影响,实现3D 手势交互是一项具有挑战性的任务。近些年来伴随着深度学习技术的发展,手势交互已经取得的长足的发展[1],然而,通过实际的操作与应用,仍可以观测到此类方法存在一定的不足。
首先,是现有的方法在数据集选择和处理上的不完善性,由于收集具有3D 注释的真实人手图像往往需要利用立体相机[2]或者景深相机[3],设备的局限性妨碍了大规模地收集不同数据,而其他数据集诸如合成数据集[4],也因为标注问题和不同领域之间的壁障不同而没办法很好地映射至真实图像,与之相对应的是各类形态迥异的具有标注的2D手势数据集[5]百花齐放,数据量大并且容易获得。然而此类数据集几乎无法映射至3D模型,由于维度的局限性使得其在3维空间实现交互的效果很差。与此同时,基于数据手套[6],或者3D 扫描仪的手部动作捕捉设备所产生的数据集也因为其设备的壁垒和底层获取原理的不同而无法应用来学习从图像到手部姿态的映射。
其次,此前大多数方法将主要工作集中于预测在3维空间中3D关节位置[7-9]。获取到的关节点的位置能够完成大多数应用场景需求,但这种仅仅输出的位置信息并不能够完全胜任高精度的设计需求,例如在计算机图形中制作手部网格模型的动画,高精度机械手的模拟,其不仅仅需要位置信息,还需要关节之间的旋转度以及预测相关动作行为等。在现行环境下,针对此类问题,文献[10-11]通过将运动学手模型拟合到稀疏预测来克服该问题。但是这不仅针对不同情况需要设计复杂的能量函数,并且即便是如此代价高昂的迭代优化方式也无法避免可能存在的局部收敛问题。文献[12-13]直接从RGB图像中回归关节角度。但是由于缺乏与关节旋转注释配对的训练图像,它们都以弱监督的方式(使用可微分的运动学函数和3D/2D位置损失)进行训练。因此,不能保证姿势在解剖学上的正确性。
基于此类问题,本文提出了一种实时单目手部运动捕捉方法来实现3D 手势的交互,该方法不仅可以估计2D 和3D 关节位置,同时还映射了关节之间的旋转信息。本文方法最大化利用上述的数据模块,包括具有2D 和/或3D 注释的合成和真实图像数据集以及非图像MOCAP 数据,用来获得更加精准的结果。具体来说,本文架构主要包含两个融合网络模型,以及搭载在上的外部可选设备用以应对各类需求,网络结构方面,本文采用的是基于RESNET50 的3D 手势关键点检测模型,其结构设计可以递增式预测2D/3D关节位置,而后续的接合网络是基于逆运动学设计的检测网络用来记录映射关节旋转信息,前置网络不仅将2D 关节检测公式化为辅助任务,还可以同时高效率地利用完全注释和弱注释图像用以辅助后续的多任务训练,伴随着训练和调优改进,前置模型能够更好地学习如何利用2D 监督从真实图像中提取重要特征,而预测3D 关节位置可以完全从合成数据中学习。然后,可以通过拟合参数化的手部模型来估计手的3D形状[14]到预测的关节位置。后置网络为了获得关节旋转预测,本文设计了一种基于逆运动学的端到端的网络模型,它通过将前置网络的3D 关节预测作为输入并回归关节旋转来解决逆运动学问题。后置网络在数据高频传输下预测单个前馈通道中的相关运动学参数,竭力避免了模型存在的过拟合等问题。在设计训练的过程中,可以合并提供直接的Mocap 数据[15],以及提供弱位置监督的3D关节位置数据,用来学习姿态先验和纠正三维关节预测中的错误。此外在外部搭载具有MEMC 运动补偿技术的设备时,可以选择不同的训练方案和数据集来满足更高精度的设计需求。本文在现行环境下进行的与领域内相关技术测试中均取得了优秀的运行成绩,具体来说本文的贡献如下:提出了一种融合了基于深度残差网络设计的3D 手势关键点检测网络和基于逆运动学的关节旋转数据纠正网络的DRIR-NET(deep residual-inverse kinematics rectify network)算法模型,实现了基于此模型的单目RGB摄像设备(最低设备需求)的3D手部运动捕捉交互建模功能。
本文模型包括两个主要模块。分别为前置检测网络和后置纠正网络,前置检测网络的主要构成为原始图像的输入接口,基于Resnet50 网络的特征提取模块,以及一个结合特征图F和热图H的双卷积层架构用以输出编码图D,再经过层连接与卷积层操作输出位置图L,在此基础上,分别在由特征图F和热图H组合的2D 关键点检测模块进行2D 注释数据的监督,在3D 关键点检测模块中针对编码图D和位置图L进行3D 注释数据监督。最后经由位置图L输出关键点图X,并进行初步姿态估计,获取到基本形状。后置的纠正网络的主流程是将关键点图X通过一个全连接层纠正器结合大量的3D 注释数据来进行纠正操作,这是为了最大程度减少手部关键点在从二维升至三维时,手部姿态不可避免地出现不合理形变和超出人体关节阈值的情况,在大量3D注释数据的喂养以及算法优化下获取到核心纠正数据——针对特定关键点的旋转角Q,最后整合前置网络进行的初步姿态估计结合基于MANO的形状蒙皮参数β一起投入训练模板,将姿态逐步训练纠正为最佳状态,最终以端到端的方式将预测结果输出,具体过程如图1所示。
图1 DRIR-NET模型总体架构图Fig.1 Overall architecture diagram of DRIR-NET model
DR前置网络是基于Resnet50的深度残差网络来进行设计,其采用单个RGB 图像并输出根关节相关和归一化尺度的3D 手部关键点预测,其网络架构包含三个组成部分,特征提取器,2D 检测器以及3D 检测器。其以256×256的分辨率获取到输入图像,并且输出特征图大小的为64×64×512。
对于2D手势检测器是基于Resnet50特征抽取之上的双层全连接CNN 层,它获取到前置特征图F后经过处理输出对应的21关节点热图Hj,Hj图中每一个像素编码记录了该像素属于关节j的置信度,2D 手势检测器是基于主线检测的子任务,热图Hj用来输出2D姿态估计,其可由基于真实采集的2D注释数据监督,因此该子任务检测模块可以采用绝大多数来自互联网的2D注释数据集进行训练,可以极大限度地提升泛化能力,因为在训练特征提取以及2D手势检测的期间,庞大的2D数据集可以包含更加多样化的复杂背景数据。
3D手势检测器采用前置子任务完成的特征图F和热图H,并且以坐标图L的方式来估计3D手部关键点位置,类似于文献[16],对于三维空间中的每个关节点j,Lj和Hj,具有相同的2D分辨率,并且Lj中每个像素都追加了对各环节j的3D 坐标编码,极大地提升了数据的健壮性,与图L类似地,还以同样的方式预测了包含骨骼方向的像素编码图D,在3D手势中需要这种父关节到子关节的3D向量表示来告知网络运动链中的相邻节点之间的关系,在3D手势检测器中,首先是从子任务的热图H和特征图F来预测输出增量图D,接着经由三图输入至独立的CNN全连接层来获取最终位置图L,图L和图D由3D 注释数据监督。在训练过程中,关节j的3D 位置可以通过与热图Hj的最大值对应的uv坐标在位置图Lj的映射关系来进行查找。为了减轻单目设置下景深对于关节位置的不确定性影响,该预测坐标是相对于根节点进行输出,并且参考骨骼长度信息进行归一化(选取中指作为根关节,根关节到手腕关节点的部分定义为参考向量)。
损失函数:
包含四个术语来说明多任务学习计划。首先,Lheat被定义为:
分别用来测算位置图L和增量图D之间的异同,现实位置图LGT和真实增量图DGT是通过将地面真值关节位置和骨骼方向的坐标平铺到热图的大小来构建的,本方法侧重于对热图最大值处的3D 预测,因此才有HGT加权,其中⊙为元素的矩阵积,Lreg是网络权重的L2正则化器,用于防止过度拟合。在同一批次的训练中,所有的2D 注释和3D 注释数据集被联合训练。在多任务方案下,前置DR模块学习从2D标记的图像中预测不同真实背景下的2D手部姿势,以及从3D标记的数据中预测相对应的3D手部空间信息。同时如果提供了相机内部矩阵K和参考骨长度lref,根节点r的绝对深度zr则可以通过公式(5)来得到:
公式中,K为相机内部的矩阵参数,lref是基于MANO模型的参考骨骼长度,Z表示节点的绝对深度。下标·r和·w分别表示根关节和腕关节。u和v是图像平面中的2D关节预测,dw是通过前置网络回归的手腕的归一化和根节点相对深度。由于zr是唯一的未知变量,可以通过公式反解得到,计算得到zr后,可以通过相机投影公式计算根节点相对真实空间在二维平面的全局平移量。
本文选择MANO[17]作为手模型,由后置IR 网络的输出驱动。形状参数β∈ℝ10和位姿参数θ∈ℝ21×3可以使MANO的表面网格完全变形和定姿。更具体地说,β表示基于从手部关键点形状中学习的主元,而θ表示轴角表示中的关节旋转。其使得基准模板∈ℝV×3在考虑姿势重组的情况下进行形变以针对不同情况。这里,V表示顶点的数量。在姿势产生变化之前,基准模板变形为:
其中,Bs(β)和Bp(θ)分别是手部形状和姿势叠加态。然后是被检手模型M(θ,β)∈ℝV×3,定义为:
其中,W(·)是一个标准的线性混合蒙皮函数,它采用变形模板网格T(θ,β)、姿势参数θ、蒙皮权重W和姿势关节位置J(θ)。
在形状估计方面,由于不仅是对手部姿势进行感知,在此基础上还思考手的形状对于结果的影响,因此本文利用预测的关节位置来估计MANO模型的形状参数β。由于预测是尺度归一化的,估计的形状只能表示相对的手形状,例如手指与手掌的比率。通过最小化
公式(8)中,通过最小化E(β),即真实指掌参数和参考骨骼的比率,来缩小实际建模中因不合理指掌参数导致的模型手形变,公式右侧第一项求解对于每个骨骼b,变形手模型lb(β)的骨骼长度与其对应参考手lref(β)的比值和预测的三维骨骼长度之间差值的欧几里德范数的平方,第二项用作形状参数β的L2 正则化器,并通过λβ进行加权来防止过度拟合。
虽然三维空间下手部关键点的位置已经能够诠释手的姿势,但是伴随复杂的背景和手部灵活性带来的不可预测运动,不能够使模型在相对高效下保持良好的精度,在某些应用相对苛刻的场景下无法带来充足的结果,基于此本文采用了逆运动学中从关节位置推断关节旋转的方法,配合前置网络设计了一种端到端神经网络来纠正关节节点。后置纠正的主要好处是:首先,本文的设计允许将MoCap 数据合并为额外的数据模式,以便在培训期间提供全面的监督。这与直接从图像回归旋转的方法形成了鲜明的对比[18-19],这种方法只允许弱监督训练。其次,本文可以以更高的速度解决关节扭曲失真,因为与迭代模型拟合方法相比,本文只需要一个前馈过程就可以完成纠正。第三,本文直接从数据中学习手部姿势先验,使得后置纠正网络可以有效纠正前置网络的有噪三维预测,并且关节旋转表示本质上是保持骨骼尺度的。前置网络中相关信息可以被充分利用,使得网络耦合更为紧密。
网络设计方面,本文将纠正网络设计为一个具有批量归一化的7 层全连接神经网络,并使用sigmoid作为激活函数,但最后一层使用线性激活。将输入的三维关节位置编码为L=[X,D,Xref,Dref]∈ℝ4×j×3其中X 是根相对比例归一化三维关节位置;D 是每个骨骼的方向,另外提供它作为输入,以明确编码相邻关节的信息。Xref、Dref编码有关形状标识的信息,并分别定义为静止姿势中的三维关节位置和骨骼方向。它们可以提前测量以获得更高的精度,也可以根据前置网络的预测进行测量,纠正网络的输出是表示为四元数Q 的每个关节的全局旋转∈ℝj×4,然后将其归一化为单位四元数。之所以选用四元数而非轴脚表示是因为在本文的数据扩充步骤中需要更好的插值特性。此外,四元数可以转换为旋转矩阵应用于损失项中,为了将最终姿势应用于MANO模型,将四元数Q 转换回轴角度表示,然后根据公式(8)对模型进行变形。
损失项:损失函数由四项构成,如下所示:
首先,Lcos测量差分角的余弦值之间的距离,该值由地面真值四元数QGT和预测Q涵盖,可表示为:
real(·)取四元数的实数部分,*是四元积,Q-1是四元数Q 的倒数。此外,L12直接管理预测的四元数。
拟议的两个损失只能应用于MoCap数据。为了能够使得其能够使用3DPosData,本文提出了第三个损耗Lxyz,用于测量定姿后的3D坐标的误差。
其中,FK(·)表示正向运动学函数,XGT表示地面真实三维关节注释。最后,为了将非规范化输出软约束为单位四元数,将Lnorm定义为:
实验在Windows10 系统上进行,电脑CPU 型号为AMD Ryzen 7 4800H with Radeon Graphics 2.90 GHz,显卡型号为:GeForce GTX 2060。详细实验环境如表1所示。
表1 实验环境及配置Table 1 Experimental environment configuration
本文的数据集包含在3个数据集上进行训练:CMU全景数据集(CMU)[20]、渲染手姿势数据集(RHD)[21]和GANerated Hands 数据集(GAN)[22]。CMU 数据集包含16 720个图像样本,数据主要由各个关节附着传感器的人在一定时间内做出不同的动作而生成,附着在人体各个关节的传感器在一定时间内随着人的运动而记录不同时刻的位置信息,这样的数据类型可以看作是一段高维的多元时间序列,CMU 及其下子集的数据集的真实性以及精细度是最为贴合人类实际动作习惯,选用CMU 数据集不仅仅是因为其优秀的骨骼匹配度,相比于其他生成数据集更在源头上略去了不符合人体结构的比例和动作,使得参考骨的各项数据更加真实公正。无论是训练还是测试都能提供更加精准优秀的结果,为实验结果提供“质”的保障。RHD 和GAN 都是经过多方验证测试的优秀合成数据集,分别包含41 258 和330 000 张带有3D注释的图像。同时RHD 数据集是首个提出从单张图片估计3D手部姿态的作Thomas Brox建立的专为该类技术提供支持的数据集,是最为贴合本文需求的数据集之一。GAN数据集是通过特殊的GAN网络将软件仿真出来的手转化成非常逼真的手,即给假手渲染上真实的肤色和纹理。通过这种image-to-image的转换即可有效减少训练数据与真实数据之间的误差。同时也更契合本文3D 建模的需求,二者结合为训练提供“量”的保障。
在图2中,展示了本文方法在复杂背景下的单目识别效果,在不同景深下都有着优秀的建模效果。表明模型对未知环境下具有很好的泛化能力。最重要的是,不仅可以预测3D关节位置,还可以预测关节角度,从而可以直接为手部曲面模型设置动画。这种输出表示在图形和视觉的许多应用程序中更有用。此外,图3 表明,本文的方法对于非常快速的运动和模糊图像以及复杂的姿势(如抓取)效果良好。还可以处理对象遮挡(图4)、自遮挡和挑战性视点(图5)。本文方法可以仅从单个图像中捕获不同的手形状,并且根据关节角度进行修正。
图2 不同背景与近景远景下识别效果展示Fig.2 Display of recognition effect under different backgrounds and close range long range
图3 模糊运动抓取识别效果Fig.3 Recognition effect of fuzzy motion capture
图4 握持遮挡识别效果Fig.4 Recognition effect of holding occlusion
图5 根节点遮挡识别效果Fig.5 Root node occlusion recognition effect
评估数据集和指标:在四个公共数据集上评估了本文的模型方法:RHD 数据集和立体手姿势跟踪基准测试集(STB),Dexter+Objec(tDO)以及EgoDexter。RHD是一个合成数据集。STB 数据集是包含多背景下的由一个双目摄像头和深度摄像头所采集的18 000 帧数据集。其中DO数据集包括2个主体与来自第三视图的对象交互的6 个序列。ED 数据集由4 个序列组成,其中2 个受试者在存在遮挡的情况下执行手-物体交互,该遮挡是从主视角中心捕获的。
本文使用以下评估指标:PCK(percentage of correct keypoints),即为正确估计出关键点的比例以及阈值范围为20 mm 至50 mm 的PCK 曲线下的面积AUC(area under curve)。在前置处理阶段,将形成一个全局对齐的背景,以更好地测量局部手姿势。
对于ED 数据集和DO 数据集,本文将指尖预测的质心与GT预测的质心对齐,对于RHD数据集和STB数据集,将根与真实根位置对齐从而进行定量比较。在表2中,将本文的方法与其他方法进行比较。所采用的数据集包括以下内容:具有地面真实手网格的合成图像、深度图像、具有2D注释的真实图像以及具有全景立体的3D标签的真实图像。在所有测试数据集中,DO和ED 数据集可以进行最公平的比较,因为鲜有模型将其用于训练。这意味着对DO和ED的评估可以很好地估计模型的泛化程度。在DO 和ED 方面,本文方法比其他方法有很大的优势。这是因为新架构结合了所有可用的数据模式,包括2D和3D带注释的图像数据集以及MoCap 数据。由此可以看出进一步强调用于训练模型的数据集组合的重要性。STB数据集由于其帧数大,变化小,过分利用STB 进行训练会导致训练数据的不平衡,损害泛化能力。因此本文对其做了沙盒处理,将STB 添加到训练集中,并在STB 测试集上实现了0.955的精准度,但该模型在所有其他三个基准上的性能都有巨大下降。因此,本文没有使用STB 来训练最终模型。对于RHD,本文的模型再次实现了与其他基准一致的结果。RHD 作为一个合成数据集,与真实数据集相比具有不同的外观和姿势分布。之前的类似的工作通过专门培训或微调RHD 来获取更好的数据结果,本文的方法避免了对其进行针对性训练仍可以取得良好的测试结果。
表2 模型测试结果Table 2 Test results of models
为进一步探究模型DRIR-Net 的有效性,进行消融实验,研究影响实验结果的独立因素。
为验证融合网络的有效性,本文将从以下几个方面来进行实验,分别为后置纠正网络的取舍对实验效果的影响,MOCAP 数据直接旋转监督对关节旋转的影响,以及3DPosData 对于帮助后置纠正网络适应嘈杂的3D关节预测是否有效。采用文献[23]作为基线模型,实验结果如表2所示,事实证明,本文的模型结构本身有助于提高准确性。在基础之上,添加纠正网络,并对MoCap数据进行额外培训,可以取得优秀的结果。这进一步证明,将3D 手势检测任务分解为关节检测和旋转恢复可以使模型更易于训练,也可以充分利用到MoCap数据。这可以将后置纠正网络的行为解释为一种姿势先验,从MOCAP数据中学习到对原始3D关节预测的纠正,同时通过表3 中数据的对比,可以得知缺省3DPosData 后精准度降低,这是因为3DPosData的缺省降低前置网络和后置纠正网络耦合度,使得双网之间的信息传递效率降低,换言之就是缺失3DPosData将大幅削弱后置网络对嘈杂的3D关节预测能力。
表3 缺省不同变量实验结果对比Table 3 Comparison of experimental results with different default variables
为了进一步验证本文模型对于单目下的3D手势交互效果,本文针对无纠正型网络模型和本文方法做了训练测试,由图6、图7可以得知无纠正型网络模型在输出方面无法针对不合理关节点进行纠正,图6(a)展示了由于输入图像关节处有阴影从而导致关节点定位不准确,最终表现出手指过长与输入图像不符(图6(b)),而附带纠正网络的模型可以在预测输出前进行关节纠正,通过先验在阈值范围内对关节点进行调整从而使得模型效果更符合实际(图6(c))。
图6 纠正网络输出对比Fig.6 Comparison of corrected network output
图7 过曝状态下的姿势纠正Fig.7 Posture correction under overexposure
同时图7(a)是在输入图像有某处存在高曝光(即复杂背景)下传统方法由于对数据集的摄取范围不广并且无纠正网络的情况下导致的输出失效(图7(b)),可以进一步证明纠正网络的有效性,纠正后的输出如图7(c)所示。
本文提出了一种基于resnet50 的双网融合3D 手势估计方法,该方法利用了不同模式下的多类数据,有效实现了单目下的3D 手势估计,在设计的神经网络架构具有两部分设计,一部分是2D关键点到3D关键点的转换以及一个纠正网络该网络可以直接回归关节旋转。这两个方面结合有效地提高了识别技术的准确性、鲁棒性和运行时间。受限于设备性能和各类算法所采用的平台、数据集等外在因素影响,未能对各类方法进行逐一细节化比较调优,同时本文专注于降低设备下限的使用能力,在低端设备上展现了优秀的性能,但在具有更复杂的高端设备例如多目景深、高分辨率设备上未能激发出设备的全部潜力,后续会针对更为精密的设备做出调整优化。并且在之后的工作展望中,计划改进模型以覆盖手部纹理和探索单目下的3D双手交互研究。