Monocular Real-time Hand Shape and Motion Capture using Multi-modal Data

Monocular Real-time Hand Shape and Motion Capture using Multi-modal Data

一. 论文简介

从单张图像中恢复 2D keypoints + 3D keypoints + mesh,在数据量不充足的情况下进行弱监督。

主要做的贡献如下(可能之前有人已提出):

  1. DetNet
  2. IKNet
  3. Dataset

二. 模块详解

2.1 DetNet

  • 2D keypoints detect: 直接heatmap即可
  • 3D keypoints detect: 这部分作者参考 Vnet 结构,具体如下图所示:图像位置由前面的2D检测器给出,由3张图表示camera space(root-relate)XYZ坐标。注意这里是经过归一化的,一般手势使用(ref=|point_{9}-point_{10}|)(p_{i}=p_{i}/ref)。作者说直接平铺整个map,个人认为这样不好,使用kernel=9,inference时候取kernel=3然后平均,这样效果可能更好。实测直接2D效果更好,未在3D项目中使用!
  • Delta回归:这部分是回归每个joint相对于root的方向。(dis=distance_{root-point})(point_{xyz}^{A}=frac{point^{A}-root}{|dis|}),dis为当前的到root的距离。那么当我们知道A到root的距离,同时知道root的绝对距离,那么就知道A的实际位置:(Dis_{A}=Dis_{root}+Delta*Dis_{root-A}),论文中公式(5)也可以立马推导得到。

2.2 IKNet

  • 这里使用的MANO模型,直接使用即可,比较简单(有深度的得看论文)。
  • Shape Estimate: 主要说一下loss,(l_b(eta))表示b段骨架的长度,(l_{ref})表示归一化的长度(refer length),(l_b^{pred})表示3D keypoints的检测结果。最后一项正则化,不比多说,每个论文都要限定一下,一般的范围是[-1,1]或[-2,2]。
  • 逆运动学模型(inverse Kinematics),公式(10)表示余弦差角,四元数实数部分的乘积(直接按照公式去做即可,为啥说是余弦差角?),公式(11)直接监督,公式(12)3D joints监督(mesh的verts直接投影到21或16关键点即可),公式(13)正则化惩罚项,和shape最后一项类似。

2.3 Dataset

  • 论文中数据来自三个部分
  • 直接使用2D数据训练2Dkeypoints
  • 使用Mocap数据训练2D+3D+mesh,这部分和3D Hand Shape and Pose from Images in the Wild类似,使用mesh生成数据集。
  • 使用3D数据训练2D+3D+mesh(最后一项是弱监督,只计算3D joint loss)

tensorflow代码


三. 缺点

  • mesh仅作为弱监督,是否会增强3D数据拟合能力有待商榷。搭建一个直接预测root-relate模型,在RHD-Hand数据,比这篇论文效果好,30mm达到94.9%
  • 整体看起来不难理解,但模块太多,设计有点冗余。
  • 作者说在某些简单手势出先较大误差,可能数据问题,也可能模型问题。目前作者正在研究第二个版本,期待!!!
原文地址:https://www.cnblogs.com/wjy-lulu/p/13210209.html