Minimal-Hand:单目实时手部位姿估计

Xsens动作捕捉 2023-04-15 4876

1.简介

Monocular Real-time Hand Shape and Motion Capture using Multi-modal Data[1],CVPR2020的一篇论文,从单目图像中估计手部的shape和pose。它可以利用所有来源的手部训练数据:2D或3D标注的图片数据,以及没有对应图片的3D动捕数据。

Minimal-Hand:单目实时手部位姿估计  第1张

以前方法的两个问题:

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:单目实时手部位姿估计  第2张
pipeline

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的特征图 FF

2D Detector:一个2层的CNN。输入上面提取到的特征图 FF ,输出2D heatmap HjH_jHjH_j 上每个pixel的值表示第j个joint位于此处的置信度。这部分通过2D标注的ground truth监督。

3D Detector:输出3D手部关节点的location map LjL_j 。这部分参考了Vnect[2]对于第j个关节, LjL_j 和2D heatmap HjH_j 有一样的分辨率,上面每个像素的值代表关节的3D坐标。类似于 LL ,minnimal-hand还估计了delta maps DDDbD_b 上的每个pixel编码了骨骼b的方向,用从父节点到子节点的3D vector表示。3D detector首先从图像特征 FF 和2D heatmap HH 中估计出delta maps DD ,然后再将 FFHHDD concat到一起,送入另一个2层的CNN中得到最后的location map LL 。在推理时,根据 HjH_j 中的最大值的坐标去XYZ的location map中分别取得 XjX_jYjY_jZjZ_j 。为了缓解单目视觉的深度歧义性,预测的坐标是相对于根节点的,并根据一个参考骨骼(本文选的是中掌指骨)的长度进行归一化。

Minimal-Hand:单目实时手部位姿估计  第3张
Vnect

DetNet的损失函数:

Minimal-Hand:单目实时手部位姿估计  第4张

2D heatmap loss:

Minimal-Hand:单目实时手部位姿估计  第5张

location map loss:

Minimal-Hand:单目实时手部位姿估计  第6张

delta map loss:

Minimal-Hand:单目实时手部位姿估计  第7张

Ground truth LGTL^{GT}DGTD^{GT} 是将标注的关节点位置和骨骼方向平铺到heatmap的尺度。 \odot 表示element-wise矩阵乘法。

最后一项L2为正则化。

当已知相机内参 KK 和参考骨骼长度 lrefl_{ref} 时,可以由下面的公式计算出根节点的绝对深度 zrz_r

Minimal-Hand:单目实时手部位姿估计  第8张

2.2 Shape Estimation

得到3D关节点位置后计算出shape参数。minimal hand并没有采用直接回归shape参数的方法,而是通过最小化一个损失函数来计算出 β\beta

Minimal-Hand:单目实时手部位姿估计  第9张

本文使用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整体的损失函数:

Minimal-Hand:单目实时手部位姿估计  第10张

对于估计的四元数,使用了cos损失和L2损失来监督:

Minimal-Hand:单目实时手部位姿估计  第11张
Minimal-Hand:单目实时手部位姿估计  第12张

对于有3D joints标注的图像数据,进行弱监督:

Minimal-Hand:单目实时手部位姿估计  第13张

正则化损失:

Minimal-Hand:单目实时手部位姿估计  第14张

总结

  • DetNet预测2D关节点和3D关节点位置,使用2D关键点数据集和3D标注图像数据集。
  • LM算法优化shape参数。
  • IKNet从3D关节点位置回归对应的旋转,使用mocap data进行全监督,使用3D标注图像进行弱监督。

参考

  1. ^minimal-hand https://arxiv.org/pdf/2003.09572.pdf
  2. ^vnect https://arxiv.org/pdf/1705.01583.pdf

The End