Minimal-Hand:单目实时手部位姿估计
1.简介
Monocular Real-time Hand Shape and Motion Capture using Multi-modal Data[1],CVPR2020的一篇论文,从单目图像中估计手部的shape和pose。它可以利用所有来源的手部训练数据:2D或3D标注的图片数据,以及没有对应图片的3D动捕数据。
以前方法的两个问题:
1.没有充分利用所有形态的训练数据。受限于动作捕捉设备,有3D标注的数据较少。有一些生成的数据集,但在生成数据上训练的网络泛化能力往往很差。注意到有一种数据被之前所有的工作都忽视了,mocap data。这种数据有多样的动作,但是缺乏对应的图片,由于它们通常由手套或者3D scanner获取。因此之前的方法没办法用它们学习图片到pose的映射。
2.大多数方法聚焦于预测3D joints,但是在驱动模型的时候更需要获得关节的旋转信息。一些方法通过将手部模型拟合到稀疏的关键点上来解决这个问题,但是迭代优化耗时且易陷入局部最优。另一些方法直接回归joint的旋转角度(比如回归MANO的参数)。这些方法都采取了弱监督的训练方案,因为缺乏成对的图片和关节旋转标注,因此无法保证pose的合理性。
因此本文提出了新方法,用于利用所有上述数据模式,包括带有2D和/或3D注释的合成和真实图像数据集以及非图像MoCap数据,以最大限度地提高准确性和稳定性。
本文提出的方法包含两个模块,DetNet和IKNet。
DetNet预测2D关节点和3D关节点位置。2D监督让模型学习如何从真实图像中提取特征,3D关节点位置的学习可以使用生成的数据。
IKNet预测关节的旋转,解决反向运动学问题,输入预测的3D关节点,回归旋转信息。IKNet通过一次前向推理就可以快速预测出运动学参数,避免了复杂和耗时的模型拟合。训练时,Mocap数据提供直接的旋转监督,3D关节点位置数据可以提供弱监督,来学习姿势先验从而纠正DetNet中错误的预测。
贡献:
- 提出了一种新的单目手部位姿估计方法,可以同时利用2D/3D标注图片数据和Mocap数据。
- 提出IKNet,可以将预测出的3D关节点位置映射到关节的旋转。
2. 算法原理
2.1 整体框架
Minimal-Hand包括两个模块:DetNet和IKNet。
DetNet从RGB图像中预测出2D和3D的手部关节点位置,然后通过将一个手部模型拟合到预测的3D关节点上可以检索出手的形状。
IKNet接受3D关节点并将其转换为关节的旋转(MANO的pose参数)。
2.2 DetNet
输入单张RGB图像,DetNet输出3D手部关节点位置(相对于根节点的尺度归一化的)和2D关节点位置(图像空间中)。DetNet可以分成三部分:特征提取器(feature extractor),2D关节点检测器(2D detector),3D关节点检测器(3D detector)。
Feature Extractor:使用res50作为backbone,输入128*128的图像,输出32*32*256的特征图 F 。
2D Detector:一个2层的CNN。输入上面提取到的特征图 F ,输出2D heatmap H_j , H_j 上每个pixel的值表示第j个joint位于此处的置信度。这部分通过2D标注的ground truth监督。
3D Detector:输出3D手部关节点的location map L_j 。这部分参考了Vnect[2]。对于第j个关节, L_j 和2D heatmap H_j 有一样的分辨率,上面每个像素的值代表关节的3D坐标。类似于 L ,minnimal-hand还估计了delta maps D , D_b 上的每个pixel编码了骨骼b的方向,用从父节点到子节点的3D vector表示。3D detector首先从图像特征 F 和2D heatmap H 中估计出delta maps D ,然后再将 F 、 H 和 D concat到一起,送入另一个2层的CNN中得到最后的location map L 。在推理时,根据 H_j 中的最大值的坐标去XYZ的location map中分别取得 X_j 、 Y_j 和 Z_j 。为了缓解单目视觉的深度歧义性,预测的坐标是相对于根节点的,并根据一个参考骨骼(本文选的是中掌指骨)的长度进行归一化。
DetNet的损失函数:
2D heatmap loss:
location map loss:
delta map loss:
Ground truth L^{GT} 和 D^{GT} 是将标注的关节点位置和骨骼方向平铺到heatmap的尺度。 \odot 表示element-wise矩阵乘法。
最后一项L2为正则化。
当已知相机内参 K 和参考骨骼长度 l_{ref} 时,可以由下面的公式计算出根节点的绝对深度 z_r 。
2.2 Shape Estimation
得到3D关节点位置后计算出shape参数。minimal hand并没有采用直接回归shape参数的方法,而是通过最小化一个损失函数来计算出 \beta :
本文使用LM算法对此进行优化。
2.3 IKNet
用网络从joint locations回归joint rotations。
IKNet的训练使用了两种数据集。一种是mocap data,即3D关节点位置和对应的关节旋转角。 本文使用了MANO模型中扫描的1554个人手姿态,并通过插值对数据进行了扩充。由于DetNet预测出的3D关节存在噪声和误差,而动捕设备获得的mocap data本身的噪声是比较小的,只使用mocap data会导致对会导致鲁棒性不够好,所以本文还使用了有3D标注的图像数据。对于所有的训练样本,先使用DetNet预测其3D joints作为IKNet的输出,估计出joints rotation(采用了四元数形式)后通过FK得到重建的3D joints,然后用ground truth进行监督。
IKNet整体的损失函数:
对于估计的四元数,使用了cos损失和L2损失来监督:
对于有3D joints标注的图像数据,进行弱监督:
正则化损失:
总结
- DetNet预测2D关节点和3D关节点位置,使用2D关键点数据集和3D标注图像数据集。
- LM算法优化shape参数。
- IKNet从3D关节点位置回归对应的旋转,使用mocap data进行全监督,使用3D标注图像进行弱监督。
参考
- ^minimal-hand https://arxiv.org/pdf/2003.09572.pdf
- ^vnect https://arxiv.org/pdf/1705.01583.pdf