
# 基于深度图像的实时且鲁棒的手部追踪

陈倩 $^{1,2}$

孙晓 $^{1}$

魏一尘 $^{1}$

 $^{1}$微软研究院

唐晓欧 $^{2}$ 孙健 $^{1}$

 $^{2}$香港中文大学

{v-xiasun,yichenw,jiansun}@microsoft.com

{qc012,xtang}@ie.cuhk.edu.hk

## 摘要

我们提出了一种基于深度传感器的实时手部追踪系统。该系统能够在较大的视角变化下实时追踪完全关节化的手部（在普通台式机上无需使用GPU即可达到25帧/秒的速率），且精度极高（误差低于10毫米）。据我们所知，这是首个同时实现如此高的鲁棒性、精度和速度的系统，这一点已在具有挑战性的真实数据上得到了验证。

我们的系统包含几项创新技术。我们使用若干个球体简单地对手部进行建模，并定义了快速的成本函数，这两者对实现实时性能至关重要。我们提出了一种混合方法，结合了基于梯度的优化方法和随机优化方法，以实现快速收敛和良好的精度。我们还提出了新的手指检测与手部初始化方法，大幅提升了追踪的鲁棒性。

### 1. 引言

手部追踪在许多人机交互应用中具有重要意义，数十年来一直是研究热点 [^10] [^28] [^4] [^2] [^7] [^14]。尽管如此，由于手部结构的极端复杂性，该任务仍极具挑战性：手部关节化程度高，手指间的相互作用复杂，且通常在较大的视角变化下快速运动。

近年来尽管取得了显著进展，但最先进的方法在某些方面仍存在局限。[^13] 中的手部运动捕捉工作利用复杂的网格模型获得了较高的精度，但受限于缓慢的局部优化。[^8] [^9] 中的工作采用简单的多边形模型并实现了实时性能，但需要昂贵的 GPU 进行模型渲染和代价函数评估。该优化纯粹是局部的，无法在跟踪失败后恢复。全局技术 [^3] [^4] 通过搜索较大的参数空间来避免较差的局部最优，但结果通常较为粗糙，且搜索速度较慢。[^21] [^25] 中的方法执行实时全局搜索和局部优化，但依赖于不便的设置（[^21] 中为彩色手套，[^25] 中为多个摄像头）。其他实时且稳健的系统仅能在不进行优化的情况下识别离散手势 [^31] [^5] [^6] [^29]，或仅支持少量 DOFs [^22]，或仅在固定视角 [^12] 下工作。上述这些局限源于系统复杂度与预期目标之间艰难的折中。为实现高准确度和高速度，以往的工作采用复杂的模型、精巧的代价函数、昂贵的优化或特定的设置。

我们提出了一种全新的最先进的手部追踪系统。该系统能够在台式机上实时、高精度地追踪自由且复杂的手部运动。我们的研究主要受到近期人体追踪技术进展的启发 [^24] [^1] [^15] [^30] [^27]。然而，由于上述手部追踪所面临的独特挑战，直接将现有的人体追踪技术应用于手部通常效果不佳。因此，需要进行细致的适配与改进。

我们采用了“局部优化 + 基于部件检测的初始化的框架” [^1] [^15] [^30]，并做出了几项重要贡献。我们采用了一种简单的手部模型，该模型由一组球体近似而成；同时采用了一种能够快速计算模型与稀疏点云之间距离的成本函数。这些简化措施对于实现实时性能至关重要。详细内容见第2节。

尽管该成本函数较为简单，但它在几乎所有情况下都能在正确的手部姿态处达到全局最小值，因而十分有效。不过，该函数不够平滑，在高维空间中存在大量局部最优解。以往用于人体追踪的基于梯度的优化方法 [^27]，以及用于手部追踪的随机优化方法 [^8] [^9]，都无法很好地最小化该成本函数——它们要么对局部最优解过于敏感，要么收敛速度太慢。观察到这两种方法的互补性后，我们开发了一种结合了两者优点的混合优化方法。如第3节所述，该方法收敛更快，且更能抵抗局部最优解的影响。

部件检测与基于部件的初始化已被证明对人体追踪的鲁棒性至关重要 [^18] [^1] [^30] [^24]。受此类研究的启发，我们在第4节提出了新颖且有效的手指检测、分割及手部初始化方法。如第5节所示，我们在具有挑战性的真实数据上进行的全面实验验证了该系统的有效性。

---

![Image](images/2e7a2b23776b64a37f7472cc5f58f9ea43c058cd5f34b3873e71b63e83780e4b.jpg)

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

<div style="text-align: center;">Figure 1. (a) 26 DOFs hand motion model; (b) the hand model in [^8]; (c) our hand model that approximates (b) using 48 spheres.</div>

### 2. 模型与成本函数

手部模型。为了建模手部运动学，我们采用了常用的26自由度（DOF）手部运动模型 [^21] [^9]：其中6个自由度用于描述手部的整体姿态，每个手指对应4个自由度，如图1(a)所示。在优化过程中，我们通过限制关节角度在其有效范围内（定义见 [^23]）来保持手部的运动学约束。这26个运动参数被记为 $\Theta$。

简单的几何模型对于快速计算距离与交点至关重要。例如，在 [^27] 中，人体被建模为球体与圆柱体的混合物。在本研究中，我们采用了最简单的球体集合表示法。具体而言，我们使用48个球体来近似 [^8] 中的多边形网格模型，如图1(b)和(c)所示。各部件的球体数量是根据经验指定的：每个手指6个球体（拇指为8个），手掌部分为16个。球体的大小与中心位置也是根据图1所示的规范姿态下多边形模型的特征来设定的。在本研究中，我们没有采用任何个性化模型适配（第5节中提到的全局缩放除外），却发现该球体模型在多个不同受试者身上均能取得良好效果。不过，若使用经过优化的个性化手部模型 [^26] 以及球体近似技术 [^20]，应该能进一步提升精度。

球体模型用$\mathcal{M}(\Theta) = \{s_i\}_{i=1}^{48}$表示。每个球体$s = \{c(\Theta), r\}$的中心为$c(\Theta)$，半径为r。这里的记号意味着半径是固定的，但中心会根据参数$\Theta$通过正向运动学来确定。为简洁起见，本文余下部分不再使用$\Theta$这一记号。

数据方面，我们使用英特尔的Creative Interactive Gesture Camera。其深度分辨率为$320 \times 240$。在手部分割时，我们在手腕处设置黑色带以形成深度空洞，然后选取距离最近的连通分量作为手部区域，前提是假设手离摄像头最近。该手部区域会经过中值滤波和形态学开运算处理，得到的深度图记为$\mathcal{D}$。随后将其转换为3D点云，记为$\mathcal{P}$。

代价函数。该函数用于衡量手部模型与输入深度之间的偏差，以及手部模型的有效性。其定义如下：

 $$ \lambda\cdot\sum_{p\in{s u b}(\mathcal{P})}D(p,s_{x(p)})^{2}+\sum_{i}B(c_{i},\mathcal{D})^{2}+\sum_{i,j}L(s_{i},s_{j})^{2}. $$

第一项$D(\cdot)$用于将点云$\mathcal{P}$与球体模型$\mathcal{M}$对齐。为降低计算复杂度，点云会被随机下采样为256个点，记为$sub(\mathcal{P})$。这种操作能在效率与精度之间取得良好的平衡。对于每一个点p，$x(p)$会找到与其最接近的球体，而$D(\cdot)$即为该点到球面的距离。

 $$ D(p,s)=abs(||p-c||_{2}-r). $$

第二项$B(\cdot)$强制要求模型位于点云内部。每个球体中心会被投影到深度图上，得到$j(c)$。若$j(c)$处的深度值更小，说明球体中心位于深度前方，此时会因其与深度的差值而受到惩罚；若$j(c)$处没有深度值，说明球体中心位于深度的轮廓之外，此时会因其到轮廓的距离而受到惩罚，该距离可通过轮廓的距离变换高效计算得出，记为$^{1}$。正式来说，该项定义为：

 $$ B(c,\mathcal{D})=\left\{\begin{array}{l l}\max(0,\mathcal{D}(j(c))-c_{z})&\text{if}\mathcal{D}(j(c))\text{is valid}\\ \text{dist}(j(c),\text{silhouette of}\mathcal{D})&\text{otherwise}\end{array}\right. $$

第三项$L(\cdot)$用于对模型的自碰撞进行惩罚。碰撞代价为：

 $$ L(s_{i},s_{j})=\max(r_{i}+r_{j}-||c_{i}-c_{j}||_{2},0). $$

我们观察到，优化过程中大多数碰撞发生在相邻手指之间，因此为提高效率，仅对相邻手指进行检测。

该代价函数简单且有效。第一项使可见的球体与点云匹配，其权重由$\lambda = |\mathcal{M}| / |sub(\mathcal{P})|$决定，因此其数值大小与第二项相当。第二项强制要求被遮挡的球体位于深度之后，是对第一项的补充。它在理念上与[^27]、[^30]类似，但更为简单，因为它仅在少数球体上进行计算。

第一项的计算复杂度为$O(|\mathcal{M}||sub(\mathcal{P})|)$，因为需要为每个点计算最近的球体。最后两项的复杂度为$|\mathcal{M}|$。由于$|\mathcal{M}|$和$|sub(\mathcal{P})|$的值都很小，因此代价函数(1)的评估速度非常快。这对实时性能至关重要，因为任何合理的优化方法都会多次评估代价函数。

为简便起见，我们未在代价函数中考虑时间连贯性，这部分将留作未来的研究工作。

---

![Image](images/555d74df61bf321ca76f6ec2b19faea120a033567651dc5f7d529ef2c532aa5d.jpg)

<div style="text-align: center;">Figure 2. (better viewed in color) Illustration of a real tracking example. Top: due to the fast motion of the thumb and index fingers, the pose from the last frame is a poor initialization for the current frame. Bottom: we generate intermediate poses by interpolating thumb and index finger parameters of the last pose and true pose while keeping other parameters intact. The cost function (1) is densely evaluated on the two interpolation coefficients ([^0] [^1]) and visualized, using dense and sparse 3D point cloud, with local optima overlaid.</div>

### 3. ICP-PSO局部优化

跟踪过程是通过从初始手部姿态出发，对公式(1)进行局部优化来实现的，初始姿态要么来自上一帧，要么来自当前帧的手指检测结果。

对于这类点云对齐任务，迭代最近点（ICP）方法[^17] [^19]被广泛应用。它采用交替优化和基于梯度的优化方式，收敛速度快，适合实时应用场景。不过，它很容易陷入较差的局部最优解，且对非刚性物体的处理能力较弱。人们提出了多种扩展方法来处理关节型物体[^16]，近年来ICP也已被成功应用于人体追踪领域[^27]。然而，对于高维度的关节型手部模型而言，该方法仍显不足，尤其是在自由视角下。更糟糕的是，为了追求实时性能，我们只能使用点云的稀疏子集而非全部点云。上述因素共同导致了代价函数中存在大量局部最优解。手部快速运动也常常导致初始化的效果不佳。

图2展示了这些挑战。由于上一帧的初始化效果较差，基于梯度的优化算法会陷入众多局部最优解之中。当点云采用稀疏采样时，这一问题会更加严重。

为缓解这一问题，随机优化方法是必要的。我们采用了粒子群优化（PSO）方法[^11]，在此对其作简要介绍。粒子是一个高维参数向量，粒子群则是一组粒子的集合；PSO是一种进化过程，粒子之间通过相互作用来搜索参数空间。在进化过程中，系统会记录整个粒子群的全局最优位置以及每个粒子的局部最优位置。初始粒子是随机采样的（通常围绕某个初始粒子），其初始速度均设为零。在每一代进化中，粒子的速度会按其先前速度、指向局部最优位置的速度以及指向全局最优位置的速度的随机加权和来更新。随后粒子会以其新速度从先前位置移动。所有粒子移动完毕后，全局最优位置和局部最优位置也会被更新。

PSO能够更有效地探索参数空间，通过将更多粒子吸引到更有潜力的区域来避开较差的局部最优解。近年来，它已被成功用于手部追踪[^8] [^9]。然而，在我们的情况下它的表现并不理想。可能的原因是，[^9]中所用的代价函数会对比所有点的深度值，而我们的代价函数使用的是稀疏点且平滑度较低，如图2所示。我们发现即便使用大量粒子，PSO的收敛速度依然缓慢，无法有效最小化代价函数。这一问题被称为粒子早熟收敛[^11]，在高维度空间中尤为常见。由于每个粒子的搜索范围较大，PSO中的随机搜索效率不足，以至于粒子可能会过早地被吸引到错误的全局最优解处，即便附近存在较好的局部最优解也是如此。

上述分析表明，这两种方法在本质上是互补的：ICP能快速收敛到局部最优解；PSO虽然能更有效地探索参数空间，但容易过早收敛。我们提出了一种混合优化方法，以结合两者的优点并克服其缺陷。其核心思想是：在每一代PSO迭代中，每个粒子在进行随机移动之前，先执行一次类似ICP的梯度下降步骤。这样一来，每个粒子的移动速度更快，且能像ICP那样更有效地最小化代价函数。所有粒子之间相互作用，从而更频繁地采样有潜力的区域；同时，单个粒子也有更大几率从较差的局部最优解中跳出来，这正是PSO的特性。因此，这种混合方法比单独使用这两种方法收敛更快，且更能避免陷入局部最优解。

图3顶部展示了一个示例。在第0代中，少数粒子围绕较差的初始状态（右下角）随机采样，其中最优的粒子（实心绿色叉号）在经历ICP处理后便被吸引到有潜力的区域（左上角）。通过PSO更新，整个粒子群逐渐被吸引到该区域，最终在第10代时找到正确解。

我们进一步扩展了PSO，使其能更有效地处理多个局部最优解。在每一代中，利用k均值聚类算法将粒子划分为多个簇，并以手部关节平均距离作为粒子间的距离度量。这种动态的粒子重新分配机制能更高效地利用粒子——因为更好的局部最优解通常会吸引更多粒子。

---

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

<div style="text-align: center;">Figure 3. (better viewed in color) Illustration of the ICP-PSO optimization processes using the example in Figure 2 for k = 1 (top) and k = 2 (bottom). See text for details.</div>

各簇内独立进行随机粒子更新，从而使这些簇能够围绕各自的局部最优解保持稳定。图3底部展示了这一过程。当k=2时，粒子会自动收敛到两个局部最优解处。这进一步缓解了粒子过早收敛的问题。

我们的优化方法被称为ICP-PSO，其流程如算法1所示。初始化时，每个粒子都是上一帧姿态的随机扰动。一旦获得基于手指检测的手部姿态数据，我们会按经验将1/4的粒子用于第二次初始化。在随机扰动过程中，每个维度都独立地从一维高斯分布中取样，该分布的均值为初始值，标准差则根据经验设定：角度（关节角和全局旋转）为5度，全局位置为15毫米。在ICP部分，我们采用了与[^16]中类似的策略：并非对所有26个参数执行完整的Levenberg-Marquardt（LM）类梯度下降，而是仅对随机选取的一个参数执行梯度下降，且该过程重复若干次（经验值设为m=10）。已有研究表明，这种方法比LM更稳健[^16]，我们的实验也观察到了类似结果。为简洁起见，此处不再详述PSO部分，相关细节可参考[^9]。

### 4. 用于手部初始化的手指检测

仅依赖上一帧数据进行跟踪是不稳定的。近期在人体跟踪领域的研究[^24] [^1] [^15] [^30] [^27]表明，每帧都能重新初始化对于实现稳健跟踪至关重要。在本工作中，我们提出了简单而有效的手指检测与手部初始化方法。这些方法源于直观的几何视角，无需像[^25]中那样借助机器学习技术。

手指检测。近期的身体部位检测方法

```pseudo
// Algorithm 1: Our ICP-PSO optimization method.
1: Input: initial hand pose(s) from the last frame (and finger detection)
2: generate random particles around the initial pose(s)
3: for each generation do
4:     for each particle do
5:         compute point-sphere correspondences
6:         for m times do
7:             gradient descent on a random parameter
8:         end for
9:     end for
10:    k-means clustering of all particles
11:    particle swarm update within each cluster
12: end for
13: Output: the best particle

```

s [^18] [^1] 利用三维测地距离在三维点云上寻找极值点。我们发现这种方法在手部识别中表现不佳，因为一旦存在手指遮挡或快速运动导致的深度噪声，底层的三维图就变得极不稳定。结果就是，指尖往往不在检测出的前几个极值点之中。

我们方法的核心思路是利用手指几何形状的简单性。我们不再基于三维点云，而是分别在二维XY平面和一维Z方向上检测极值点。这种方式要简单得多，也更稳定。为了将极值点分类为指尖或非指尖，我们会从每个极值点出发生成一个手指片段提议，再判断该片段的几何形状是否与手指相似。这种几何判断方式直观、快速且准确。

XY方向的手指与图像平面平行，是在深度图二值化后的掩码上检测到的。我们将第一个极值点初始化为掩码中心，利用距离变换计算它到所有像素的测地距离。随后，我们重复将距离图中距离最大的点作为新的极值点加入，并以增量方式更新距离图，这一过程与[^1]类似。从每个极值点出发，片段会在当前距离图上延伸，直到其长度或宽度超过完整手指的尺寸。需要注意的是，片段的长度和宽度是以二维掩码上的像素为单位计量的，之后会借助相机参数和像素深度将其转换为毫米以便对比。如果片段的长度、宽度和长宽比都与真实手指的特征足够接近，那么它就会被判定为手指$^{2}$。整个过程会重复六次以定位手腕以及最多五个指尖。

Z方向的手指指向相机，其指尖被检测为深度图上的局部极小值点。从每个指尖出发，片段会通过泛洪填充算法延伸，直到其深度超过顶端指骨的尺寸。在区分指尖与非指尖时，我们发现优质的Z方向手指片段应具备以下特征：

---

![Image](images/ec82a74fb021f629f0ec9a70b5d43cbc1e7e55b6b494bd668de3ade28dd4001b.jpg)

<div style="text-align: center;">Figure 4. (better viewed in color) Illustration of finger detection and hand pose initialization. For each example, left shows detected extreme points, finger segment proposals, and tip/non-tip classification results. Right shows the estimated hand pose. The top two examples are XY Fingers. Each segment visualizes its length and width lines that are used for geometric checking. The bottom two examples are Z Fingers. Each segment visualizes its two spheres and the sector in the ring for geometric checking.</div>

即位于以该极值点为圆心、可近似代表顶端指骨的小球内的像素数量最多。小球外的剩余像素应集中在较小的角度范围内。因此，我们会检查小球与更大（3倍半径）球体之间的环形区域，找出该环形区域内密度最高的扇区（覆盖60度范围），如果该扇区包含的环形区域像素数占比超过90%，则认定该片段为正确结果。利用一维积分直方图可以高效找到这个扇区，该直方图会统计环形区域内沿角度维度的像素数量。

我们的方法和结果如图4所示。我们并不严格区分XY方向和Z方向的手指：倾斜的手指通常能被两种方法检测到。我们会先检测XY方向的手指，一旦某个片段延伸后接触到已有片段，便会立即将其舍弃。我们的方法仅使用简单的操作（增量距离变换和泛洪填充），且在小区域内仅需执行几次（XY方向六次，Z方向通常约五次），因此速度极快。为提高效率，我们还会对$320 \times 240$深度图进行下采样，处理至$160 \times 120$分辨率。平均检测时间仅为2毫秒（XY和Z方向各1毫秒）。片段生长和几何判断中的所有参数都是根据经验设定的，以确保高精度。

在逆向运动学中，从末端执行器（如指尖）估算关节结构（如手部）是常用技术，但对于高度复杂的手部而言这种方法并不稳定。我们提出了一种更简单且更稳健的方法，该方法同样利用手指段。给定f个检测到的手指，我们假设检测到的手指是伸直的（每个手指有2个自由度），而未检测到的手指则是弯曲的（忽略其自由度）。因此，手部姿态参数被简化为$2f + 6$个自由度，记为$\Theta^{\prime}$。

每个指尖t可提供3个约束条件。通过主成分分析（PCA）可从每个手指段估算出其方向d，进而得到2个约束条件。我们将这些手指段从点云中移除，再利用剩余的3D点通过PCA估算手掌朝向l，这又提供了3个约束条件。因此我们共有$5f+3$个约束条件，足以求解$2f+6$个未知数，范围在$f=1$到5之间。

根据正向运动学，我们可以推导出每个指尖的位置$\hat{t}(\Theta')$、手指方向$\hat{d}(\Theta')$以及手掌朝向$\hat{l}(\Theta')$。我们找到能使这些量之间的差异最小化的最优手部姿态。

 $$ \begin{array}{l l l}{\Theta_{{o p t}}^{\prime}}&{=}&{\operatorname{a r g}_{\Theta^{\prime}}\operatorname*{m i n}\sum_{i=1}^{f}||t_{i}-\hat{t}_{i}(\Theta^{\prime})||_{2}}\\ {}&{+}&{\sum_{i=1}^{f}{a n g l e}(d_{i},\hat{d}_{i}(\Theta^{\prime}))+{a n g l e}(l,\hat{l}(\Theta^{\prime})).}\\ \end{array} $$

由于手指身份未知，我们需要枚举多种组合，对每种组合运行优化算法，最终选择依据公式(5)计算出的成本最低的解决方案。这个优化问题规模较小，求解时间不到1毫秒。

由于上述$\Theta'$中的简化处理，估算出的手部姿态通常较为粗糙。不过，它在手指部位的对齐效果通常较好，足以作为第3节中局部优化的初始值。对于手指伸展且可见的多种实用手势（如手语手势），我们的方法效果显著；具体结果可参见图4。对于手指弯曲且被遮挡的复杂手势，该方法的效果较差，不过这类情况对任何手指检测方法来说都是挑战。

### 5. 实验

文献中对手部追踪的评估仍较为初级，缺乏通用的数据集、评估协议和指标，这使得不同方法之间的比较十分困难。在本研究中，我们创建了一个带有人工标注真实值的极具挑战性的数据集$^{3}$。据我们所知，其复杂程度和规模在现有文献中是最全面的。我们采用了以往很少采用的严格评估流程和指标，希望借此推动未来研究的实验实践发展。

数据集与评估指标：我们邀请六名受试者做出各种快速手势，每人录制一段400帧的视频。我们为其中的2400帧手动标注了真实的手部姿态。为了适应不同的手型大小，我们为每位受试者指定了全局手部模型缩放比例（见表2），但未进行进一步的个性化调整。

在评估中，我们测量六个关节的平均误差E：五个指尖和手腕。这一指标较为严格，因为这些关节在语义上很重要，且其误差比其他内部关节更大。我们还测量成功率S，即满足$E < 10mm$条件的有效帧所占的百分比。

---

![Image](images/2b83a2a427e8fa45214e4d787cf64c24c1dbc89857960771336f46903f7908b7.jpg)

![Image](images/0ea7effe60288f6022aed75c66dd3112c9c426a4b888795ccc1e04cab10bad69.jpg)

<div style="text-align: center;">Figure 5. Average error and cost function values decrease as optimization methods run through generations.</div>

优化效果评估。我们将所提出的ICP-PSO方法与基线方法ICP和PSO进行比较，这两种方法均源自算法1的简化版本。ICP基线方法会去掉第10至11行代码，相当于多次独立运行；PSO基线方法则去掉第4至9行代码并将k设为1。我们分别为PSO、ICP和ICP-PSO设置128、40和32个粒子，以确保它们每一代的运行时间大致相同。所有方法均运行50代，且通常能够收敛。

直接比较视频跟踪结果并不恰当。由于后续帧的结果高度依赖于先前帧的结果，因此性能无法完全归因于方法本身。相反，我们会在相同的初始化条件下对单帧图像进行比较。对于每一帧，我们随机扰动真实姿态以生成多种初始姿态，随后将这些初始姿态划分为三个难度等级。每个等级在每一帧中包含10个初始姿态，其平均关节误差范围分别为[15毫米, 25毫米]、[25毫米, 35毫米]和[35毫米, 45毫米]。

为了进一步巩固实验结果，我们还利用标注好的真实手部姿态为每一帧合成深度图。我们使用图1(b)中的多边形模型而非球形模型，以使深度信息更贴合实际。表1报告了使用真实深度和合成深度时各难度等级的平均精度。结果清晰显示，ICP-PSO在所有难度等级上的表现都更优；使用多个聚类（$k > 1$）的效果优于使用单个聚类$k = 1$，尤其是在初始误差较大且局部最优问题严重时。这些结论在真实数据和合成数据结果中均一致，不过真实数据的结果略差一些。在后续实验中我们固定$k = 4$，因为使用32个粒子时它的表现最佳。

接着，我们研究了代数和粒子数量的影响，实验采用[15毫米, 25毫米]的难度等级和真实深度数据。在其他情况下结论也保持一致。图5显示，我们的方法能更快降低代价函数并提升精度。图6表明，增加粒子数量可以提高精度，但即便如此ICP和PSO的表现仍不如我们的方法。

跟踪与初始化效果评估

![Image](images/04efb13e25cbab4d05428837810adb5fbcd07568a7f64fea4e85399dc2ab4454.jpg)

<div style="text-align: center;">Figure 6. Average errors using different number of particles of the three methods.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Subject</td><td style='text-align: center; word-wrap: break-word;'>1</td><td style='text-align: center; word-wrap: break-word;'>2</td><td style='text-align: center; word-wrap: break-word;'>3</td><td style='text-align: center; word-wrap: break-word;'>4</td><td style='text-align: center; word-wrap: break-word;'>5</td><td style='text-align: center; word-wrap: break-word;'>6</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Scale</td><td style='text-align: center; word-wrap: break-word;'>1.1</td><td style='text-align: center; word-wrap: break-word;'>1.0</td><td style='text-align: center; word-wrap: break-word;'>0.9</td><td style='text-align: center; word-wrap: break-word;'>0.95</td><td style='text-align: center; word-wrap: break-word;'>1.1</td><td style='text-align: center; word-wrap: break-word;'>1.0</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>FORTH</td><td style='text-align: center; word-wrap: break-word;'>35.4</td><td style='text-align: center; word-wrap: break-word;'>19.8</td><td style='text-align: center; word-wrap: break-word;'>27.3</td><td style='text-align: center; word-wrap: break-word;'>26.3</td><td style='text-align: center; word-wrap: break-word;'>16.6</td><td style='text-align: center; word-wrap: break-word;'>46.2</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>FORTH $^{{*}}$</td><td style='text-align: center; word-wrap: break-word;'>19.8</td><td style='text-align: center; word-wrap: break-word;'>15.8</td><td style='text-align: center; word-wrap: break-word;'>19.8</td><td style='text-align: center; word-wrap: break-word;'>15.4</td><td style='text-align: center; word-wrap: break-word;'>16.0</td><td style='text-align: center; word-wrap: break-word;'>21.0</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>PSO</td><td style='text-align: center; word-wrap: break-word;'>26.7</td><td style='text-align: center; word-wrap: break-word;'>14.8</td><td style='text-align: center; word-wrap: break-word;'>44.7</td><td style='text-align: center; word-wrap: break-word;'>18.1</td><td style='text-align: center; word-wrap: break-word;'>15.0</td><td style='text-align: center; word-wrap: break-word;'>24.3</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>PSO $^{{*}}$</td><td style='text-align: center; word-wrap: break-word;'>18.6</td><td style='text-align: center; word-wrap: break-word;'>12.1</td><td style='text-align: center; word-wrap: break-word;'>21.2</td><td style='text-align: center; word-wrap: break-word;'>14.4</td><td style='text-align: center; word-wrap: break-word;'>13.7</td><td style='text-align: center; word-wrap: break-word;'>22.4</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>ICP</td><td style='text-align: center; word-wrap: break-word;'>27.3</td><td style='text-align: center; word-wrap: break-word;'>20.7</td><td style='text-align: center; word-wrap: break-word;'>34.4</td><td style='text-align: center; word-wrap: break-word;'>25.1</td><td style='text-align: center; word-wrap: break-word;'>17.00</td><td style='text-align: center; word-wrap: break-word;'>32.8</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>ICP $^{{*}}$</td><td style='text-align: center; word-wrap: break-word;'>17.9</td><td style='text-align: center; word-wrap: break-word;'>15.9</td><td style='text-align: center; word-wrap: break-word;'>19.2</td><td style='text-align: center; word-wrap: break-word;'>15.6</td><td style='text-align: center; word-wrap: break-word;'>10.8</td><td style='text-align: center; word-wrap: break-word;'>25.9</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>ICP-PSO</td><td style='text-align: center; word-wrap: break-word;'>9.3</td><td style='text-align: center; word-wrap: break-word;'>24.1</td><td style='text-align: center; word-wrap: break-word;'>14.4</td><td style='text-align: center; word-wrap: break-word;'>13.4</td><td style='text-align: center; word-wrap: break-word;'>11.0</td><td style='text-align: center; word-wrap: break-word;'>20.0</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>ICP-PSO $^{{*}}$</td><td style='text-align: center; word-wrap: break-word;'>8.0</td><td style='text-align: center; word-wrap: break-word;'>7.4</td><td style='text-align: center; word-wrap: break-word;'>10.8</td><td style='text-align: center; word-wrap: break-word;'>10.9</td><td style='text-align: center; word-wrap: break-word;'>7.3</td><td style='text-align: center; word-wrap: break-word;'>11.7</td></tr></table>

<div style="text-align: center;">Table 2. Model scales and average joint tracking errors (in mm) of 6 subjects. Methods with  $*$ use initialization.</div>

在跟踪过程中，我们采用真实姿态来初始化第一帧。我们还实现了[^9]（FORTH）$^{4}$中的最先进方法。总共比较了四种方法，包括采用基于手指的手部初始化方法（标记为*）和不采用该方法的情况。表2报告了所有受试者各帧的平均关节误差。我们的方法在不进行初始化时就已经能达到较好的精度；使用初始化后，所有方法的精度均有显著提升。图7展示了第一位受试者所有帧的误差情况：未使用初始化时的较大误差在使用初始化后大多得以减少。所有方法的示例结果如图8所示。

我们尚未发现任何报道过在具有挑战性的真实数据上进行的手部跟踪精度的研究。我们的精度约为10毫米，这一结果与在合成数据上报道的精度（约5毫米）[^9] [^13]相比更具优势。

时间性能方面，对于跟踪任务，我们分别为PSO、ICP和ICP-PSO设置128、40和32个粒子。所有方法均运行20代，速度相近。在英特尔i7 3.4GHz CPU上，运行时间为：预处理2毫秒、手指检测2毫秒、手部初始化1毫秒，优化阶段（四线程）耗时35毫秒。这相当于每秒25帧（FPS）。需要注意的是，我们可以通过减少粒子数量（见图6）和代数（见图5），以牺牲少量精度为代价来换取更高的帧率。

我们在FORTH实现中使用了64个粒子和40代演化，在nVidia GeForce 580 GPU上能达到14帧/秒的帧率。更多的演化代数并不会提升精度。

---

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>$E_{init}$</td><td colspan="4">15-25 mm</td><td colspan="4">25-35 mm</td><td colspan="4">35-45 mm</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Metric</td><td style='text-align: center; word-wrap: break-word;'>$E_{real}$</td><td style='text-align: center; word-wrap: break-word;'>$E_{syn}$</td><td style='text-align: center; word-wrap: break-word;'>$S_{real}$</td><td style='text-align: center; word-wrap: break-word;'>$S_{syn}$</td><td style='text-align: center; word-wrap: break-word;'>$E_{real}$</td><td style='text-align: center; word-wrap: break-word;'>$E_{syn}$</td><td style='text-align: center; word-wrap: break-word;'>$S_{real}$</td><td style='text-align: center; word-wrap: break-word;'>$S_{syn}$</td><td style='text-align: center; word-wrap: break-word;'>$E_{real}$</td><td style='text-align: center; word-wrap: break-word;'>$E_{syn}$</td><td style='text-align: center; word-wrap: break-word;'>$S_{real}$</td><td style='text-align: center; word-wrap: break-word;'>$S_{syn}$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>PSO</td><td style='text-align: center; word-wrap: break-word;'>9.80</td><td style='text-align: center; word-wrap: break-word;'>7.79</td><td style='text-align: center; word-wrap: break-word;'>61.4%</td><td style='text-align: center; word-wrap: break-word;'>83.4%</td><td style='text-align: center; word-wrap: break-word;'>12.27</td><td style='text-align: center; word-wrap: break-word;'>10.16</td><td style='text-align: center; word-wrap: break-word;'>44.2%</td><td style='text-align: center; word-wrap: break-word;'>67.5%</td><td style='text-align: center; word-wrap: break-word;'>16.25</td><td style='text-align: center; word-wrap: break-word;'>14.25</td><td style='text-align: center; word-wrap: break-word;'>31.3%</td><td style='text-align: center; word-wrap: break-word;'>50.0%</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>ICP</td><td style='text-align: center; word-wrap: break-word;'>10.52</td><td style='text-align: center; word-wrap: break-word;'>7.71</td><td style='text-align: center; word-wrap: break-word;'>52.5%</td><td style='text-align: center; word-wrap: break-word;'>76.9%</td><td style='text-align: center; word-wrap: break-word;'>14.50</td><td style='text-align: center; word-wrap: break-word;'>11.75</td><td style='text-align: center; word-wrap: break-word;'>27.5%</td><td style='text-align: center; word-wrap: break-word;'>48.8%</td><td style='text-align: center; word-wrap: break-word;'>19.80</td><td style='text-align: center; word-wrap: break-word;'>17.71</td><td style='text-align: center; word-wrap: break-word;'>13.8%</td><td style='text-align: center; word-wrap: break-word;'>27.3%</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>ICP-PSO, k = 1</td><td style='text-align: center; word-wrap: break-word;'>5.98</td><td style='text-align: center; word-wrap: break-word;'>3.37</td><td style='text-align: center; word-wrap: break-word;'>87.7%</td><td style='text-align: center; word-wrap: break-word;'>95.7%</td><td style='text-align: center; word-wrap: break-word;'>8.93</td><td style='text-align: center; word-wrap: break-word;'>5.79</td><td style='text-align: center; word-wrap: break-word;'>72.2%</td><td style='text-align: center; word-wrap: break-word;'>85.4%</td><td style='text-align: center; word-wrap: break-word;'>13.95</td><td style='text-align: center; word-wrap: break-word;'>10.81</td><td style='text-align: center; word-wrap: break-word;'>54.2%</td><td style='text-align: center; word-wrap: break-word;'>68.4%</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>ICP-PSO, k = 2</td><td style='text-align: center; word-wrap: break-word;'>5.65</td><td style='text-align: center; word-wrap: break-word;'>3.07</td><td style='text-align: center; word-wrap: break-word;'>89.7%</td><td style='text-align: center; word-wrap: break-word;'>96.6%</td><td style='text-align: center; word-wrap: break-word;'>8.39</td><td style='text-align: center; word-wrap: break-word;'>5.00</td><td style='text-align: center; word-wrap: break-word;'>74.4%</td><td style='text-align: center; word-wrap: break-word;'>88.6%</td><td style='text-align: center; word-wrap: break-word;'>12.75</td><td style='text-align: center; word-wrap: break-word;'>9.23</td><td style='text-align: center; word-wrap: break-word;'>58.0%</td><td style='text-align: center; word-wrap: break-word;'>73.6%</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>ICP-PSO, k = 4</td><td style='text-align: center; word-wrap: break-word;'>5.53</td><td style='text-align: center; word-wrap: break-word;'>2.91</td><td style='text-align: center; word-wrap: break-word;'>90.8%</td><td style='text-align: center; word-wrap: break-word;'>97.9%</td><td style='text-align: center; word-wrap: break-word;'>7.93</td><td style='text-align: center; word-wrap: break-word;'>4.53</td><td style='text-align: center; word-wrap: break-word;'>76.8%</td><td style='text-align: center; word-wrap: break-word;'>90.2%</td><td style='text-align: center; word-wrap: break-word;'>12.28</td><td style='text-align: center; word-wrap: break-word;'>8.99</td><td style='text-align: center; word-wrap: break-word;'>60.4%</td><td style='text-align: center; word-wrap: break-word;'>74.2%</td></tr></table>

<div style="text-align: center;">Table 1. Averaged performance metrics of three methods on three difficulty levels, using real and synthetic depth maps. Note that k is the k-means parameter in ICP-PSO.</div>

![Image](images/cc421cbde35ec518906fd79c90ceae5be08737165658fc4e99c6195b668c9512.jpg)

![Image](images/594f571c8b050d6358cff014c7edeae4594194df4a9d7d0e2167f0cd20918cc9.jpg)

![Image](images/6c2e776b16a4358e34bfcc9f584213f39b060057fb7eb204102fe981b9095f10.jpg)

![Image](images/272992c3e1c5f4e47c53940cffac170460d25045c7023822349bf969f33408fd.jpg)

<div style="text-align: center;">Figure 7. Average joint error in all frames of first subject. Each plot shows the results of one method using  $(*)$ and not using initialization. The horizontal dotted lines are mean errors of each method over all frames.</div>

### 6. 结论

我们提出了一种全新的最先进的手部追踪系统，该系统是简化模型、快速代价函数以及高效的优化与初始化方法的协同产物。它在桌面设备上具备实时且稳健的性能，因此可广泛应用于用户界面、手语识别以及虚拟现实控制等诸多领域。

## 参考文献

[^1]: A. Baak, M. Muller, G. Bharaj, H. P. Seidel, and C. Theobalt. A data-driven approach for real-time full body pose reconstruction from a depth camera. In ICCV, 2011. 1,4

[^2]: A.Erol, G.Bebis, M.Nicolescu, R.D.Boyle, and X.Twombly. Vision-based hand pose estimation: A review. CVIU, 2007. 1

[^3]: V. Athitsos and S. Sclaroff. Estimating 3d hand pose from a cluttered image. In CVPR, 2003. 1

[^4]: B. Stenger, A. Thayananthan, P.H.S. Torr, and R. Cipolla. Model-based hand tracking using a hierarchical bayesian filter. PAMI, 2006. 1

[^5]: C.Keskin, F.Kirac, Y.E.Kara, and L.Akarun. Hand pose estimation and hand shape classification using multi-layered randomized decision forests. In ECCV, 2012. 1

[^6]: D.Tang, T.Y, and T.K.Kim. Real-time articulated hand pose estimation using semi-supervised transductive regression forests. In ICCV, 2013. 1

[^7]: H. Hamer, K. Schindler, E.K. Meier, and L. V. Gool. Tracking a hand manipulating an object. In ICCV, 2009. 1

[^8]: I. Oikonomidis, N. Kyriazis, and A. A. Argyros. Markerless and efficient 26-dof hand pose recovery. In ACCV, 2010. 1, 2, 3

[^9]: I. Oikonomidis, N. Kyriazis, and A. A. Argyros. Efficient model-based 3d tracking of hand articulations using kinect. In BMVC, 2011. 1, 2, 3, 4, 6

[^10]: J.M.Rehg and T. Kanade. Visual tracking of high dof articulated structures: an application to human hand tracking. In ECCV, 1994. 1

[^11]: J. Kennedy and R. Eberhart. Particle swarm optimization. In International Conference on Neural Networks, 1995. 3

[^12]: D. Kim, O. Hilliges, S. Izadi, A. Butler, J. Chen, I. Oikonomidis, and P. Olivier. Digits: Freehand 3d interactions anywhere using a wristworn gloveless sensor. In UIST, 2012. 1

[^13]: L. Ballan, A. Taneja, J. Gall, L. V. Gool, and M. Pollefeys. Motion capture of hands in action using discriminative salient points. In ECCV, 2012. 1, 6

[^14]: M.L.Gorce, D.J.Fleet, and N.Paragios. Model-based 3d hand pose estimation from monocular video. PAMI, 2011. 1

[^15]: M. Ye, X. Wang, R. Yang, L. Ren, and M. Pollefeys. Accurate 3d pose estimation from a single depth image. In ICCV, 2011. 1, 4

[^16]: S. Pellegrini, K. Schindler, and D. Nardi. A generalisation of the icp algorithm for articulated bodies. In BMVC, 2008. 3, 4

[^17]: P.J.Besl and N.MacKay. A method for registration of 3d shapes. PAMI, 1992. 3

[^18]: C. Plagemann, V. Ganapathi, D. Koller, and S. Thrun. Real-time identification and localization of body parts from depth images. In ICRA, 2010. 1,4

[^19]: S. Rusinkiewicz and M. Levoy. Efficient variants of the icp algorithm. In 3-D Digital Imaging and Modeling, 2001. 3

## [^20]: R.Wang, K.Zhou, J.Snyder, X.Liu, H.Bao, Q.Peng, and B.Guo. Variational sphere set approximation for solid objects. Visual Computer, 2009. 2

---

![Image](images/a0e2f50ca44666f5543f3db59b99b4382f6b89f54badcb5097dbda66bdb6b71a.jpg)

<div style="text-align: center;">Figure 8. (better viewed in color) Example tracking results of the first subject. Those with red frames contain large errors. Color coded correspondence map of each result is also shown for better visualization.</div>

[^21]: R.Y.Wang and J.Popovi. Real-time hand-tracking with a color glove. In SIGGRAPH, 2009. 1, 2

[^22]: R.Y.Wang, S.Paris, and J.Popovic. 6d hands: Markerless hand tracking for computer aided design. In UIST, 2011. 1

[^23]: E. S. Serra. Kinematic model of the hand using computer vision, 2011. 2

[^24]: J. Shotton, R. Girshick, A. Fitzgibbon, T. Sharp, M. Cook, M. Finochio, R. Moore, P. Kohli, A. Criminisi, A. Kipman, and A. Blake. Efficient human pose estimation from single depth images. PAMI, 2013. 1, 4

[^25]: S. Sridhar, A. Oulasvirta, and C. Theobalt. Interactive markerless articulated hand motion tracking using rgb and depth data. In ICCV, 2013. 1,4

[^26]: J. Taylor, R. Stebbing, V. Ramakrishna, C. Keskin, J. Shotton, S. Izadi, A. Fitzgibbon, and A. Hertzmann. User-specific hand modeling from monocular depth sequences. In CVPR, 2014. 2

[^27]: V.Ganapathi, C.Plagemann, D.Koller, and S.Thrun. Real-time human pose tracking from range data. In ECCV, 2012. 1, 2, 3, 4

[^28]: Y. Wu, J. Y. Lin, and T. S. Huang. Capturing natural hand articulation. In ICCV, 2001. 1

[^29]: C. Xu and L. Cheng. Efficient hand pose estimation from a single depth image. In ICCV, 2013. 1

[^30]: X. Wei, P. Zhang, and J. Chai. Accurate realtime full-body motion capture using a single depth camera. In Siggraph Asia, 2012. 1, 2, 4

[^31]: Z. Mo and U. Neumann. Real-time hand pose recognition using low-resolution depth images. In CVPR, 2006. 1
