3D hand pose:Minimal Hand

“Monocular Real-time Hand Shape and Motion Capture using Multi-modal Data”论文解读

论文链接:https://calciferzh.github.io/files/zhou2020monocular.pdf
论文出处:2020 CVPR
论文单位:清华大学
论文代码:Tensorflow版本Pytorch版本

在这里插入图片描述

0. 概述

  • 论文提出了一种新型的单目实时的3D人手形状和运动捕捉方法。
  • 实时性达到100fps,准确率达到SOAT水平。
  • 本文提出了两个模块:3D手关节检测模块(DetNet)和逆运动学模块(IKNet)。
    其中,DetNet用于回归出3D手关节位置,IKNet在单向前馈通道将其映射到关节旋转

1. 简介

  • 手是人类与现实世界互动最重要的工具。因此,捕捉手部运动对于各种应用具有突出的重要性。如AR/VR、人机交互等等。

  • 3D手运动捕捉(3D hand motion capture)目前方法存在2个主要的问题:
    (1)现有的方法都没有利用所有公开可用的训练数据,尽管由于使用3D标注收集真实人手图像的难度,标注的手部数据受到严重限制.
    之前的方法忽略了使用hand motion capture (MoCap) data。
    (2)以往的方法大多侧重于预测三维关节位置.

  • 基于此,本文提出了一种新型的、实时的单目人手运动捕捉方法。不仅能估计2D和3D的关节位置,还能将他们映射直接得到关节旋转。

  • 本文提出了DetNetIKNet 2个模型。分别用于预测2D/3D的关节位置和旋转

  • 在这个多任务训练中,模型学习如何利用2D监督从真实图像中提取重要特征,而预测3D关节位置可以纯粹从合成数据中学习。

  • 为了获得关节旋转预测,我们提出了新的数据驱动的端到端IKNet,以DetNet的3D关节预测作为输入,并回归关节旋转来处理逆运动学(IK)问题。

  • 在训练中,作者结合MoCap data来提供直接的旋转监督。并结合3D关节位置数据来提供弱位置监督。从而提供姿态先验和修正3D关节位置的误差。

  • 本文的主要贡献为:
    (1)DetNet
    (2)IKNet
    (3)Dataset

2. 方法

在这里插入图片描述

  • 如图2所示,方法包括2个主要的模块:
    (1)DetNet关节检测网络。在多任务方案下,从单个RGB图像预测手关节的2D和3D位置。
    然后,可以通过拟合手模型到3D关节预测来检索手的形状(hand shape).
    (2)IKNet:逆运动学网络。获取3D关节预测,并以端到端方式将其转换为关节旋转表示。

2.1 DetNet

  • DetNet输入RGB图像,输出图像空间的2D关节预测,和与根相关的(root-relative)、尺度归一化的(scale-normalized )3D手关节预测。
  • DetNet网络包括3个部分:特征提取器2D检测器3D检测器
  • 特征提取器
    以ResNet50作为backbone;
    输入:图像(Single Image):128 × 128 ;
    输出:特征块(Feature Maps F):32 × 32 × 256。
  • 2D检测器
    一个压缩的2层CNN;
    输入:特征块(Feature Maps F):32 × 32 × 256;
    输出:对应21个关节的热图(Heat Maps)H;
    H包含21个手部关节点的关节预测置信图 Hj,Hj编码了pixel被关节j覆盖的置信度(置信图体现了某一部分属于关节j的可能性的大小)。
  • 特征提取器和2D检测器可以用2D标记真实图像数据进行训练。
  • 3D检测器
    从置信图 H 和特征图 F 回归3D手部关节位置。
    输入:Feature Maps F+Heat Maps H
    中间:Delta Maps D
    输出:Location Maps L
    D是子节点相对于根节点的方向向量,L是手部的三维关节点的位置。
    对于每个关节j, Lj具有与Hj相同的2D分辨率,Lj中的每个像素编码关节j的3D坐标。
    同时,估计Delta Maps D,其中Db中的每个像素编码骨b(bone b)的方向,用一个从父关节到子关节的3D向量表示。
    这个中间表示Delta Maps D需要明确地告知网络关于运动链(kinematic chain)中相邻关节的关系。
    在3D检测器中,我们首先使用一个2层CNN来估计Delta Maps D,输入为热图H和特征图F。然后,将heat maps H, feature maps F, and delta maps D连接起来,输入到另外一个2层的CNN中,获得最后的 location maps L。
    location maps L 和Delta Maps D 通过 3D annotations进行监督学习。
    在推理过程中,关节 j 的三维位置,只需在Location Maps Lj 中简单查找,在Heat Maps Hj 的最大值对应的 uv坐标系处即可获得。
    为了缓解单目环境中深度尺度的模糊,预测的坐标是相对于根关节的,并通过参考骨的长度进行标准化。我们选择掌指骨中部作为根关节,从这个关节到手腕的骨头被定义为参考骨。
  • 对于3D检测器这部分,参考阅读:《VNect: Real-time 3D human Pose Estimation with a Single RGB》
  • 误差Loss
    在这里插入图片描述
    其中 Lheat2D检测器的热图误差,定义为:
    在这里插入图片描述
    3D检测器中,定义2个额外的误差:
    在这里插入图片描述
    在这里插入图片描述
    Ground truth location maps LGT 和 delta maps DGT 通过将Ground truth关节位置和骨骼方向的坐标平铺到热图的尺度来构建。用HGT来加权差异。
    L_reg 是一个用于网络权值的L2正则化器,以防止过拟合。
  • Global Translation
    如果相机内参 K 和参考骨长 l_ref 都提供了,根关节的绝对深度 z_r 可以通过下式计算:
    在这里插入图片描述
    其中,下标rw表示根关节和腕关节。uv 是像平面的2D关节预测。
    d_w 是通过DetNet回归的手腕的归一化和根相关深度。
    z_r 是其中唯一一个不确定的值,因此可以通过上式求得。
    计算出z_r之后,x和y方向的全局平移(Global Translation)可以通过相机投影公式计算求得。

2.2 手模型和形状估计

  • 手模型
    选择MANO作为手模型,由IKNet的输出进行驱动。

2.3 IKNet

  • IKNet主要解决关节的旋转问题。
  • 首先,我们的设计允许我们将MoCap 数据作为额外的数据形式,在训练期间提供全面监督。
  • 其次,与迭代模型拟合方法相比,我们只需要一次前馈,因此可以以更高的速度解决IK问题。
  • 再次,相对于基于优化的手工先验,手姿先验可以直接从数据中学习。
  • 最后,我们的IKNet可以校正DetNet的噪声3D预测,并且关节旋转表示是天然的骨骼尺度保持。
  • 网络设计
    我们将IKNet设计为一个7层全连接的批量归一化神经网络,除最后一层使用线性激活外,其余的激活函数均使用sigmoid。
    IKNet是为手部建模服务的,建模采用的是MANO。整个手部姿态的建模公式是:
    在这里插入图片描述
    可以看到,上式我们需要的参数只有β和θ。β从Shape Estimation处获得。θ表示轴角表示的关节旋转,通过网络获得。至于中间的函数,论文有提及。
    注意:IKNet是为手建模服务的,如果制作hand pose estimation,使用IKNet意义不大。

猜你喜欢

转载自blog.csdn.net/gaoqing_dream163/article/details/120851273