
# 用于手部与物体姿态联合估计的通用反馈循环

Markus Oberweger、Paul Wohlhart和Vincent Lepetit

摘要—我们提出了一种基于深度图像来估计手部3D姿态的方法，该方法甚至可以处理手部与物体相互作用的情况。我们证明，利用反馈循环可以纠正卷积神经网络在预测3D姿态时的误差。该反馈循环的组成部分同样是经过训练数据优化的深度神经网络。这种方法可推广到手部与物体交互的场景，因此我们能够同时估计手部和物体的3D姿态。我们的方法在3D手部姿态估计任务上的表现与现有最先进方法相当；仅使用深度图像时，其在手部与物体姿态联合估计任务上的表现也优于现有最先进方法。此外，我们的方法效率很高，在单个GPU上即可实时运行。

索引词—3D手部姿态估计、3D物体姿态估计、反馈循环、手-物交互。

## 1 引言

精准的手部姿态估计是许多人机交互或增强现实任务的重要需求[^1]，近年来它重新成为研究热点[^2]、[^3]、[^4]、[^5]、[^6]、[^7]、[^8]、[^9]，这或许得益于3D传感器的出现。不过即便有了3D传感器，这仍是一个极具挑战性的问题：一方面是因为手部运动具有极大的自由度，另一方面是因为手部图像存在自相似性和自遮挡现象，若涉及物体操控，还会有物体造成的遮挡。

一种常用的方法是采用判别性方法来预测关节位置[^10]、[^11]、[^12]、[^13]、[^14]、[^15]、[^16]，因为这类方法如今已经具备鲁棒性和高效性。为了进一步优化姿态，通常会以这些预测结果作为初始值，启动优化过程，将手部的3D模型与输入的深度数据相匹配[^5]、[^6]、[^17]、[^18]、[^19]、[^20]、[^21]、[^22]。但这种优化过程依然较为复杂，通常需要维护多个假设[^5]、[^6]、[^23]。此外，它还需要一个用于评估3D模型与输入数据匹配程度的标准，而设计这样的标准并非易事[^17]、[^18]、[^21]、[^24]、[^25]。

在本文中，我们首先展示了如何完全摒弃手部3D模型，转而基于从训练数据中学习生成图像的相关工作展开研究[^26]。构建解剖结构精确的手部3D模型难度极大，因为手部包含众多肌肉、软组织等，这些因素都会影响手部的形状[^24]、[^25]、[^27]、[^28]。我们认为，我们的方法也可应用于其他难以获取3D模型的问题。

![Image](images/231b000ae81672cca2f50699f01301616c25515b160a8d33e38795ff590cb1e0.jpg)

<div style="text-align: center;">Fig. 1. Overview of our approach for hand pose estimation. First, we localize the hand in the camera frame  $\textcircled{0}$ and crop a patch around the hand location. Then, we use a first CNN  $\textcircled{1}$ to predict an initial estimate of the 3D pose given an input depth image of the hand. The pose is used to synthesize a depth image  $\textcircled{2}$, which is used together with the input depth image to derive a pose update  $\textcircled{3}$. The update is applied to the pose and the process is iterated. In this work, we follow this general approach and further show how to extend it to joint hand-object pose estimation.</div>

接着，我们介绍了一种方法，该方法能够根据输入的深度图像以及为该姿态估计生成的图像（如图1所示），学习提供用于改进当前姿态估计的更新信息。通过多次迭代这种方法，我们可以纠正由简单判别性方法给出的初始估计中的错误。所有组件均以深度网络的形式实现。

---

架构较为简单。

不仅有趣的是，以往需要精心设计的手部配准所需的所有组件如今都可以通过学习获得，而且我们还将证明，我们的方法与最先进的方法相比具有同等的性能。该方法效率极高，能在单个GPU上实时运行。

该方法最初发表于[^29]。在此，我们还展示了如何将我们的反馈循环推广到一项极具挑战性的任务：即同时估计手部与物体的3D姿态，且手部会与物体发生交互。这一任务本身就极具挑战性，因为物体会带来额外的遮挡情况，还会扩大关节配置空间。在这种情况下，我们首先分别估计手部和物体的初始姿态，然后在我们的反馈框架内融合这些初始预测结果，以提高两种姿态的准确性。针对这一复杂问题，我们的新方法可独立处理每一帧数据，无需像当前基于跟踪的方法那样依赖良好的初始化[^30]、[^31]，同时仅使用深度图像时其性能仍优于最先进的方法。

我们的方法与生成式方法[^32]相关，尤其是[^33]，该方法也具备与我们类似的反馈循环。不过，我们的方法是确定性的，无需依赖基于分布采样的优化过程——生成式方法通常依赖此类优化，但效率往往较低。

在本文的剩余部分，我们首先在第2节简要回顾相关工作；第3节介绍针对孤立手部问题的我们的方法；第4节介绍针对手部与物体问题的扩展方法；最后，第5节评估我们的手部姿态估计方法，第6节评估我们的手部-物体联合姿态估计方法。

## 2 相关工作

手部姿态估计是计算机视觉领域备受关注的问题，已有大量相关研究发表。关于早期工作的概述，我们参考[^1]；此处我们仅讨论较新的研究，这些研究可分为两类方法。

### 2.1 判别性方法

第一类方法基于判别性模型，旨在直接从RGB或RGB-D图像中预测关节位置。包括[^2]、[^3]、[^7]、[^8]、[^34]在内的一些近期研究采用了随机森林等不同方法，但这类方法仅限于静态手势，在处理被遮挡的关节时存在困难，或者会导致指尖处的误差较大。后续的研究[^10]、[^11]、[^12]、[^13]、[^14]、[^15]、[^16]、[^35]、[^36]、[^37]采用了卷积神经网络来解决这些问题，不过它们的准确性仍不及接下来要讨论的生成式方法。

### 2.2 生成式方法

第二类方法则是……

这些作品属于此类。

数据块：(1) 一个

适配

将观测到的图像与模型进行匹配，(3) 一种针对模型参数最大化相似性函数的优化算法，以及 (4) 优化开始的初始姿态。

对于手部模型，人们提出了多种手工设计的模型。选择简单的模型对于保持实时处理能力至关重要，这也是在速度与精度之间做出的权衡，以应对可能较高的模型抽象程度。针对手部模型，人们提出了不同的手工制作的几何近似模型。例如，[^6] 采用由球体组成的手部模型，[^5] 则加入了圆柱体、椭球体和圆锥体。[^21] 用高斯函数之和来建模手部。[^17]、[^20]、[^22] 采用了更整体的手部表示方法，通过线性混合蒙皮模型生成手部，并渲染为深度图像。[^9] 通过使用与深度传感器噪声模式相同的深度图像来提高匹配质量。[^18] 则采用由骨骼控制的、带有完整阴影和纹理的三角形网格模型。

针对相似性函数，人们提出了不同的模态，这些模态与所使用的模型相匹配。这些模态包括深度值 [^4]、[^6]、[^23]，显著点、边缘、颜色 [^18]，或是这些模态的组合 [^5]、[^17]、[^21]、[^22]。

相似性函数的优化是关键环节，因为高维姿态空间容易陷入局部最小值。因此，粒子群优化算法常被用来处理姿态向量的高维度问题 [^5]、[^6]、[^20]、[^23]。相比之下，[^17]、[^18]、[^21] 采用基于梯度的方法来优化姿态，而 [^4] 则使用动力学模拟。由于这些优化方法的计算时间很长，且需针对每一帧求解，因此 [^9] 并不优化姿态，仅对多个候选姿态评估相似性函数以选出最佳匹配。近期的研究致力于手工设计可微分的相似性函数，将其与手部模型紧密集成，从而实现精确且快速的结果 [^24]、[^25]。

为了启动优化过程，[^21] 采用基于判别的部分姿态初始化方法，[^6] 仅利用指尖信息。[^9] 通过霍夫森林算法预测候选姿态。[^18] 需要预先设定手部的颜色和位置，而 [^5] 则依赖手动初始化。此外，基于跟踪的方法会利用上一帧的姿态信息 [^4]、[^5]、[^22]、[^30]，但如果帧间差异过大（由于快速运动或帧率较低），这种方法可能会出现问题。

我们的方法在前三个构建模块上与以往的研究有所不同。我们并未使用可变形的手部CAD模型，而是从配准的深度图像中学习，以生成逼真的手部深度图像，这与逆向图形网络方面的研究类似 [^26]、[^38]，以及其他近期关于图像生成的研究 [^39]、[^40]。这种方法非常便捷，因为要正确地变形并以逼真的方式渲染手部的CAD模型需要大量的工程工作。最重要的是，它不需要额外的训练数据。

此外，我们也没有使用手工设计的相似性函数和优化算法。我们而是从训练数据中学习如何预测更新量，从而根据输入的深度图像以及针对该估计生成的图像来改进当前的手部姿态估计。同样，这种方法十分便利，因为我们无需设计相似性函数和优化算法。

---

这两种算法均非易事。

[^41]: relies on a given black-box image synthesizer to provide synthetic samples on which the regression network can be trained. It then learns a network to substitute the black-box graphics model, which can ultimately be used to update the pose parameters to generate an image that most resembles the input. In contrast, we learn the generator model directly from training data, without the need for a black-box image synthesizer. Moreover, we will show that the optimization is prone to output infeasible poses or get stuck in local minima and therefore introduce a better approach to improve the pose.

[^42]: uses an auto-encoder to compute an embedding from the 3D hand pose, and feed the embedding vector to an image synthesizer that outputs a depth image of the hand. This setup is used to synthesize additional training data for training a pose predictor, but in their setup they only aim at generating synthesized images as close as possible to the real images to train a discriminative predictor.

### 2.3 反馈机制

由于我们学习生成手部图像，因此我们的方法也与生成式方法相关，尤其是 [^33]，它采用了与我们类似的带有更新机制的反馈循环。该方法会预测用于从图像中裁剪图像块的位置更新量，以使该图像块能更好地匹配生成模型的输出。不过，这一步骤并不会预测完整的参数集。模型的隐藏状态是通过耗时的采样过程得出的。

[^43]: proposed an approach related to ours, which also relies on iteratively refining the 2D joint locations for human pose estimation. They use an initial estimate of the 2D joint locations to generate a heatmap with the joint locations. These heatmaps are stacked to the input image and an update is predicted, which, however, does not handle occlusions well. This process is then iterated a few times. In contrast to our work, their approach only works for 2D images due to limitations of the feedback. Also, their training strategy is different, and requires a predefined absolute step size and predefined update directions, which can be hard to learn. In contrast, we use latent update directions with a relative step size.

[^44]: introduced Feedback Networks for general purpose iterative prediction. They formulate the feedback as a recurrent shared operation where a hidden state is passed on to the next iteration. At each iteration, they predict an absolute output and not an update, which is more difficult. Also, their approach does not use any feedback in the input or output space, so their notion of "feedback" is only an internal structure of the predictor.

自从我们的反馈方法被提出以来 [^29]，它已成功应用于其他领域，比如3D物体姿态估计。[^45] 预测的是2D物体位置上的更新量。类似地，[^46] 利用物体的CAD渲染图与输入图像来预测对渲染后的CAD姿态的更新量，从而使该姿态更贴合输入图像中的物体姿态。

### 2.4 手部与物体联合姿态估计

迄今为止讨论的手部姿态估计方法只能处理轻微的遮挡情况，实际上遮挡程度越严重，估计精度就越低。为了专门应对遮挡问题，不同研究方法试图通过使用带有相互作用物体的手部图像进行训练来学习不变性 [^36]、[^47]；或者通过移除物体来模拟遮挡以估计手部姿态 [^48]；又或者利用时间信息来从遮挡中恢复 [^49]。

与孤立的手部类似，无遮挡情况下的物体姿态估计也有精确的方法 [^45]、[^50]。然而，对于我们面临的手部与物体联合姿态估计问题而言，所需的物体姿态方法必须能特别有效地应对部分遮挡情况。基于关键点的的方法 [^51]、[^52] 在存在遮挡时表现良好，但仅适用于有纹理的物体，而 [^53] 则需要具有区分性的颜色和特征。为了应对杂乱和遮挡情况，基于局部图像块的方法 [^54]、[^55]、基于投票的方法 [^56] 或基于分割的方法 [^57] 已显示出对杂乱和遮挡的鲁棒性。不过，它们仅针对物体，尚不清楚如何将这些方法应用于手部。

手部和物体姿态估计问题比单独考虑手部或物体要复杂得多。简单地将两类方法结合起来并不能得到理想的结果，因为这种方法没有考虑到手部与物体之间的物理约束和视觉遮挡。已有一些研究尝试同时追踪两只手，但它们要求双手必须充分分离[^27]、[^58]，需要多视角信息[^5]，以非实时帧率运行[^59]，或者依赖精确的分割结果[^60]、[^61]。为了处理未知物体，[^62]、[^63]采用了类似ICP的物体追踪方法，能够即时生成物体模型；但一旦失去时间上的连续追踪，该方法就会完全失效。[^31]采用基于模型的方法来进行手-手及手-物体姿态追踪。同样，[^30]也执行基于模型的手部和物体联合追踪，但需要预先具备手部与物体的模型。类似的基于追踪的方法还有[^64]提出的方案，他们以非实时帧率联合追踪多只手和多个物体；以及[^5]的方案，他追踪与物体交互的单只手，但需要多台摄像机来处理遮挡问题。这些基于追踪的方法每帧都需要良好的初始化，且天生容易随时间产生偏差。与这些手-物体姿态估计方法不同，我们的方法仅需一台深度相机，无需初始化，无需时间上的连续追踪，且不会随时间产生偏差——因为我们独立处理每一帧数据。

## 3 方法

在本节中，我们首先概述我们的方法，随后详细阐述该方法的各个组成部分：用于预测初始姿态估计的判别式方法、能够生成逼真手部深度图像的方法，以及利用生成的深度图像来优化初始姿态估计的基于学习的方法。

### 3.1 手部姿态估计

我们的目标是估计手的姿态 p，即其关节 $\mathbf{p} = \{\mathbf{j}_i\}_{i=1}^J$ 在 $\mathbf{j}_i = (x_i, y_i, z_i)$ 条件下、来自单张深度图像 $\mathcal{D}$ 的三维位置。在实践中，对于我们所用的数据集，$J = 14$。我们假设一个训练

---

![Image](images/78a291202db5ff449e0fd2049dbd26b24c019a7e9d47f3e98601ba520fe573cc.jpg)

<div style="text-align: center;">Fig. 2. Samples generated by the synthesizer CNN for different poses from the test set. Top: Ground truth depth image. Middle: Synthesized depth image using our learned hand model. Bottom: Color-coded, pixel-wise difference between the depth images. Red represents large errors, blue represents small errors. The synthesizer CNN is able to render convincing depth images for a very large range of poses. The largest errors are located near the occluding contours of the hand, which are noisy in the ground truth images.</div>

![Image](images/14c34e8ca157d9ac92b37c0ff9e24f08a6388f1b0e20e46970c2b620995f9f6e.jpg)

<div style="text-align: center;">(a)</div>

![Image](images/cf8b31362c061a57e76e16ba90b9c26743923e804227457af28f7aca1059e1bd.jpg)

<div style="text-align: center;">(b)</div>

![Image](images/a4b281684ea6c707fbb3f59c2f438d45ee7e958a914bea1e20b8c5a37a1f667c.jpg)

<div style="text-align: center;">(c)</div>

![Image](images/143ac24c2e372515c7ac71ce1e7bdfbf5f4202839aa6883d86851c325a1414d3.jpg)

<div style="text-align: center;">(d)</div>

<div style="text-align: center;">Fig. 3. Synthesized images for physically impossible poses. Note the colors that indicate different fingers. (a) shows a feasible pose with its synthesized image. (b) shows the synthesized image for the same pose after swapping the ring and middle finger positions. In (c) the ring and middle finger are flipped downwards, and in (d) the wrist joints are flipped upwards.</div>

我们有一组标注了对应3D关节坐标的深度图像$\mathcal{T} = \{(\mathcal{D}_i, \mathbf{p}_i)\}_{i=1}^N$可供使用。

如引言中所述，我们首先训练一个预测器CNN，以便根据以手部位置为中心的输入深度图像$\hat{\mathbf{p}}^{(0)}$，以判别式方式预测初始姿态估计$\mathcal{D}_{\text{input}}$：

 $$ \widehat{\mathbf{p}}^{(0)}=\mathrm{p r e d}(\mathcal{D}_{\mathrm{i n p u t}})\enspace. $$

我们采用卷积神经网络（CNN）来实现pred(.)函数，其架构为标准结构。更多细节将在3.3节中介绍。

在实际应用中，$\hat{\mathbf{p}}^{(0)}$永远不会完美无缺。基于引言中提出的思路，我们引入了从训练数据中学习得到的手部模型。如图2所示，该模型能够合成给定姿态$\mathbf{p}$所对应的深度图像，我们将这个模型称为合成器CNN：

 $$ \mathcal{D}_{\mathrm{s y n t h}}=\mathrm{s y n t h}(\mathbf{p})\enspace. $$

我们同样使用深度网络来实现这个合成器。

使用这个合成器的直接方式就是通过最小化输入图像与合成图像之间的平方损失来估计手部姿态$\hat{p}$：

 $$ \mathbf{\widehat p}=\mathop{\operatorname{a r g}\operatorname*{m i n}}_{\mathbf{p}}\|\mathcal{D}_{\mathrm{i n p u t}}-\operatorname{s y n t h}(\mathbf{p})\|^{2}\quad. $$

这是一个非线性最小二乘问题，可以借助 $\widehat{\mathbf{p}}^{(0)}$ 作为初始估计值来迭代求解。然而，公式 (3) 中的目标函数存在许多局部极小值。此外，在对公式 (3) 进行优化时，p 的取值可能会对应物理上不可行的姿态。对于这类取值，如图 3 所示，合成器 CNN 的输出 synth(p) 是不可预测的；这很可能会导致公式 (3) 的优化过程发散或陷入局部极小值，我们将在第 5.4 节的实验中展示这一点。

因此，我们引入了第三个函数，称之为 updater(.,..)。该函数能够学习预测更新量，这些更新量会被应用到姿态估计中以改进估计结果；输入为图像 $\mathcal{D}_{\text{input}}$ 以及合成器 CNN 生成的图像 synth(p)：

 $$ \widehat{\mathbf{p}}^{(i+1)}\;\leftarrow\;\widehat{\mathbf{p}}^{(i)}+\mathrm{u p d a t e r}(\mathcal{D}_{\mathrm{i n p u t}},\mathrm{s y n t h}(\widehat{\mathbf{p}}^{(i)})) $$

我们会多次迭代这一更新过程，以改进最初的姿态估计。同样，updater(.,.) 函数也是以深度网络的形式实现的。

我们在下文详细阐述 pred(.)、synth(.) 和 updater(.,.) 函数的实现与训练方法。

#### 3.2 学习定位器函数 loc(.)

在实际应用中，我们需要以手部位置为中心的输入深度图像。在最初的论文 [^29] 中，我们采用了一种常用的启发式方法，即利用质心来定位手部 [^7]、[^35]。在本研究中，我们通过引入定位器 CNN loc(.) 来改进这一启发式方法。我们仍然使用质心从深度相机帧中进行初始定位，但会额外增加一个细化步骤来提高最终精度 [^11]、[^36]。这一细化步骤依赖于定位器 CNN。该 CNN 被应用于以质心为中心的 3D 边界框，其训练目标是预测中指的指骨间关节（MCP）位置，我们将其作为参照点。定位器 CNN 的网络结构很简单，如图 4 所示。

我们通过优化代价函数来训练由 $\phi$ 参数化的定位器 CNN：

 $$ \widehat{\phi}=\mathop{\operatorname{a r g}\operatorname*{m i n}}_{\phi}\sum_{(\mathcal{D},\mathbf{p})\in\mathcal{T}}\left\|\operatorname{l o c}_{\phi}(\mathcal{D})-\mathbf{l}\right\|^{2}~. $$

I 表示质心与手部 MCP 之间在图像坐标和深度上的偏移量。在推理阶段，我们首先从深度相机帧中裁剪出以质心为中心的深度图像，然后将 loc(.) 应用于该裁剪图像来预测 MCP 位置，最后再利用预测出的位置从深度相机帧中再次进行裁剪。

我们围绕 $\text{loc}_{\phi}(\cdot)$ 给出的位置对训练用深度图像和原始输入深度图像进行裁剪：因此，公式 (6)、(7)、(8)、(10)、(11)、(12) 中的 $\mathcal{D}$ 表示裁剪后的训练用深度图像，而 $\mathcal{D}_{\text{input}}$ 则表示裁剪后的原始输入深度图像。

---

![Image](images/f663077bdeec347532c2ea7694bf8e9d9ffedeeba874586b58459d4313125fa9.jpg)

<div style="text-align: center;">Fig. 4. Network architecture of the localizer CNN. All layers have rectified-linear units, except the last layer which has linear units. C denotes a convolutional layer with the number of filters and the filter size inscribed, FC a fully connected layer with the number of neurons, and P a max-pooling layer with the window size. The initial hand crop from the depth image is fed to the network that predicts the location of the MCP of the hand to correct an inaccurate hand localization.</div>

![Image](images/99c7ac0f80cefe37179bd78f79ce1f05e57578de110d03f5792f1752c1b4161f.jpg)

<div style="text-align: center;">Fig. 5. Network architecture of the predictor CNN used for initial pose prediction. C denotes a convolutional layer with the number of filters and the filter size inscribed, FC is fully-connected layer with the number of neurons, D is Dropout layer [^65] with the probability of dropping a neuron, R is residual module [^66] with the number of filters and filter size, and P is a max-pooling layer with the window size. The cropped depth image is fed to the ResNet that predicts the 3D hand pose. The last layer is a bottleneck layer with 30 neurons that incorporates the pose prior. [^11]</div>

#### 3.3 学习预测器函数 pred(.)

预测器 CNN pred(.) 是以神经网络的形式实现的。在我们针对孤立手部的实验中，我们使用 DeepPrior++ [^11] 作为初始化模型，其架构如图 (5) 所示。秉承 [^11]、[^35] 的思路，我们对 3D 手部姿态施加了先验约束，并将其整合到手部的预测器 CNN 中。我们采用一个简单的线性先验 $\mathbf{P}(.)$，该先验是通过对 3D 手部姿态 [^35] 进行 PCA 得到的。因此，pred(.) 预测的是姿态先验的参数，而非 3D 关节位置；后者是通过将估计出的参数代入逆先验得到的。预测器 CNN 由 $\Phi$ 参数化，该参数通过最小化以下式子获得：

 $$ \widehat{\Phi}=\mathop{\operatorname{a r g}\operatorname*{m i n}}_{\Phi}\sum_{(\mathcal{D},\mathbf{p})\in\mathcal{T}}\|\mathbf{P}^{-1}(\operatorname{p r e d}_{\Phi}(\mathcal{D}))-\mathbf{p}\|^{2}~. $$

#### 3.4 学习合成器函数 synth(.)

我们还使用神经网络来实现合成器 CNN synth(.)，并利用标注好的训练样本集合 T 对其进行训练。该网络架构深受 [^26] 的启发，如图 6 所示。它由四个隐藏层组成，在第四个全连接层 FC4 之后会学习到特征图的初始潜在表示。这些潜在特征图之后会经过若干反池化层和卷积层。反池化操作——例如 [^26]、[^39]、[^67] 中使用的那种——是最大池化操作的逆过程：特征图会被扩展，在本例中每个图像维度上的扩展因子为 2。扩展后产生的“空洞”会用零填充。扩展后的特征图

![Image](images/acd9f1b835f504da1c3fedd26bd6150a0fae7390acd55c269b1f19f1eb097827.jpg)

<div style="text-align: center;">Fig. 6. Network architecture of the synthesizer CNN used to generate depth images of hands given their poses. The input of the network is the hand pose. The fully connected hidden layers create a 2048 dimensional latent representation at FC4 which is reshaped into 32 feature maps of size  $8 \times 8$. The feature maps are gradually enlarged by successive unpooling and convolution operations. The last convolution layer combines the feature maps to derive a single depth image of size  $128 \times 128$. All layers have rectified-linear units, except the last layer which has tanh units. C denotes a convolutional layer with the number of filters and the filter size inscribed, FC a fully connected layer with the number of neurons, and UP an unpooling layer with the upscaling factor.</div>

随后会与训练好的 3D 滤波器进行卷积，以生成另一组特征图。这些反池化和卷积操作会依次应用。最后一个卷积层会整合所有特征图来生成深度图像。

我们通过最小化生成的深度图像 synth(p) 与训练用深度图像 D 之间的差异，来学习网络的参数 $\Theta$，公式如下：

 $$ \widehat{\Theta}=\mathop{\operatorname{a r g}\operatorname*{m i n}}_{\Theta}\sum_{(\mathcal{D},\mathbf{p})\in\mathcal{T}}\frac{1}{|\mathcal{D}|}\|\mathrm{s y n t h}_{\Theta}(\mathbf{p})-\mathcal{D}\|^{2}\enspace. $$

我们以分层的方式执行优化。首先训练分辨率为 $8 \times 8$ 的特征图。然后逐步增加输出分辨率，即再添加一个反池化层和卷积层并重新训练；根据我们的经验，这种方式比端到端训练得到的误差更小。

这种合成器 CNN 能够生成精确的图像，对于如此简单的架构而言，这一结果或许令人惊讶。在 NYU 数据集 [^16] 的测试集上，像素误差中位数仅为 0.1 毫米。不过，平均像素误差为 8.9 毫米，标准差达到 28.5 毫米。这主要是由于输入图像中手部轮廓处的噪声被合成器 CNN 平滑掉了。实际上，该传感器的平均深度精度为 11 毫米 [^68]。

##### 3.5 学习更新器函数 updater(.,.)

更新器 CNN updater(..) 以两张深度图像作为输入。正如公式 (4) 中所述，运行时第一张图像是输入的深度图像，第二张图像是合成器 CNN 针对当前姿态估计输出的图像。它的输出是一种用于改进姿态估计的更新量。其架构如图 7 所示。网络的输入是将观测到的图像与合成器 CNN 输出的图像按通道堆叠而成。我们此处不使用最大池化，而是采用滤波器步长 [^69]、[^70] 来降低特征图的分辨率。我们发现使用最大池化时精度较低，而使用步长时精度更高，这可能是因为最大池化引入了空间不变性 [^71]，而这种特性在此任务中并非我们所期望的。

理想情况下，更新器 CNN 的输出应能一步就将姿态估计调整到正确姿态。不过，

---

![Image](images/060215e82cb64aa7a05901a9437284404e4ba079801277326cac97b4436fb19c.jpg)

<div style="text-align: center;">Fig. 7. Network architecture of the updater CNN. The network contains several convolutional layers that use a filter stride to reduce the size of the feature maps. The final feature maps are fed into a fully connected network. All layers have rectified-linear units, except the last layer which has linear units. The pose update is used to refine the initial pose and the refined pose is again fed into the synthesizer CNN to iterate the whole procedure. As in Fig. 6, C denotes a convolutional layer, and FC a fully connected layer.</div>

![Image](images/75e481200466ff704ae27d634fe39ac3d2d8a2551af4d9a367d48b910a7ff0cc.jpg)

<div style="text-align: center;">Fig. 8. Our iterative pose optimization in high-dimensional space, schematized here in 2D. We start at an initial pose (✗) and want to converge to the ground truth pose (○), that maximizes image similarity. Our updater CNN generates updates for each pose (+) that bring us closer. The updates are predicted from the synthesized image of the current pose estimate and the observed depth image.</div>

这是一个非常棘手的问题，我们无法让网络在合理的时间内将初始训练误差降低。不过，我们对更新器 CNN 的唯一要求是它能输出一种能使我们更接近真实值的更新量，如图 8 所示。我们通过迭代这一更新过程来逐步逼近目标。因此，该更新量应满足以下不等式：

 $$ \left\| \mathbf{p}+\mathrm{updater} \left( \mathcal{D},\mathrm{synth} \left( \mathbf{p} \right) \right)-\mathbf{p}_{\mathrm{GT}} \right\|< \lambda \left\| \mathbf{p}-\mathbf{p}_{\mathrm{GT}} \right\|, $$

其中 $\mathbf{p}_{\mathrm{GT}}$ 是图像 $\mathcal{D}$ 对应的真实姿态，$\lambda \in [0,1]$ 是指定最小改进程度的乘法因子。我们在实验中使用了 $\lambda = 0.6$。

我们通过最小化下述代价函数，来优化更新器CNN的参数$\Omega$。

 $$ \mathcal{L}=\sum_{(\mathcal{D},\mathbf{p})\in\mathcal{T}}\sum_{\mathbf{p}^{\prime}\in\mathcal{T}_{\mathcal{D}}}\max(0,\|\mathbf{p}^{\prime \prime}-\mathbf{p}\|-\lambda\|\mathbf{p}^{\prime}-\mathbf{p}\|) $$

其中$\mathbf{p}'' = \mathbf{p}' + \text{updater}_{\Omega}(\mathcal{D}, \text{synth}(\mathbf{p}'))$，而$\mathcal{T}_{\mathcal{D}}$是一组姿态集合。引入合成器CNN后，我们能够虚拟扩充训练数据，将任意姿态添加到$\mathcal{T}_{\mathcal{D}}$中，随后训练更新器CNN来修正这些姿态。

集合$\mathcal{T}_{\mathcal{D}}$包含真实姿态p，更新器CNN针对该姿态应输出零更新量。我们还会尽可能添加更多偏离该真实姿态的有意义姿态，这些姿态是更新器CNN在测试阶段可能遇到的、需要修正的姿态。我们首先加入预测器CNN输出的姿态$\text{pred}(\mathcal{D})$，该姿态在测试时会被用作更新循环的初始值。此外，我们还会为所有姿态添加带有微小高斯噪声的副本。正如评估结果所示，这会在真实姿态周围形成收敛域，在该区域内预测的更新量会指向真实姿态，从而有助于探索姿态空间。

每经过2个训练周期，我们就会对集合进行扩充：将当前更新器CNN应用于$\mathcal{T}_{\mathcal{D}}$中的姿态，也就是永久添加如下集合。

 $$ \{\mathbf{p}_{2}\mid\exists\mathbf{p}\in\mathcal{T}_{\mathcal{D}}\mathrm{s.t.}\mathbf{p}_{2}=\mathbf{p}+\mathrm{u p d a t e r}(\mathcal{D},\mathrm{s y n t h}(\mathbf{p}))\} $$

将其加入$\mathcal{T}_{\mathcal{D}}$中。这样就能用当前训练集$\mathcal{T}_{\mathcal{D}}$中预测的更新量来扩充训练集，迫使更新器CNN学会进一步改进自身的输出结果。

此外，我们会从所有样本的错误分布中采样，并将这些误差加到姿态上，从而明确将训练重点放在常见偏差上。这与高斯噪声不同，有助于针对较大的初始误差预测正确的更新量。

到目前为止，我们都是分别优化各个函数：先训练合成器CNN和预测器CNN，再利用它们来训练更新器CNN。不过理论上也可以同时训练这三个网络。通过引入下述iter(.)函数，可以用当前姿态p来表示一次迭代过程：

 $$ \mathrm{i t e r}(\mathbf{p})=\mathbf{p}+\mathrm{u p d a t e r}(\mathrm{s y n t h}(\mathbf{p}),\mathcal{D})\enspace. $$

经过n次迭代后的姿态估计值$\widehat{\mathbf{p}}^{(n)}$可以表示为：

 $$ \widehat{\mathbf{p}}^{(n)}=\mathrm{i t e r}(\ldots\mathrm{i t e r}(\mathrm{p r e d}(\mathcal{D}))\ldots)\enspace. $$

现在可以通过最小化以下式子来训练pred(.)、synth(.)和updater(.)：

 $$ \{\widehat{\Phi},\widehat{\Theta},\widehat{\Omega}\}=\mathop{\operatorname{a r g}\operatorname*{m i n}}_{\{\Phi,\Theta,\Omega\}}\sum_{(\mathcal{D},\mathbf{p})\in\mathcal{T}}\|\widehat{\mathbf{p}}^{(n)}-\mathbf{p}\|^{2}. $$

可以将函数iter(.)视为一种依赖于输入深度图像D的循环神经网络（RNN）。与RNN相比，我们的方法简化了训练过程，让中间步骤更易于理解，也更容易设计网络架构。

我们尝试从随机网络初始化状态出发优化公式(13)，但优化过程并未收敛到令人满意的解。另外，即使使用预训练好的合成器CNN和预测器CNN作为初始化，优化过程虽然能收敛，但得到的准确率相近，这说明端到端优化虽可行，但在此场景下并无实际价值。此外，中间结果——即合成的深度图像——的可解释性较差，因为手部几乎无法被识别出来。因此，像我们这样拆分优化问题，能在不损失准确率的前提下简化优化过程。

---

## 4 手部与物体联合姿态估计

我们现在的目标是同时估计手部的姿态$\mathbf{p}^H$以及物体被手部操控时的姿态$\mathbf{p}^O$。我们首先通过估算输入图像中手部和物体的位置来启动姿态预测过程。利用这一定位结果，我们分别对手部和物体的姿态做出初步估计。不过在实际应用中，这些姿态估计的精度并不高，因为手部和物体之间往往存在严重的遮挡现象。因此，我们引入了反馈机制：先合成手部和物体的深度图像，再将它们合并在一起。图9展示了我们方法的整体流程，包括其中的各项操作和网络结构。

接下来，我们可以预测出用于修正物体姿态和手部姿态的更新值。每一步都由卷积神经网络（CNN）来完成。与上一节类似，我们将它们分别称为定位器CNN loc(.)、预测器CNN pred(.)、合成器CNN synth(.)以及更新器CNN updater(., .)。不过这一次，我们为手部和物体各使用一个独立的网络，并分别用后缀$^{H}$和$^{O}$来区分它们。下文我们将详细介绍各个网络的训练方式。

由于我们现在要同时估计手部姿态和物体姿态，因此训练集需要包含每一帧深度图像对应的手部姿态和物体姿态信息$\mathcal{T} = \{(\mathcal{D}_i, \mathbf{p}_i^O, \mathbf{p}_i^H)\}_{i=1}^N$。为真实数据获取这些标注信息十分繁琐，所以我们仅使用合成生成的训练数据，具体细节将在下一节中说明。

### 4.1 训练数据的生成

采集手部操控物体的真实训练数据十分困难，因为在我们的情况下，每帧图像都需要有3D手部姿态和3D物体姿态的标注信息。这不仅会受到严重遮挡的影响，有时甚至根本无法实现。我们的方法利用了单独手部数据集中的标注信息——这类数据在实际采集时要简单得多[^6]、[^7]、[^72]；同时我们也使用了规模庞大的3D物体模型数据[^73]。我们利用基于OpenGL的3D物体模型渲染技术，将渲染结果与3D手部数据集中的帧融合在一起。由于我们使用的是深度图像，因此只需取每个像素处两个深度图像中的最小值即可。我们将物体渲染在手部之上，将其放置在手指附近，并应用简单的碰撞检测机制，以避免物体“嵌入”手部点云内部。物体姿态（即旋转和平移参数）是在碰撞检测的限制下随机采样的。为了模拟传感器噪声，我们在渲染结果中加入少量高斯噪声。图10展示了一些合成训练数据的样本。

除了这种半合成的训练数据外，我们还使用完全合成的双手部和物体训练数据。为此，我们采用基于标记的动作捕捉系统[^74]来采集手部操控不同物体时的姿态信息。由于图像数据中包含了标记，我们会根据采集到的姿态信息渲染合成的手部模型和CAD物体模型，并将这些渲染结果作为额外的训练数据。该数据集包含五名用户使用五种不同手持物体进行的手势动作，总共从不同视角根据采集到的姿态信息合成了73k帧图像用于训练。

### 4.2 手部与物体定位器的学习

在实验中我们发现，手和物体的精确定位对于准确的姿态估计至关重要。由于我们同时考虑手和物体，因此利用它们的合质心来进行粗略定位，并围绕该合质心提取一个包含手和物体的较大立方体区域。随后，我们使用两个CNN分别对手和物体进行定位。我们训练了两个网络：用于手定位的$\text{loc}^{H}(.)$，以及用于物体定位的$\text{loc}^{O}(.)$，两者均采用从合质心位置裁剪得到的同一输入图像。这两个网络的架构与3.2节中使用的、如图4所示的架构相同。这些网络被训练用来预测手的MCP关节$1^{H}$以及物体质心$1^{O}$相对于合质心的2D位置和深度。具体来说，我们优化代价函数

 $$ \widehat{\Gamma}=\underset{\Gamma}{\arg\min}\sum_{(\mathcal{D},\mathbf{l}^{H})\in\mathcal{T}}\|\mathrm{loc}_{\Gamma}^{H}(\mathcal{D})-\mathbf{l}^{H}\|^{2} $$

用于手定位器，

 $$ \widehat{\chi}=\underset{\chi}{\arg\min}\sum_{(\mathcal{D},\mathbf{l}^{O})\in\mathcal{T}}\left\|\operatorname{l o c}_{\chi}^{O}(\mathcal{D})-\mathbf{l}^{O}\right\|^{2} $$

用于物体定位器，其中$\Gamma$和$\chi$分别是定位器CNN的参数。

### 4.3 空间变换网络与逆空间变换网络

一旦确定了手和物体的位置，我们就利用它们分别对手和物体周围的区域进行裁剪，这一过程通过空间变换网络（STN）实现。需要注意的是，这种方式使得裁剪过程可微，从而支持端到端的训练；同时由于我们可以运行由各个CNN组成的单个大型网络，因此在GPU上的推理速度也更快。[^75]中提出的STN是针对2D图像设计的。在本研究中，我们将STN应用于2.5D深度图像。我们根据预测的2D位置和深度计算出3D位置，进而估算空间变换$A_\theta$。利用相机内参，我们将3D到2D的投影记为$proj(\cdot)$，3D边界框记为$c_r$，3D位置记为$\mathbf{t}$。我们可以估算出2D边界框投影为$(x^\perp, y^\perp) = proj(\mathbf{t} \pm c)$，并定义$x^\Delta = (x^+ - x^-)$和$y^\Delta = (y^+ - y^-)$。由此可得空间变换$A_\theta$的参数化形式为：

 $$ A_{\theta}=\left(\begin{matrix}{x^{\Delta}/2}&{0}&{x^{-}+x^{\Delta}/2}\\ {0}&{y^{\Delta}/2}&{y^{-}+y^{\Delta}/2}\\ {0}&{0}&{1}\\ \end{matrix}\right)\quad, $$

其采样网格位置的参数化方式如[^75]中所述。源采样网格位置$(x^{s}, y^{s})$是通过对规则采样的目标网格位置$(x^{t}, y^{t})$进行变换得到的：

 $$ (x^{s},y^{s})^{T}=A_{\theta}\cdot(x^{t},y^{t},1)^{T}\quad. $$

---

![Image](images/5c4f00f3625b6a75d1bf6c46801e7fa508cd3aecc3e63c667c8bd0c499d60341.jpg)

<div style="text-align: center;">Fig. 9. Overview of our joint hand-object pose estimation method. We show the predictors for the initial poses with one iteration of the updaters. The input to our method is a crop from the depth camera frame that contains the hand with the object estimated from the center-of-mass in the depth camera frame. From this input, we localize the hand and the object separately, by predicting the 2D locations and depth using the localizer CNNs. We apply a Spatial Transformer Network (STN) to crop a region of interest around the predicted location. On this centered crop, we predict an initial pose using the predictor CNNs, which are then used to synthesize depth images of the hand and the object using the synthesizer CNNs. Using an Inverse STN (ISTN), we paste back the different inputs, i.e., the synthesized object and the synthesized hand, onto the input image. These images are stacked together (⊗) and serve as input to the updater CNNs that predict one update for the pose of the hand and one for the object. The updates are added to the poses and the procedure is iterated several times.</div>

接着我们使用双线性采样来插值输入深度图像$\mathcal{D}$中的深度值，该图像的尺寸为$W \times H$：

 $$ \begin{array}{r l}&{\mathrm{S T N}(\mathbf{l},\mathcal{D})=}\\ &{\displaystyle\sum_{h}^{H}\displaystyle\sum_{w}^{W}\mathcal{D}[h,w]\operatorname*{m a x}(0,1-|x^{s}-w|)\operatorname*{m a x}(0,1-|y^{s}-h|)\enspace.}\end{array} $$

由于我们通过STN进行检测和裁剪，因此需要执行逆操作，以便在应用更新CNN之前将合成的物体重新放回原始图像帧中。为此，我们采用了逆空间变换网络（ISTN）[^76]。它的运作方式与STN相同，但使用的是空间变换$A_{\theta}$的逆变换。

### 4.4 学习手和物体姿态预测器

一旦我们确定了手和物体的准确位置，就会利用STN在手和物体周围裁剪出一个区域，并借助该裁剪区域来估计姿态。我们将手的裁剪区域记为$c^H$，将物体的裁剪区域记为$c^O$。我们把这一操作记作$c^O = \text{STN}(\text{loc}^O(\mathcal{D}), \mathcal{D})$。为了预测姿态，我们需要对手和物体的姿态进行合适的参数化。对于物体姿态$\mathbf{p}^O$，我们使用其3D边界框的八个角点，事实证明这种方式比单纯使用旋转和平移参数效果更好[^77]。对于手姿态，我们采用第3.3节中提到的、基于第4.1节所述数据得到的3D关节位置，并为其设置先验信息。在存在遮挡情况时，3D手姿态的先验信息非常有效，因为它能将预测出的手姿态约束在合理的范围内。在我们进行的手操纵物体实验中，出于速度考虑，我们使用了与图4所示网络类似的架构。不过，对于手部预测器CNN $\text{pred}^H(\cdot)$，我们在输出层使用了$3 \cdot J$个神经元；而对于物体预测器CNN $\text{pred}^O(\cdot)$，我们则使用了$3 \cdot 8$个神经元。同样，我们优化了两个代价函数来训练预测器。

---

![Image](images/702f0143e157276314facb4181131a0c91802680e0988923d3a90bc0a4947fb2.jpg)

<div style="text-align: center;">Fig. 10. Training samples used for joint hand-object pose estimation. Top row: Semi-synthetic training data comprising real depth images of hands with rendered objects. The interaction between hand and object cannot be accurately modeled easily, but the solution space of possible object locations and possible object poses can be significantly reduced, which enables training our proposed method. Bottom row: Additional synthetic depth data is used to accurately model the hand-object interaction, but it does not capture the sensor characteristics.</div>

CNN。对于手姿态预测器，我们优化

 $$ \widehat{\eta}=\mathop{\operatorname{a r g}\operatorname*{m i n}}_{\eta}\sum_{(\mathcal{D},\mathbf{p}^{H})\in\mathcal{T}}\|\mathbf{P}^{-1}(\operatorname{p r e d}_{\eta}^{H}(c^{H}))-\mathbf{p}^{H}\|^{2}~, $$

其中P是对3D手姿态的线性先验。对于物体姿态预测器，我们优化

 $$ \widehat{\Pi}=\mathop{\operatorname{a r g}\operatorname*{m i n}}_{\Pi}\sum_{(\mathcal{D},\mathbf{p}^{O})\in\mathcal{T}}\|\mathrm{p r e d}_{\Pi}^{O}(c^{O})-\pi(\mathbf{p}^{O})\|^{2}~, $$

其中$\pi(\cdot)$会根据物体姿态返回3D边界框的坐标。$\eta$和$\Pi$表示预测器CNN的参数。我们利用正交Procrustes分析[^78]，从$\text{pred}^{O}(.)$的输出中得出3D物体姿态。

### 4.5 学习手和物体更新器

既然我们现在已经得到了手和物体的初始姿态估计值，就可以利用它们启动一个考虑手与物体交互作用的反馈循环。因此，我们将根据最初预测的姿态生成的手和物体的合成图像，添加到更新器CNN的输入数据中。这需要训练一个合成器CNN，或者使用软件渲染器。由于我们已经有了现成的物体3D模型，因此我们实现了基于OpenGL渲染器的物体合成器synth $^{O}$(.)。在实验过程中，我们也评估了使用物体合成器CNN来训练更新器CNN的情况，结果与基于OpenGL的渲染方式相近。手合成器CNN synth $^{H}$(.)的训练方式与第3.4节中描述的一致。此外，更新器CNN的网络架构也与上一节图7中展示的相同。

为了训练更新器CNN，需要将合成图像合并为单张深度图像：

 $$ \begin{align*}S=\min&(\mathrm{ISTN}(\mathrm{loc}^{H}(\mathcal{D}),\mathrm{synth}(\mathbf{p}^{H})),\\\mathrm{ISTN}&(\mathrm{loc}^{O}(\mathcal{D}),\mathrm{synth}(\mathbf{p}^{O})))\otimes\mathcal{D}\ .\end{align*} $$

其中$\min(A, B)$表示两张深度图像A和B之间的逐像素最小值，$\otimes$表示按通道堆叠。随后，我们通过最小化以下代价函数，来训练用于手部更新的更新器CNN $^{H}(., .)$以及用于物体更新的更新器CNN $^{O}(., .)$：

 $$ \sum_{(\mathcal{D},\mathbf{p}^{H},\mathbf{p}^{O})\in\mathcal{T}}\sum_{\mathbf{p}^{\prime O}\in\mathcal{T}_{O}}\sum_{\substack{\mathbf{p}^{\prime H}\in\mathcal{T}_{H}}}\operatorname*{m a x}(0,\|\mathbf{p}^{\prime\prime}-\mathbf{p}\|-\lambda\|\mathbf{p}^{\prime H,O}-\mathbf{p}\|) $$

其中$\mathbf{p}'' = \mathbf{p}''^{H,O} + \text{updater}^{H,O}(c^{H,O}, S)$、$\mathcal{T}_{H}$和$\mathcal{T}_{O}$分别是手和物体的姿态集合。在针对手部更新器$\text{updater}^{H}(.,,)$优化公式(22)时，会使用后缀为$^{H}$的变量；而在针对物体$\text{updater}^{O}(.,,)$优化时，则会使用后缀为$^{O}$的变量。

在训练用于手部更新的CNN更新器$^{H}(.,.)$时，会按照第3.5节的描述对$\mathcal{T}_{H}$进行初始化并在训练过程中更新。$\mathcal{T}_{O}$由围绕真实物体姿态的随机姿态构成，同时还包括预测器pred $^{O}(.)$对训练图像生成的姿态。

在训练用于物体更新的CNN更新器$^{O}(.,.)$时，$\mathcal{T}_O$的定义与第3.5节所述一致。$\mathcal{T}_H$由围绕真实姿态的随机姿态以及训练数据中的预测结果共同构成。

在推理阶段，我们会多次迭代CNN更新器：首先，通过在定位器CNN输出的裁剪区域上运行预测器CNN，得到手部H和物体O的初始估计值$\mathbf{p}^{(0)}$。接着，利用前一次迭代得到的合并图像$S^{(i)}$来预测更新量。算法1给出了该算法的正式表述。

```pseudo
// Algorithm 1: Feedback Loop

1:  $\hat{\mathbf{p}}^{(0),H} \leftarrow \mathrm{pred}^H(\mathrm{STN}(\mathrm{loc}^H(\mathcal{D}), \mathcal{D})$

2:  $\hat{\mathbf{p}}^{(0),O} \leftarrow \mathrm{pred}^O(\mathrm{STN}(\mathrm{loc}^O(\mathcal{D}), \mathcal{D})$

3:  $\mathrm{for} i \leftarrow 0 \text{ to } N - 1 \mathrm{do}$

```

 $S^{(i)} \leftarrow \min(\mathrm{ISTN}(\mathrm{loc}^H(\mathcal{D}), \mathrm{synth}(\hat{\mathbf{p}}^{(i),H})))$

4: $\mathrm{ISTN}(\mathrm{loc}^O(\mathcal{D}), \mathrm{synth}(\hat{\mathbf{p}}^{(i),O})) \otimes \mathcal{D}$

5: $\hat{\mathbf{p}}^{(i+1),H} \leftarrow \hat{\mathbf{p}}^{(i),H} + \mathrm{updater}^H(\mathrm{STN}(\mathbf{p}^{(i),H}, \mathcal{D}), S^{(i)})$

6: $\hat{\mathbf{p}}^{(i+1),O} \leftarrow \hat{\mathbf{p}}^{(i),O} + \mathrm{updater}^O(\mathrm{STN}(\mathbf{p}^{(i),O}, \mathcal{D}), S^{(i)})$

7: $\mathrm{end~for}$

## 5 手部姿态评估

在本节中，我们在NYU手部姿态数据集[^16]上评估所提出的方法，该数据集是手部姿态估计领域极具挑战性的真实世界基准测试集。我们首先介绍网络的训练方式，随后说明基准数据集的相关情况，最后从定性和定量两个角度评估我们的方法。

### 5.1 训练

我们使用梯度下降法优化网络参数，具体采用ADAM方法[^79]，并采用默认的超参数设置。

---

批量大小为64。学习率会随着训练轮次逐步衰减，初始值为0.001。网络共训练100轮。训练过程中，我们会通过随机缩放、随机裁剪和随机旋转操作对训练数据进行在线增强[^11]。

我们会从手部位置周围的深度图像中提取固定大小的立方体区域。立方体内的深度值会被调整成$128 \times 128$大小的图像块，并进行归一化处理至$[-1, 1]$。深度值会被限制在立方体的前后侧范围内；对于深度值未定义的点——例如结构光传感器可能会出现这种情况——会被归类到后侧。这种预处理步骤在[^7]中也有应用，它能够使模型对不同手到相机距离具有不变性。

### 5.2 基准数据集

我们在NYU手部姿态数据集[^16]上评估了所提出的方法。该数据集已公开，包含大量标注样本且标注精度极高。不过该数据集中的姿态变化性很强，这会给姿态估计带来挑战。虽然真实标注中包含$J = 36$个关节，但我们遵循[^16]和[^35]中的评估协议，使用相同的$J = 14$个关节子集进行评估。

训练集包含一个人的样本，测试集则来自两个人。该数据集是使用结构光RGB-D传感器Primesense Carmine 1.09采集的，包含超过7.2万帧训练数据和8千帧测试数据。我们的实验仅使用了深度图像，这些图像存在结构光传感器常见的伪影：轮廓噪声较大，遮挡边界处会出现深度值缺失的情况。

### 5.3 与基线方法的比较

我们展示了所提出的反馈机制在提升3D关节定位精度方面的优势。为此，我们将该方法与近期最先进的方法进行比较：DeepPrior++ [^11] 将3D手部姿态的先验知识融入深度网络；REN [^13] 依赖一组深度网络的集成，每个网络处理输入图像中的特定区域；Lie-X [^10] 采用受李群约束的复杂跟踪算法；Crossing Nets [^42] 采用对抗性训练架构；Neverova等人 [^12] 提出了一种结合手部语义分割的半监督方法；DeepModel [^15] 将3D手部模型整合到深度网络中；DISCO [^80] 学习手部姿态的后验分布；Hand3D [^14] 采用体积CNN处理点云，这与3DCNN [^81] 类似。

我们在表1中给出了定量比较结果，该表通过真实值与预测3D关节位置之间的平均欧几里得距离来评估所考虑的不同方法，这也是此类问题的事实标准。对于我们的反馈机制，如第3.3节所述，我们使用DeepPrior++ [^11] 进行初始化，该方法本身就已经具有很高的精度。即便如此，我们的反馈机制仍能将误差从12.2毫米降低至10.8毫米。

<div style="text-align: center;">TABLE 1</div>

<div style="text-align: center;">Quantitative evaluation on the NYU dataset [^16]. We compare the average Euclidean 3D error of the predicted poses with state-of-the-art methods on the NYU dataset.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Method</td><td style='text-align: center; word-wrap: break-word;'>Average 3D error</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Neverova et al. [^12]</td><td style='text-align: center; word-wrap: break-word;'>14.9mm</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Crossing Nets [^42]</td><td style='text-align: center; word-wrap: break-word;'>15.5mm</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Lie-X [^10]</td><td style='text-align: center; word-wrap: break-word;'>14.5mm</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>REN [^13]</td><td style='text-align: center; word-wrap: break-word;'>13.4mm</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DeepPrior++ [^11]</td><td style='text-align: center; word-wrap: break-word;'>12.3mm</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Feedback [^29]</td><td style='text-align: center; word-wrap: break-word;'>16.2mm</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Hand3D [^14]</td><td style='text-align: center; word-wrap: break-word;'>17.6mm</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DISCO [^80]</td><td style='text-align: center; word-wrap: break-word;'>20.7mm</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DeepModel [^15]</td><td style='text-align: center; word-wrap: break-word;'>16.9mm</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Pose-REN [^82]</td><td style='text-align: center; word-wrap: break-word;'>11.8mm</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>3DCNN [^81]</td><td style='text-align: center; word-wrap: break-word;'>10.6mm</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Ours</td><td style='text-align: center; word-wrap: break-word;'>10.8mm</td></tr></table>

### 5.4 基于图像的手部姿态优化

我们在第3.1节中提到，可以尝试通过直接优化输入图像与合成图像之间的平方损失来估计姿态，如公式(3)所示，但我们指出这种方法实际上效果并不理想。现在我们通过实验加以验证。

我们采用了功能强大的L-BFGS-B算法 [^83] 来求解公式(3)，该算法是一种带边界约束的优化器。我们对姿态设置的约束是让每个关节坐标都位于手部立方体内部。

然而，如图11所示，公式(3)的最小值通常并不对应更好的姿态。尽管生成的图像与输入图像非常相似，但姿态并未得到改善，甚至常常变得更差。造成这一现象的原因有多种：深度输入图像通常在轮廓处存在噪声，如图11的例子所示。经过几次L-BFGS-B迭代后，优化过程可能会开始破坏姿态估计，导致合成器生成与噪声相匹配的伪影。我们对基于图像的优化进行了定量评估，其在NYU数据集上的平均欧几里得误差达到32.3毫米，这一数值甚至比预测器CNN的初始姿态误差（12.2毫米）还要大。

此外，由于误差曲面存在噪声，优化过程容易陷入局部最小值 [^6]。不过我们也尝试了粒子群优化算法 [^6]、[^20]、[^23]——这是一种常用于手部姿态优化的遗传算法，得到的结果却类似。这倾向于证实性能不佳源于公式(3)的目标函数，而非优化算法本身。

我们还在图13中展示了在真实值位置附近不同初始化条件下，应用预测更新前后的平均3D误差直方图。从误差分布可以看出，更新机制能够改善所有初始化结果。

### 5.5 定性结果

图12展示了一些定性示例。对于某些示例，预测器已经能给出较好的姿态，我们仍可进一步改进，尤其是针对拇指部分。而对于初始姿态较差的情况，也能通过该方法实现更大的姿态调整。

---

![Image](images/fa41de65d3cdb1de68ba00d97a612aa716b16332a0c446800db3c136843451e4.jpg)

<div style="text-align: center;">Fig. 11. Comparison with image-based pose optimization. (Top) results for image-based optimization, and (bottom) for our proposed method. From left to right: input depth image with initial pose, synthesized image for initial pose, after first, second iteration, and final pose. Minimizing the difference between the synthesized and the input image does not induce better poses due to sensor noise and local minima. Thanks to the updater, our method can fit a good estimate.</div>

借助我们提出的方法，就能更好地解释图像中的证据。

## 6 手部与物体姿态联合评估

在本节中，我们将在具有挑战性的DexterHO数据集上评估我们的手部与物体姿态联合估计方法[^30]。首先介绍用于训练的数据；接着说明基准数据集；最后从定性和定量两方面评估我们的方法。

### 6.1 训练数据集

由于目前没有包含足够样本以训练神经网络的手部与物体姿态联合估计数据集，我们的方法依赖于真实数据与合成数据的融合。我们采用第4.1节所述的真实手部数据和合成物体数据。其中，真实手部数据来自规模较大的MSRA [^72] 数据集，该数据集包含9名不同受试者的76,500帧手部深度图像，涵盖了多种手部姿态。此外，我们还使用了Qian等人提供的数据集[^6]，其中包含6名不同受试者的2,000帧深度图像。这两个数据集均使用Creative RealSenz Time-of-Flight相机采集，该相机与基准数据集实验中所用的相机相同。深度图像分辨率为$320 \times 240px$，标注信息包含J = 21个关节位置。3D物体模型则是根据简单几何图形手动创建的，以模拟基准数据集中的物体。

### 6.2 基准数据集

我们在DexterHO数据集[^30]上评估了我们的方法，该数据集用于手部与物体姿态联合估计任务。该数据集包含多组RGB-D数据序列，总计超过2,000帧。实验中使用了两种物体：大型长方体和小型长方体。数据集提供了手部和物体的标注信息。手部标注包含可见指尖的3D位置，物体标注则由物体角上的三个3D点组成。尽管数据集包含彩色图像和深度图像，但我们仅使用深度图像进行评估。实验过程中我们发现部分标注存在错误并已予以修正，修正后的标注将会提供给大家。

### 6.3 与基线方法的比较

我们采用[^30]提出的指标来评估该方法，该指标综合考虑了手部与物体姿态的评估结果：

 $$ E=\frac{1}{|V|+1_{M}}\left[\sum_{i\in V}\|X_{i}-G_{i}\|+\frac{1_{M}}{3}\sum_{m\in M}\|Y_{m}-F_{m}\|\right] $$

第一个求和项衡量所有可见指尖V的预测位置X与真实位置G之间的欧几里得距离；第二个求和项则衡量预测的物体角点Y与真实角点F之间的欧几里得距离，其中M表示可见角点的集合。只有当物体的所有角点都可见时才会评估物体姿态，即指示函数$1_{M} = 3$会在三个角点均可见时取值为1。虽然我们预测了手部所有关节的3D位置，但计算误差指标时仅使用指尖的3D位置。同样，我们预测了物体的完整6自由度姿态，评估时则计算其3D角点位置。

我们在表 2 中将结果与 DexterHO 数据集 [^30] 上的最先进方法进行了比较。请注意，[^30] 的基线采用基于跟踪的方法，该方法不依赖训练数据，但需要以前一帧的姿态作为初始化。相比之下，我们完全不需要任何初始化，而是独立地对每一帧从零开始预测姿态。我们在两个序列（Rigid 和 Occlusion）上优于这一强基线；并且当 [^30] 像我们一样仅使用深度时，我们在该数据集所有序列上的平均表现也优于他们的方法。对于物体角点指标，我们的方法显著更准确，因为与手部相比，获取物体的训练数据要容易得多。在手部姿态估计的准确性方面，我们的方法主要受限于有限的训练数据。

更新器对手部与物体各执行两次迭代，因为迭代次数再多也不会带来明显的效果提升。利用反馈循环后，与初始状态相比，所有序列上的精确度平均提升了10%。

需要注意的是，两个定位器CNN接收相同的输入数据，但预测的坐标不同：一个用于手部，另一个用于物体。当用球形物体训练并在DexterHO物体（即长方体）上测试时，手部的平均定位误差会增大1毫米；而当用球形物体训练并在DexterHO物体上测试时，物体的定位误差会增大40毫米。这表明手部定位器CNN以及类似的手部姿态预测器CNN仍可用于其他物体，但物体定位器CNN则需要针对特定物体进行定制。

为了评估采用两个独立网络的优势，我们还评估了一种基于单个CNN同时预测手部和物体3D姿态的方法。在这种情况下，我们按照4.2节的描述，将CNN的输入以手部和物体合并后的质心为中心，CNN输出的则是拼接在一起的手部和物体姿态。训练这个网络难度更大，且得到的精确度更低。其平均综合误差为36.6毫米，这明显高于我们提出的使用独立CNN分别处理手部和物体的方法，后者的误差仅为17.6毫米。

---

![Image](images/4f66be0393a4ec8fd862ff3b17cfc2264d6ab6178cc34691849c9ba6adc9e885.jpg)

<div style="text-align: center;">Fig. 12. Qualitative results for NYU dataset. We show the inferred joint locations in color and the ground truth in grayscale projected to the depth images. The individual fingers are color coded, where the bones of each finger share the same color, but with a different hue. The left image of each pair shows the initialization and the right image shows the pose after applying our method. Our method applies to a wide variety of poses and is tolerant to noise, occlusions and missing depth values as shown in several images. The rightmost images show a failure case, where the error of the initialization is too large to recover the correct pose and the update only pushes the erroneous joints towards the hand silhouette.</div>

<div style="text-align: center;">TABLE 2</div>

<div style="text-align: center;">Quantitative results on the DexterHO dataset [^30]. Note that [^30] uses color and depth information together with a tracking-based approach, which relies on a strong pose prior from the previous frame. In comparison, we perform hand and object pose estimation for each frame independently. Also, we use depth information only, for which their reported average error is larger than for our approach. Our approach significantly outperforms the baseline for the accuracy of the object pose on average.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Method</td><td style='text-align: center; word-wrap: break-word;'>Sequence</td><td style='text-align: center; word-wrap: break-word;'>Rigid</td><td style='text-align: center; word-wrap: break-word;'>Rotate</td><td style='text-align: center; word-wrap: break-word;'>Occlusion</td><td style='text-align: center; word-wrap: break-word;'>Grasp1</td><td style='text-align: center; word-wrap: break-word;'>Grasp2</td><td style='text-align: center; word-wrap: break-word;'>Pinch</td><td style='text-align: center; word-wrap: break-word;'>Average</td></tr><tr><td rowspan="3">Sridhar et al. [^30] RGB+Depth</td><td style='text-align: center; word-wrap: break-word;'>Finger tips</td><td style='text-align: center; word-wrap: break-word;'>14.2 mm</td><td style='text-align: center; word-wrap: break-word;'>16.3 mm</td><td style='text-align: center; word-wrap: break-word;'>17.5 mm</td><td style='text-align: center; word-wrap: break-word;'>18.1 mm</td><td style='text-align: center; word-wrap: break-word;'>17.5 mm</td><td style='text-align: center; word-wrap: break-word;'>10.3 mm</td><td style='text-align: center; word-wrap: break-word;'>15.6 mm</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Object corners</td><td style='text-align: center; word-wrap: break-word;'>13.5 mm</td><td style='text-align: center; word-wrap: break-word;'>26.8 mm</td><td style='text-align: center; word-wrap: break-word;'>11.9 mm</td><td style='text-align: center; word-wrap: break-word;'>15.3 mm</td><td style='text-align: center; word-wrap: break-word;'>15.7 mm</td><td style='text-align: center; word-wrap: break-word;'>13.9 mm</td><td style='text-align: center; word-wrap: break-word;'>16.2 mm</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Combined</td><td style='text-align: center; word-wrap: break-word;'>14.1 mm</td><td style='text-align: center; word-wrap: break-word;'>18.0 mm</td><td style='text-align: center; word-wrap: break-word;'>16.4 mm</td><td style='text-align: center; word-wrap: break-word;'>17.6 mm</td><td style='text-align: center; word-wrap: break-word;'>17.2 mm</td><td style='text-align: center; word-wrap: break-word;'>10.9 mm</td><td style='text-align: center; word-wrap: break-word;'>15.7 mm</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Sridhar et al. [^30] — Depth only</td><td style='text-align: center; word-wrap: break-word;'>Combined</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>18.5 mm</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>This work init — Depth only</td><td style='text-align: center; word-wrap: break-word;'>Combined</td><td style='text-align: center; word-wrap: break-word;'>14.1 mm</td><td style='text-align: center; word-wrap: break-word;'>20.3 mm</td><td style='text-align: center; word-wrap: break-word;'>18.8 mm</td><td style='text-align: center; word-wrap: break-word;'>20.8 mm</td><td style='text-align: center; word-wrap: break-word;'>24.3 mm</td><td style='text-align: center; word-wrap: break-word;'>17.6 mm</td><td style='text-align: center; word-wrap: break-word;'>19.3 mm</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Single network — Depth only</td><td style='text-align: center; word-wrap: break-word;'>Combined</td><td style='text-align: center; word-wrap: break-word;'>29.0 mm</td><td style='text-align: center; word-wrap: break-word;'>35.5 mm</td><td style='text-align: center; word-wrap: break-word;'>35.8 mm</td><td style='text-align: center; word-wrap: break-word;'>40.1 mm</td><td style='text-align: center; word-wrap: break-word;'>39.7 mm</td><td style='text-align: center; word-wrap: break-word;'>39.9 mm</td><td style='text-align: center; word-wrap: break-word;'>36.6 mm</td></tr><tr><td rowspan="3">This work feedback Depth only</td><td style='text-align: center; word-wrap: break-word;'>Finger tips</td><td style='text-align: center; word-wrap: break-word;'>14.2 mm</td><td style='text-align: center; word-wrap: break-word;'>17.9 mm</td><td style='text-align: center; word-wrap: break-word;'>16.3 mm</td><td style='text-align: center; word-wrap: break-word;'>22.7 mm</td><td style='text-align: center; word-wrap: break-word;'>24.0 mm</td><td style='text-align: center; word-wrap: break-word;'>18.5 mm</td><td style='text-align: center; word-wrap: break-word;'>18.9 mm</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Object corners</td><td style='text-align: center; word-wrap: break-word;'>8.4 mm</td><td style='text-align: center; word-wrap: break-word;'>23.4 mm</td><td style='text-align: center; word-wrap: break-word;'>7.4 mm</td><td style='text-align: center; word-wrap: break-word;'>8.2 mm</td><td style='text-align: center; word-wrap: break-word;'>16.6 mm</td><td style='text-align: center; word-wrap: break-word;'>9.6 mm</td><td style='text-align: center; word-wrap: break-word;'>12.4 mm</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Combined</td><td style='text-align: center; word-wrap: break-word;'>13.2 mm</td><td style='text-align: center; word-wrap: break-word;'>18.9 mm</td><td style='text-align: center; word-wrap: break-word;'>14.5 mm</td><td style='text-align: center; word-wrap: break-word;'>20.2 mm</td><td style='text-align: center; word-wrap: break-word;'>22.5 mm</td><td style='text-align: center; word-wrap: break-word;'>16.7 mm</td><td style='text-align: center; word-wrap: break-word;'>17.6 mm</td></tr></table>

![Image](images/29cfc4a1361a74b403f313819df47830e9dc44d3f453de421f06378e7a26ea7c.jpg)

<div style="text-align: center;">Fig. 13. Histogram of errors before and after applying the predicted updates. We initialize noisy joint locations around the ground truth location and calculate the average 3D error before and after applying the update. The different updates minimize the error and thus bring us closer to the ground truth pose.</div>

### 6.4 定性结果

图14展示了DexterHO数据集上的一些定性示例[^30]，图15则展示了一个手部操控玩具鸭的序列的定性结果。我们的方法能够准确估计手部和物体的3D姿态。

图16展示了连续迭代下的姿态情况。预测器会给出手部和物体的姿态初始估计值，而我们的反馈循环会迭代式地优化这些初始姿态。

### 6.5 运行时间

我们的方法使用Python和Theano库实现[^84]，实验在一台配备Intel Core i7处理器、64GB内存以及NVIDIA GeForce GTX 980 Ti GPU的计算机上开展。每个CNN模型的训练时间约为十小时。运行时间包括：定位CNN耗时0.8毫秒，预测CNN耗时20毫秒，更新CNN每次迭代耗时1.2毫秒，这其中已经包含了合成器CNN的0.8毫秒耗时。实际上我们会让更新CNN迭代两次，因此该方法在单GPU上的运行帧率超过40帧/秒。对于手与物体的联合姿态估计任务，我们需要分别为手和物体各运行一次网络。我们采用两个并行线程来进行推理，一个处理手部数据，另一个处理物体数据，并且使用网络结构更简单的预测CNN，其耗时仅为0.8毫秒。因此，我们的方法在单GPU上的运行帧率同样超过40帧/秒。

## 7 结论与未来工作

在这项工作中，我们提出了一种用于手与物体联合姿态估计的新颖方法。首先，我们将该问题拆解为手部姿态估计和物体姿态估计，从而独立获取手部和物体的初始姿态。接着，我们引入了一个反馈循环来优化这些初始估计结果。值得注意的是，我们的方法无需手与物体交互的真实数据，仅用合成数据即可训练，这大大简化了数据集的制作流程。我们在公开数据集上对该方法进行了评估。仅针对手部而言，其性能与现有最先进的方法相当。而对于手与物体的联合姿态估计任务，我们的

---

![Image](images/68f2bcd48bae872414ec6e8da33641187d7750fc1d1bfaa7892380a3820eefcc.jpg)

<div style="text-align: center;">Fig. 14. Qualitative results on the DexterHO dataset [^30]. Our method provides accurate hand and object pose.</div>

![Image](images/3e6133e89694b55983817de7967a2aa9783f363faa84cf83b4fb8df2b1cb43b5.jpg)

初始化

<div style="text-align: center;">Fig. 15. Qualitative results for a hand interacting with a toy duck. Our method provides accurate hand and object poses, also when the hand is manipulating an object.</div>

![Image](images/45aaec9e4b3b1b84ff0cbdbfbfe65f913e2c6ff96237702f543b771867620c2f.jpg)

<div style="text-align: center;">Fig. 16. Different iterations on the DexterHO dataset [^30]. Top row shows the initialization, and further rows the consecutive iterations. Our results are shown in color, and the ground truth annotations are shown in orange. The ground truth contains the finger tips for the hand, and the corners for the object.</div>

方法在使用深度图像时，性能优于现有的基于跟踪的方法。与这类基于跟踪的方法相比，我们的方法能够独立处理每一帧数据，这一特性对于抵抗漂移现象至关重要[^20]，[^85]。

需要指出的是，我们的预测器和合成器是用完全相同的数据训练的。人们可能会疑惑：我们的方法究竟如何改进预测器给出的初始估计？合成器与更新网络的结合，为我们提供了简单却有效的途径来扩充训练数据，从而学习姿态更新的规律：对于给定的输入图像，我们可以生成任意数量的姿态样本，进而训练更新网络使其更接近真实姿态。通过这种方式，我们能够探索训练数据中不存在、但预测器在处理未见过的图像时可能输出的姿态空间区域。

这项工作可以在多个方面进一步拓展。鉴于近期3D手部姿态估计领域的发展势头[^37]，[^86]，[^87]，将反馈循环适配到彩色图像上会很有意义，这意味着该方法还需考虑光照和纹理因素。此外，将其推广到不同物体类别或不同手部形状也是值得探索的方向，只需在合成器CNN中加入形状参数即可实现。另外，若能将该方法与3D手部CAD模型结合而非依赖合成器CNN，也会很有趣。未来的工作还可以优化更新网络的训练目标函数，从而无需再为添加姿态而设置额外的超参数。

## 致谢

作者感谢陈泽渊在合成手部数据集方面提供的帮助。Vincent Lepetit教授是法国大学研究院的高级成员。

---

## 参考文献

[^1]: A. Erol, G. Bebis, M. Nicolescu, R. D. Boyle, and X. Twombly, "Vision-Based Hand Pose Estimation: A Review," CVIU, vol. 108, no. 1-2, 2007.

[^2]: C. Keskin, F. Kiraç, Y. E. Kara, and L. Akarun, "Real Time Hand Pose Estimation Using Depth Sensors," in ICCV, 2011.

[^3]: —, “Hand Pose Estimation and Hand Shape Classification Using Multi-Layered Randomized Decision Forests,” in ECCV, 2012.

[^4]: S. Melax, L. Keselman, and S. Orsten, "Dynamics Based 3D Skeletal Hand Tracking," in Proc. of Graphics Interface Conference, 2013.

[^5]: I. Oikonomidis, N. Kyriazis, and A. A. Argyros, "Full DOF Tracking of a Hand Interacting with an Object by Modeling Occlusions and Physical Constraints," in ICCV, 2011.

[^6]: C. Qian, X. Sun, Y. Wei, X. Tang, and J. Sun, "Realtime and Robust Hand Tracking from Depth," in CVPR, 2014.

[^7]: D. Tang, H. J. Chang, A. Tejani, and T.-K. Kim, "Latent Regression Forest: Structured Estimation of 3D Articulated Hand Posture," in CVPR, 2014.

[^8]: D. Tang, T. Yu, and T.-K. Kim, "Real-Time Articulated Hand Pose Estimation Using Semi-Supervised Transductive Regression Forests," in ICCV, 2013.

[^9]: C. Xu and L. Cheng, "Efficient Hand Pose Estimation from a Single Depth Image," in ICCV, 2013.

[^10]: C. Xu, L. N. Govindarajan, Y. Zhang, and L. Cheng, "Lie-X: Depth Image Based Articulated Object Pose Estimation, Tracking, and Action Recognition on Lie Groups," IJCV, 2016.

[^11]: M. Oberweger and V. Lepetit, "DeepPrior++: Improving Fast and Accurate 3D Hand Pose Estimation," in ICCV Workshops, 2017.

[^12]: N. Neverova, C. Wolf, F. Nebout, and G. Taylor, “Hand Pose Estimation through Semi-Supervised and Weakly-Supervised Learning,” CVIU, 2017.

[^13]: H. Guo, G. Wang, X. Chen, C. Zhang, F. Qiao, and H. Yang, "Region Ensemble Network: Improving Convolutional Network for Hand Pose Estimation," in ICIP, 2017.

[^14]: X. Deng, S. Yang, Y. Zhang, P. Tan, L. Chang, and H. Wang, "Hand3D: Hand Pose Estimation Using 3D Neural Network," in ARXIV, 2017.

[^15]: X. Zhou, Q. Wan, W. Zhang, X. Xue, and Y. Wei, "Model-Based Deep Hand Pose Estimation," IJCAI, 2016.

[^16]: J. Tompson, M. Stein, Y. LeCun, and K. Perlin, "Real-Time Continuous Pose Recovery of Human Hands Using Convolutional Networks," TOG, vol. 33, 2014.

[^17]: L. Ballan, A. Taneja, J. Gall, L. Van Gool, and M. Pollefeys, "Motion Capture of Hands in Action Using Discriminative Salient Points," in ECCV, 2012.

[^18]: M. de La Gorce, D. J. Fleet, and N. Paragios, "Model-Based 3D Hand Pose Estimation from Monocular Video," PAMI, vol. 33, no. 9, 2011.

[^19]: R. Plänkers and P. Fua, “Articulated Soft Objects for Multi-View Shape and Motion Capture,” PAMI, vol. 25, no. 10, 2003.

[^20]: T. Sharp, C. Keskin, D. Robertson, J. Taylor, J. Shotton, D. Kim, C. Rhemann, I. Leichter, A. Vinnikov, Y. Wei, D. Freedman, P. Kohli, E. Krupka, A. Fitzgibbon, and S. Izadi, "Accurate, Robust, and Flexible Real-Time Hand Tracking," in CHI, 2015.

[^21]: S. Sridhar, A. Oulasvirta, and C. Theobalt, "Interactive Markerless Articulated Hand Motion Tracking Using RGB and Depth Data," in ICCV, 2013.

[^22]: D. Tzionas, A. Srikantha, P. Aponte, and J. Gall, "Capturing Hand Motion with an RGB-D Sensor, Fusing a Generative Model with Salient Points," in GCPR, 2014.

[^23]: I. Oikonomidis, N. Kyriazis, and A. A. Argyros, "Efficient Model-Based 3D Tracking of Hand Articulations Using Kinect," in BMVC, 2011.

[^24]: A. Tkach, A. Tagliasacchi, E. Remelli, M. Pauly, and A. Fitzgibbon, "Online Generative Model Personalization for Hand Tracking," TOG, vol. 36, no. 6, p. 243, 2017.

[^25]: J. Taylor, L. Bordeaux, T. Cashman, B. Corish, C. Keskin, T. Sharp, E. Soto, D. Sweeney, J. Valentin, B. Luff, A. Topalian, E. Wood, S. Khamis, P. Kohli, S. Izadi, R. Banks, A. Fitzgibbon, and J. Shotton, "Efficient and Precise Interactive Hand Tracking through Joint, Continuous Optimization of Pose and Correspondences," TOG, vol. 34, no. 4, p. 143, 2016.

[^26]: A. Dosovitskiy, J. T. Springerberg, and T. Brox, "Learning to Generate Chairs with Convolutional Neural Networks," in CVPR, 2015.

[^27]: A. Tagliasacchi, M. Schrder, A. Tkach, S. Bouaziz, M. Botsch, and M. Pauly, "Robust ArticulatedICP for Realtime Hand Tracking," CGF, vol. 34, no. 5, pp. 101–114, 2015.

[^28]: S. Sridhar, F. Mueller, A. Oulasvirta, and C. Theobalt, "Fast and robust hand tracking using detection-guided optimization," in CVPR, 2015.

[^29]: M. Oberweger, P. Wohlhart, and V. Lepetit, "Training a Feedback Loop for Hand Pose Estimation," in ICCV, 2015.

[^30]: S. Sridhar, F. Mueller, M. Zollhoefer, D. Casas, A. Oulasvirta, and C. Theobalt, "Real-time Joint Tracking of a Hand Manipulating an Object from RGB-D Input," in ECCV, 2016.

[^31]: D. Tzionas, L. Ballan, A. Srikantha, P. Aponte, M. Pollefeys, and J. Gall, "Capturing Hands in Action using Discriminative Salient Points and Physics Simulation," in IJCV, 2016.

[^32]: C. Bishop, Pattern Recognition and Machine Learning. Springer, 2006.

[^33]: Y. Tang, N. Srivastava, and R. Salakhutdinov, "Learning Generative Models with Visual Attention," in NIPS, 2014.

[^34]: A. Kuznetsova, L. Leal-taixe, and B. Rosenhahn, "Real-Time Sign Language Recognition Using a Consumer Depth Camera," in ICCV, 2013.

[^35]: M. Oberweger, P. Wohlhart, and V. Lepetit, “Hands Deep in Deep Learning for Hand Pose Estimation,” in CVWW, 2015.

[^36]: F. Müller, D. Mehta, O. Sotnychenko, S. Sridhar, D. Casas, and C. Theobalt, "Real-Time Hand Tracking Under Occlusion From an Egocentric RGB-D Sensor," in ICCV, 2017.

[^37]: C. Zimmermann and T. Brox, "Learning to Estimate 3D Hand Pose from Single RGB Images," in ICCV, 2017.

[^38]: T. D. Kulkarni, W. Whitney, P. Kohli, and J. B. Tenenbaum, "Deep Convolutional Inverse Graphics Network," in NIPS, 2015.

[^39]: I. J. Goodfellow, J. Pouget-Abadie, M. Mirza, B. Xu, D. Warde-Farley, S. Ozair, A. Courville, and Y. Bengio, "Generative Adversarial Nets," in NIPS, 2014.

[^40]: T. D. Kulkarni, I. Yildirim, P. Kohli, W. A. Freiwald, and J. B. Tenenbaum, "Deep Generative Vision as Approximate Bayesian Computation," in NIPS, 2014.

[^41]: V. Nair, J. Susskind, and G. E. Hinton, "Analysis-By-Synthesis by Learning to Invert Generative Black Boxes," in ICANN, 2008.

[^42]: C. Wan, T. Probst, L. Van Gool, and A. Yao, “Crossing Nets: Dual Generative Models with a Shared Latent Space for Hand Pose. Estimation,” in CVPR, 2017.

[^43]: J. Carreira, P. Agrawal, K. Fragkiadaki, and J. Malik, “Human pose estimation with iterative error feedback,” in CVPR, 2016.

[^44]: A. R. Zamir, T.-L. Wu, L. Sun, W. Shen, J. Malik, and S. Savarese, "Feedback Networks," in CVPR, 2017.

[^45]: M. Rad and V. Lepetit, "BB8: A Scalable, Accurate, Robust to Partial Occlusion Method for Predicting the 3D Poses of Challenging Objects without Using Depth," in ICCV, 2017.

[^46]: Y. Li, G. Wang, X. Ji, Y. Xiang, and D. Fox, "DeepIM: Deep Iterative Matching for 6D Pose Estimation," in ARXIV, 2018.

[^47]: G. Rogez, J. S. Supancic, and D. Ramanan, “Understanding Everyday Hands in Action from RGB-D Images,” in ICCV, 2015.

[^48]: J. Romero, H. Kjellström, and D. Kragic, "Hands in action: real-time 3D reconstruction of hands in interaction with objects," in ICRA, 2010.

[^49]: M. Madadi, S. Escalera, A. Carruesco, C. Andujar, X. Bar, and J. Gonzalez, “Occlusion Aware Hand Pose Recovery from Sequences of Depth Images,” in FGR, 2017.

[^50]: P. Wohlhart and V. Lepetit, "Learning Descriptors for Object Recognition and 3D Pose Estimation," in CVPR, 2015.

[^51]: D. G. Lowe, “Distinctive image features from scale-invariant key-points,” IJCV, 2004.

[^52]: D. Wagner, T. Langlotz, and D. Schmalstieg, “Robust and unobtrusive marker tracking on mobile phones,” in ISMAR, 2008.

[^53]: A. Crivellaro, M. Rad, Y. Verdie, K. M. Yi, P. Fua, and V. Lepetit, "A Novel Representation of Parts for Accurate 3D Object Detection and Tracking in Monocular Images," in ICCV, 2015.

[^54]: E. Brachmann, A. Krull, F. Michel, S. Gumhold, J. Shotton, and C. Rother, "Learning 6D Object Pose Estimation using 3D Object Coordinates," in ECCV, 2014.

[^55]: A. Krull, E. Brachmann, F. Michel, M. Y. Yang, S. Gumhold, and C. Rother, "Learning Analysis-by-Synthesis for 6D Pose Estimation in RGB-D Images," in ICCV, 2015.

[^56]: B. Drost, M. Ulrich, N. Navab, and S. Ilic, "Model globally, match locally: Efficient and robust 3d object recognition," in CVPR, 2010.

## [^57]: S. Gupta, P. Arbelaez, R. Girshick, and J. Malik, “Aligning 3D Models to RGB-D Images of Cluttered Scenes,” in CVPR, 2015

---

[^58]: R. Y. Wang, S. Paris, and J. Popovic, "6D Hands: Markerless Hand Tracking for Computer Aided Design," 2011.

[^59]: I. Oikonomidis, N. Kyriazis, and A. Argyros, “Tracking the articulated motion of two strongly interacting hands,” in CVPR, 2012.

[^60]: H. Hamer, K. Schindler, E. Koller-Meier, and L. Van Gool, "Tracking a Hand Manipulating an Object," in ICCV, 2009.

[^61]: D. Goudie and A. Galata, "3D Hand-Object Pose Estimation from Depth with Convolutional Neural Networks," in FGR, 2017.

[^62]: D. Tzionas and J. Gall, "3D Object Reconstruction from HandObject Interactions," in ICCV, 2015.

[^63]: P. Panteleris, N. Kyriazis, and A. A. Argyros, "3D Tracking of Human Hands in Interaction with Unknown Objects," in BMVC, 2015.

[^64]: N. Kyriazis and A. A. Argyros, "Scalable 3D Tracking of Multiple Interacting Objects," in CVPR, 2014.

[^65]: N. Srivastava, G. E. Hinton, A. Krizhevsky, I. Sutskever, and R. Salakhutdinov, "Dropout: A Simple Way to Prevent Neural Networks from Overfitting," JMLR, vol. 15, no. 1, pp. 1929–1958, 2014.

[^66]: K. He, X. Zhang, S. Ren, and J. Sun, “Deep Residual Learning for Image Recognition,” in CVPR, 2016.

[^67]: M. D. Zeiler, G. W. Taylor, and R. Fergus, “Adaptive Deconvolutional Networks for Mid and High Level Feature Learning,” in ICCV, 2011.

[^68]: K. Khoshelham and S. O. Elberink, “Accuracy and Resolution of Kinect Depth Data for Indoor Mapping Applications,” Sensors, vol. 12, no. 2, pp. 1437–1454, 2012.

[^69]: A. Jain, J. Tompson, M. Andriluka, G. W. Taylor, and C. Bregler, "Learning human pose estimation features with convolutional networks," in ICLR, 2014.

[^70]: S. Liu, X. Liang, L. Liu, X. Shen, J. Yang, C. Xu, L. Lin, X. Cao, and S. Yan, "Matching-CNN Meets KNN: Quasi-Parametric Human Parsing," in CVPR, 2015.

[^71]: D. Scherer, A. Müller, and S. Behnke, "Evaluation of Pooling Operations in Convolutional Architectures for Object Recognition," in ICANN, 2010.

[^72]: X. Sun, Y. Wei, S. Liang, X. Tang, and J. Sun, "Cascaded Hand Pose Regression," in CVPR, 2015.

[^73]: A. X. Chang, T. Funkhouser, L. Guibas, P. Hanrahan, Q. Huang, Z. Li, S. Savarese, M. Savva, S. Song, H. Su, J. Xiao, L. Yi, and F. Yu, "ShapeNet: An Information-Rich 3D Model Repository," Stanford University — Princeton University — Toyota Technological Institute at Chicago, Tech. Rep., 2015.

[^74]: S. Han, B. Liu, R. Wang, Y. Ye, C. D. Twigg, and K. Kin, “Online Optical Marker-based Hand Tracking with Deep Labels,” TOG, vol. 37, no. 4, pp. 166:1–166:10, 2018.

[^75]: M. Jaderberg, K. Simonyan, A. Zisserman, and K. Kavukcuoglu, "Spatial transformer networks," in NIPS, 2015.

[^76]: C.-H. Lin and S. Lucey, "Inverse compositional spatial transformer networks," in CVPR, 2017.

[^77]: Y. Xiang, T. Schmidt, V. Narayanan, and D. Fox, "PoseCNN: A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes," RSS, 2018.

[^78]: W. Kabsch, “A solution for the best rotation to relate two sets of vectors,” in Acta Crystallographica, 1976.

[^79]: D. Kingma and J. Ba, “Adam: A Method for Stochastic Optimization,” in ICLR, 2015.

[^80]: D. Bouchacourt, M. P. Kumar, and S. Nowozin, "DISCO Nets: Dissimilarity Coefficient Networks," in NIPS, 2016.

[^81]: L. Ge, H. Liang, J. Yuan, and D. Thalmann, "Real-time 3D Hand Pose Estimation with 3D Convolutional Neural Networks," PAMI, 2018.

[^82]: X. Chen, G. Wang, H. Guo, and C. Zhang, "Pose Guided Structured Region Ensemble Network for Cascaded Hand Pose Estimation," ARXIV, 2017.

[^83]: R. H. Byrd, P. Lu, J. Nocedal, and C. Zhu, "A limited memory algorithm for bound constrained optimization," SIAM Journal on Scientific and Statistical Computing, vol. 16, no. 5, 1995.

[^84]: J. Bergstra, O. Breuleux, F. Bastien, P. Lamblin, R. Pascanu, G. Desjardins, J. Turian, D. Warde-Farley, and Y. Bengio, "Theano: A CPU and GPU Math Expression Compiler," in Proc. of SciPy, 2010.

[^85]: R. Rosales and S. Sclaroff, "Combining Generative and Discriminative Models in a Framework for Articulated Pose Estimation," IJCV, vol. 67, no. 3, pp. 251–276, May 2006.

[^86]: F. Müller, F. Bernard, O. Sotnychenko, D. Mehta, S. Sridhar, D. Casas, and C. Theobalt, "GANerated Hands for Real-Time 3D Hand Tracking from Monocular RGB," in CVPR, 2018.

[^87]: P. Panteleris, I. Oikonomidis, and A. A. Argyros, "Using a Single RGB Frame for Real Time 3D Hand Pose Estimation in the Wild," in WACV, 2018.

![Image](images/da6e98bd39138c075745ac0f2ceb5f5f73ddc324448855e13ada587660cc1838.jpg)

马库斯·奥伯韦格于2014年获得格拉茨技术大学远程通信专业理学硕士学位，2018年获得该校计算机科学专业博士学位。他目前是格拉茨技术大学计算机图形与视觉研究所的研究与教学助理。他的研究兴趣包括计算机视觉领域的机器学习方法、深度学习以及三维姿态估计方法。

![Image](images/c3e6aa651ce0241e07e15e88c47a6daebc1346d1d98f289c475776389bbbc9dc.jpg)

保罗·沃尔哈特于2009年获得格拉茨技术大学远程通信专业理学硕士学位，2014年获得该校博士学位。攻读博士期间，他致力于机器学习算法以及物体检测与识别领域的研究。之后，他在莱佩蒂教授指导下于计算机图形与视觉研究所担任博士后研究员。他现在在X公司（即“登月工厂”）担任研究工程师。他的研究兴趣包括人工智能、计算机视觉和机器人技术。

![Image](images/df30de4bf4d19f3e5122960d122900a13c3f7c5837e703bcd68a0ea5bba50413.jpg)

文森特·莱佩蒂是波尔多大学LaBRI实验室的正教授，也是法国大学研究院的高级成员（2018-2025年）。他还在格拉茨技术大学计算机图形与视觉研究所负责一个面向增强现实的计算机视觉研究小组。他的研究兴趣包括基于视觉的增强现实、三维相机跟踪、机器学习、物体识别以及三维重建。他是IEEE模式分析与机器智能汇刊、《国际计算机视觉杂志》以及《计算机视觉与图像理解》期刊的编辑。
