
# 利用多视角自举法在单张图像中进行手部关键点检测

托马斯·西蒙 韩比勒·朱 伊恩·马修斯 亚瑟尔·谢赫

卡内基梅隆大学

{tsimon,hanbyulj,iainm,yaser}@cs.cmu.edu

![Image](images/d4ccfdb7f41fa0ad70ce2cb0763719833c46bc7fe96f6b7978c6506c947d2ca1.jpg)

(a) 在YouTube视频和网络摄像头视频中实现实时2D手部检测

![Image](images/9654a1aa6bbb361e41baeede07239b74c44105288be693d03f462cd78d452495.jpg)

(b) 通过三角测量多个2D检测结果来实现3D手部动作捕捉

<div style="text-align: center;">Figure 1: Multiview bootstrapping enables us to produce a method to detect hand keypoints in (a) realtime on RGB images, and (b) can be triangulated to produce 3D markerless motion capture of hands.</div>

## 摘要

我们提出了一种利用多摄像头系统来训练针对易遮挡关键点（如手部关节）的精细检测器的方法。我们将这一流程称为多视角自举法：首先，利用初始关键点检测器在手的多个视角下生成含噪声的标签；随后，利用多视角几何原理对这些含噪声的检测结果进行3D三角测量，或将它们标记为异常值。最后，将重新投影后的三角测量结果作为新的标注训练数据来优化检测器。我们重复这一过程，在每次迭代中生成更多标注数据。我们从理论上推导出了为实现给定检测器的目标真阳性率和假阳性率所需的最少视角数量。该方法被用于训练单张图像中的手部关键点检测器。最终得到的关键点检测器能在RGB图像上实时运行，其精度可与使用深度传感器的方法相媲美。通过单视角检测器在多视角下的三角测量，可实现带有复杂物体交互的3D无标记手部动作捕捉。

### 1. 引言

虽然已有许多基于图像的人脸和人体关键点定位方法，但目前尚无能在自然场景下的RGB图像中工作的无标记手部关键点检测器。考虑到手部在我们日常活动中扮演的重要角色——它是我们与世界互动的方式：我们使用工具、演奏乐器、触摸物体以及做手势，这一点着实令人惊讶。一种能在RGB图像中定位手部关节的方法（无需依赖深度信息），将能够实现对现有最大视觉数据源（如YouTube和Netflix）中的人类动作的新分析，同时也能在人机交互和机器人领域催生新应用。我们提出的方法能够实现单视角视频中的实时2D手部追踪以及3D手部动作捕捉，如图1所示。

与面部和身体不同，目前并不存在针对手部的大规模标注关键点数据集。与面部或身体相比，生成此类数据集面临巨大挑战。由于严重的遮挡现象，即使是人工标注关键点也难以做到准确无误：对于被遮挡的关键点，标注位置充其量只是有根据的猜测。图2展示了一些手动标注的图像示例，这些图像中存在因关节活动导致的自遮挡、因视角导致的自遮挡，以及被抓握物体造成的遮挡。在每种情况下，标注者都必须估算多个关键点的位置，这不仅增加了标注时间和成本，还会降低准确性。

在本文中，我们提出了一种利用多摄像头设置来提升给定关键点检测器性能的方法。我们将这种方法称为多视角自举法，其基于以下观察结果：即使某张手部图像存在严重遮挡，往往也存在未被遮挡的视角。多视角自举法将这一见解系统化，从而生成功能更强大的手部检测器，我们的实验证明该检测器具备超出采集场景的泛化能力。具体而言，它能使弱检测器……

---

![Image](images/a26fb1f05399b345a32a36067898cce2859f457deee5b981add580f88b193204.jpg)

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

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

![Image](images/604c7ce6fabfc9401eb4af1b438a385892240e0f285a3ca5ce0116805870e6d3.jpg)

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

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

<div style="text-align: center;">Figure 2: Hand annotation is difficult in single images because joints are often occluded due to (a) articulations of other parts of the hand, (b) a particular viewing angle, or (c) objects that the hand is grasping.</div>

该模型在小型标注数据集上训练，用于定位良好视角下的关键点子集，并利用稳健的3D三角测量技术来过滤掉错误的检测结果。对于存在严重遮挡的图像，则通过重新投影三角测量的3D手部关节坐标来进行标注。将这些新生成的标注纳入训练集后，我们便能迭代式地优化检测器，每次迭代都能获得更精确的检测结果。这种方法利用多视角约束作为外部监督信号，生成几何一致的手部关键点标注。借此，我们就能为那些因遮挡而难以或无法标注的图像进行标注。实验表明，基于多视角自举法得到的RGB图像手部关键点检测器，其性能可与RGB-D手部关键点检测器相媲美。我们还进一步证明：将这种单视角检测器应用于多摄像头场景时，能够实现前所未有的3D手部重建，包括复杂的物体操作、音乐表演以及多人互动等场景。

### 2. 相关工作

早期的手部姿态估计研究主要基于RGB数据，Rehg和Kanade [^15] 探索了基于视觉的人机交互（HCI）应用。大多数方法都较为脆弱，它们依赖于带有强先验条件的复杂3D模型的拟合，例如物理规律或动力学约束 [^10]、多种假设 [^21] 或分析合成法 [^5]。这类方法在受控环境下、针对有限姿势和简单动作时，能够利用轮廓、边缘、肤色和阴影等线索取得不错的效果。Wang和Popović [^28] 的方法放宽了部分限制，但需要使用特制的彩色手套。多视角RGB方法通常也基于复杂的网格模型拟合（如 [^3] [^20]），虽然精度很高，但同样需要在高度可控的条件下才能发挥作用。

随着商用深度传感器的问世，基于单视角深度的手部姿态估计成为研究重点，由此诞生了大量基于深度的方法。这些方法大致可分为生成式方法 [^14]、判别式方法 [^24] [^25] [^9] [^30] [^22] [^27] 以及混合式方法 [^20] [^16] [^18] [^26] [^31]。最近，Sharp等人 [^16] 提出的混合式方法在广泛场景下展现了实用的性能，但诸如手与手之间的互动、手与物体的互动等难题仍难以解决。基于深度的手部姿态估计中的判别式和混合式方法严重依赖合成数据 [^23]。Oberwerger等人 [^13] 利用反馈循环来生成用于手部姿态估计的合成训练数据，其理念与我们类似，但他们侧重于生成深度图像。[^12] 中提出的半自动数据标注方案在动机上也与我们相似，不过我们的方法利用多视角几何和关键点检测来提供自动化监督。

判别性方法，尤其是那些依赖深度架构的方法，需要大量的标注训练集。对于深度图而言，这类数据集相对容易合成，但对于RGB图像来说却面临巨大挑战，因为渲染过程要复杂得多，需要逼真的外观和光照效果。多视图自举法是一种利用弱初始检测器来生成大型标注数据集的方法。这进而使得为“自然场景”中的RGB图像创建首个实时手部关键点检测器成为可能。

### 3. 多视图自举训练

关键点检测器$d(\cdot)$会将裁剪后的输入图像块$\mathbf{I} \in \mathbb{R}^{w \times h \times 3}$映射到P个关键点位置$\mathbf{x}_p \in \mathbb{R}^2$，每个位置都对应一个相关的检测置信度$c_p$：

 $$ d(\mathbf{I})\mapsto\left\{\left(\mathbf{x}_{p},c_{p}\right)\mathrm{f o r}\;p\in[1\ldots P]\right\}. $$

每个点p对应不同的地标（例如拇指尖、食指尖，见图4a），我们假设在图像I中仅能看到该物体的单个实例。该检测器在带有对应关键点标注的图像上进行训练，$\left(\mathbf{I}^f, \{\mathbf{y}_p^f\}\right)$，其中f表示特定的图像帧，集合$\{\mathbf{y}_p^f \in \mathbb{R}^2\}$包含了该图像的所有标注关键点$\mathbf{I}^f$。初始训练集$\mathcal{T}_0$包含$N_0$个训练对，

 $$ \mathcal{T}_{0}:=\left\{\left(\mathbf{I}^{f},\{\mathbf{y}_{p}^{f}\}\right)\mathrm{f o r}f\in[1\ldots N_{0}]\right\}, $$

利用这些训练对通过随机梯度下降等方法来训练初始检测器$d_{0}$。

 $$ d_{0}\leftarrow train(\mathcal{T}_{0}). $$

给定初始关键点检测器$d_{0}$以及一组未标注的多视图图像数据集，我们的目标是利用该检测器生成一组标注图像$\mathcal{T}_{1}$，进而利用所有可用数据来训练出性能更优的检测器$d_{1}$：

 $$ d_{1}\leftarrow\mathrm{t r a i n}(\mathcal{T}_{0}\cup\mathcal{T}_{1}). $$

为了改进检测器 $d_{0}$，我们需要引入一个外部的监督来源，以确保 $T_{1}$ 包含的信息并非

---

![Image](images/d3a66f24b80a3d8d4cb6cb8fcc948357d82f6987657309d38044d04d9e0f23c4.jpg)

<div style="text-align: center;">(b) 3D Keypoints (c) Failed Detection (d) Annotated View (e) Improved Detector</div>

<div style="text-align: center;">Figure 3: Multiview Bootstrapping. (a) A multiview system provides views of the hand where keypoint detection is easy, which are used to triangulate (b) the 3D position of the keypoints. Difficult views with (c) failed detections can be (d) annotated using the reprojected 3D keypoints, and used to retrain (e) an improved detector that now works on difficult views.</div>

已存在于 $\mathcal{T}_0$ 中。我们提出使用多视图几何作为该来源。关键在于，检测在某些视图中比在另一些视图中更容易：如果一个点在至少两个视图中被成功定位，则三角化得到的 3D 位置可以重投影到其他图像上，从而为检测失败的视图提供新的 2D 标注。该过程如 Fig. 3 所示，其中检测器在较容易的视图上成功（Fig. 3a），但在更具挑战性的视图上失败（Fig. 3c）。然而，通过对正确检测到的视点进行三角测量，我们可以专门为检测器当前正在失败的那些视图生成训练数据。

多视图自举法的整体流程在算法1中有详细描述，其中我们用$\{I_v^f : v \in [1 \ldots V]\}, f \in, [1 \ldots F]\}$表示输入的未标注多视图图像帧集合，v遍历V个相机视图，f遍历F个不同的帧（即时间点，因此一帧代表V张图像）。该过程分为三个主要部分，将在以下小节中详细说明：（1）对于每一帧，算法首先独立地在每个相机视图上运行当前检测器（图3a、c），并对检测到的点进行稳健的三角测量（图3b）；（2）随后根据得分对图像帧集合进行排序，仅选取三角测量正确的样本；（3）利用排名前N的图像帧，通过将三角测量正确的点重新投影到所有视图上来训练新检测器（图3d），这样为每个选中的图像帧大约能生成V张训练图像。之后便可利用新训练出的检测器重复整个过程（图3e）。

#### 3.1. 从弱检测结果中三角测量关键点

给定某个特定帧 f 中物体的 V 个视图，我们在每张图像 $d_i$ 上运行当前的检测器 $\mathcal{T}_i$（该检测器在集合 $\mathbf{I}_v^f$ 上训练），从而得到一组包含 2D 位置候选点的集合 $\mathcal{D}$：

 $$ \mathcal{D}\leftarrow\{d_{i}(\mathbf{I}_{v}^{f})\mathrm{f o r}v\in[1\ldots V]\}. $$

对于每个关键点 p，我们有 V 次检测结果 $(\mathbf{x}_p^v, c_p^v)$，其中 $\mathbf{x}_p^v$ 表示视图 v 中点 p 的检测位置，而 $c_p^v \in [0,1]$ 则是置信度度量值（为简洁起见，此处省略了帧索引）。为了将每个点 p 稳健地三角测量为

```pseudo
// Algorithm 1: Multiview Bootstrapping

```

输入：

- 未标注图像：$\{\mathbf{I}_v^f \text{ for } v \in \text{views}, f \in \text{frames}\}$

- 关键点检测器：$d_0(\mathbf{I}) \mapsto \{(\mathbf{x}_p, c_p) \text{ for } p \in \text{points}\}$

- 已标注的训练数据：$\mathcal{T}_0$

对于迭代次数 i 从 0 到 K：

1. 根据弱检测结果对关键点进行三角测量

对于每一帧 f：
(a) 在所有视图 v 上运行检测器 $d_i(\mathbf{I}_v^f)$（公式 (5)）
(b) 稳健地对关键点进行三角测量（公式 (6)）

2. 对三角测量得到的帧进行评分并排序（公式 (7)）

3. 利用 N 个最佳重投影结果重新训练模型（公式 (8)）

   $d_{i+1} \leftarrow \text{train}(\mathcal{T}_0 \cup \mathcal{T}_{i+1})$
输出：改进后的检测器 $d_K(\cdot)$ 以及训练集 $\mathcal{T}_K$

在确定三维位置时，我们对[^6]中置信度高于检测阈值$\mathcal{D}$的点使用RANSAC算法$\lambda$。此外，我们还依据$\sigma=4$像素的投影误差来判断RANSAC的内点是否合格。利用针对点p的这些内点视图，我们最小化投影误差[^1]，从而得出最终的三维三角测量位置。

 $$ \mathbf{X}_{p}^{f}=\arg\min_{\mathbf{X}}\sum_{v\in\mathcal{I}_{p}^{f}}||\mathcal{P}_{v}(\mathbf{X})-\mathbf{x}_{p}^{v}||_{2}^{2}, $$

其中 $\mathcal{I}_p^f$ 表示内点集合，$\mathbf{X}_p^f \in \mathbb{R}^3$ 表示帧 f 中关键点 p 的 3D 三角测量位置，而 $\mathcal{P}_v(\mathbf{X}) \in \mathbb{R}^2$ 则表示将 3D 点 $\mathbf{X}$ 投影到视图 v 中的结果。在相机已校准的情况下，该 3D 点可以被重投影到任意视图中（例如那些检测器未能成功识别的视图），进而作为新的训练标签。

为了专门提升对手部图像的鲁棒性，我们会同时重建整个手指。我们一次对每只手指的所有地标点（共 4 个点）进行三角测量，并利用这 4 个点的平均重投影误差来确定 RANSAC 内点。这种处理方式更具鲁棒性，因为手指检测中的误差具有相关性：例如，如果指关节的定位出现偏差，那么运动链中与之相关的关节——指间关节和指尖——也很可能定位错误。这虽然减少了可三角测量的关键点数量

---

（因为同一视图中必须整个手指都定位正确才行），但却进一步降低了误检数量，这一点更为重要，这样才能避免用错误的标签来训练模型。

#### 3.2. 对三角测量得到的帧进行评分与排序

至关重要的是，我们不能将标注有误的帧纳入训练数据，尤其是在反复迭代的过程中；否则后续迭代会在各视图中以几何上一致的方式出错——而这种错误无法通过多视图约束来检测出来。因此，我们谨慎地选取少量可靠的三角测量结果。

我们的输入是视频，连续帧之间具有高度相关性。我们并非采用均匀的时间采样方式，而是为每个包含 W 帧的窗口挑选“最佳”帧（例如 $W=15$ 或 $W=30$），所谓“最佳”帧是指其内点的检测置信度之和最大的那帧，即

 $$ \mathrm{score}(\{\mathbf{X}_{p}^{f}\})=\sum_{p\in[1\ldots P]}\sum_{v\in\mathcal{I}_{p}^{f}}c_{p}^{v}. $$

我们按照分数降序对所有剩余的帧进行排序，从而得到有序的帧序列，$[s_1, s_2, \ldots s_{F'}$]，其中 $F'$ 表示被二次采样的帧数，$s_i$ 则表示有序帧的索引。

我们会手动检查用作训练数据的帧中是否存在明显错误，随后再训练新的检测器。虽然对训练集进行视觉检查看似繁琐，但根据我们的经验，这其实是训练过程中耗时最少的一环。通常我们只需一两分钟就能检查完前100帧。借助众包方式来完成此类验证步骤以实现连续标签生成，是一个值得探索的未来方向，因为验证工作比标注要简单得多。实际上，我们发现通过运用多种启发式规则自动剔除有问题的三角测量结果后，这种人工操作几乎可以完全省去：这些规则包括：(1) 内点数量的平均值；(2) 检测置信度的平均值；(3) 两帧视频之间各点的速度差异与中值速度的比较；(4) 关节长度的人体学限制 $^{1}$；以及(5) 通过相机光线与身体关节的交点来判断是否完全遮挡。此外，任何点要被视为有效点，至少需要包含3个内点。

#### 3.3. 利用N最佳投影结果重新训练

我们依据该顺序选取N最佳帧，为下一次迭代定义一组新的训练用图像-关键点配对，用于训练 $i+1$ 检测器。

 $$ \begin{aligned}\mathcal{T}_{i+1}=\left\{\left(\mathbf{I}_{v}^{s_{n}},\{\mathcal{P}_{v}(\mathbf{X}_{p}^{s_{n}}):v\in[1\cdots V],p\in[1\cdots P]\}\right)\right.\\\left.\quad for n\in[1\cdots N]\right\},\end{aligned} $$

![Image](images/ae8734b3d4a01f2caf0ae2db98fa3a1148d6c40cbd22caf8df2fa3a328dc6c61.jpg)

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

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

<div style="text-align: center;">Figure 4: (a) Input image with 21 detected keypoints. (b) Selected confidence maps produced by our detector, visualized as a "jet" colormap overlaid on the input.</div>

其中 $\mathcal{P}_v(\mathbf{X}_p^{s_n})$ 表示帧索引为 $s_n$ 的帧中点p在视图v中的投影，我们的目标是每3分钟视频能获取约 $N=100$ 帧。需要注意的是，100帧大约能产生 $100 \cdot \frac{V}{2} \approx 1500$ 个训练样本，每个未被遮挡的视角对应一个样本。最后，我们利用扩充后的训练集来训练新检测器，如 $d_{i+1} \leftarrow \text{train}(\mathcal{T}_0 \cup \mathcal{T}_{i+1})$ 所示。

### 4. 检测架构

对于检测器 $d_{i}$，我们采用了卷积姿态机（CPMs）[^29] 的架构，并做了一些修改。CPM会为每个关键点预测一个置信度图，该图以真实位置为中心、以高斯分布形式表示关键点的位置。预测的置信度图的大小与输入图像块的大小一致，而每个关键点的最终位置则是通过找到各置信度图中的最大峰值来确定（见图4b）。

通过置信度图进行关键点检测。与 [^29] 不同，我们使用预初始化的 VGG-19 网络 [^17] 中直至 conv4_4 的卷积阶段作为特征提取器，并通过两个额外的卷积生成 128 通道特征 F。对于大小为 $w \times h$ 的输入图像块，特征图 $\mathbf{F}$ 的所得大小为 $w' \times h' \times 128$，其中 $w' = \frac{w}{8}$ 且 $h' = \frac{h}{8}$。这里不存在额外的池化或下采样阶段，因此网络的最终步长也为 8。此特征图提取之后是一个预测阶段，该阶段生成一组 P 个置信度图或得分图 $\mathbf{S}^1 = \{\mathbf{S}_1^1, \ldots, \mathbf{S}_P^1\}$，每个关键点 p 对应一个得分图 $\mathbf{S}_p^1 \in \mathbb{R}^{w' \times h'}$。第一个阶段之后的每个阶段，将上一阶段的得分图 $\mathbf{S}^{t-1}$ 与图像特征 $\mathbf{F}$ 级联作为输入，并为每个关键点生成 P 个新的得分图 $\mathbf{S}^t$。我们使用 6 个顺序预测阶段，并取最终阶段的输出 $\mathbf{S}^6$。我们使用双三次重采样将这些图调整为原始块大小 $(w \times h)$，并将每个关键点位置提取为其相应图中置信度最大的像素。我们还修改了 [^29] 中的损失函数，使其成为加权 $L_2$ 损失，以处理缺失数据，其中权重在以下情况下被设为零：如果

---

![Image](images/308d1fff4aebfba79bc5c4171be98831a9e749476e6fac424610d8094ad73a1d.jpg)

<div style="text-align: center;">Figure 5: Approximate area within which a random detection will be successfully triangulated for 2 and 3+ views with an inlier threshold of  $\sigma$ pixels.</div>

当某个关键点的标注信息缺失时（例如该点的三角测量失败）。

手部边界框检测。我们的关键点检测器假设输入图像块$\mathbf{I} \in \mathbb{R}^{w \times h \times 3}$是围绕右手裁剪得到的区域。这是一个重要细节：要在实际场景中使用该关键点检测器，我们必须有办法生成这个边界框。我们直接采用来自[^29]和[^4]的人体姿态估计模型，利用手腕和肘部位置来估算手部位置，假设手部沿前臂方向延伸的长度为前臂长度的0.15倍。训练时，我们裁剪出尺寸为$2.2B$的正方形图像块，其中B是包含所有手部关节的最小边界框的最大维度（具体裁剪示例见图8）。测试时，我们估算$B = 0.7H$，这里H表示头部“关节”的长度（从头顶到下颌）。这个正方形图像块会被调整大小为$w = 368$和$h = 368$，以此作为网络的输入。处理左手时，我们将图像左右翻转，将其视为右手处理。

### 5. 多视角自举方法何时有效？

在本节中，我们推导出了相关结果，用以确定对于给定的检测器而言，实现多视角自举所需的最少摄像头数量；或者反过来讲，对于给定的摄像头数量，初始检测器需达到何种精度才能实现多视角自举。详细的推导过程和假设条件详见补充文档。

首先，我们将检测器的质量$d_0$定义为其关键点正确概率PCK：即预测的关键点与真实位置之间的距离不超过阈值$\sigma$的概率。对于特定的关键点p，我们用$\mathrm{PCK}_\sigma^p(d_0)$来表示这一概率，并在测试集$\mathcal{T}$上对其进行近似计算：

 $$ \mathrm{P C K}_{\sigma}^{p}(d_{0}):=\frac{1}{|\mathcal{T}|}\sum_{\mathcal{T}}\delta\left(||\mathbf{x}_{p}^{f}-\mathbf{y}_{p}^{f}||_{2}<\sigma\right), $$

其中$\mathbf{x}_p^f \in d_0(\mathbf{I}^f)$表示图像$\mathbf{I}^f$上的第p个关键点预测结果，$\mathbf{y}_p^f$为其真实位置，$\delta(\cdot)$是指示函数。要实现多视角自举，我们必须将错误的三角测量结果判定为有效结果的误报率控制在较低水平。

![Image](images/aa2469d2dbcecbc84ce07bd40c97bc2efdf6ac88dc05ddde772f355660c1c151.jpg)

<div style="text-align: center;">(a) True and False Positives, P=21 (b) False Discovery Rate, P=21</div>

<div style="text-align: center;">Figure 6: (a) TP and FP for different values of  $PCK_{\sigma}$, and different number of n inliers. A setup with 5 cameras ( $V = 5$) is shown in green, and a setup as the one we use, with  $V = 31$, in orange. (b) False discovery rate  $FDR = \frac{FP}{TP + FP}$.</div>

我们得出了三个结果，用以量化在不同探测器质量和相机设置下出现错误三角测量的概率。

我们首先定义一些初步量。由均匀采样于尺寸为 $q_2$ 的图像正方形上的两个点所产生、位于距离 $\sigma$ 内的虚假三角剖分的概率 $w \times w$ 近似为 $\frac{2\sigma w}{w^2}$（假设为如图 5 所示的校正立体像对）。该虚假三角剖分得到第三个视图支持的概率以 $\frac{\pi\sigma^2}{w^2}$ 为上界。此外，其余 $n-2$ 个视图中至少有 $V-2$ 个点支持该虚假三角剖分的概率为 $p_{n-2} = \Pr(X \geq n-2)$，其中 $X \sim \mathrm{B}(V-2, \pi\frac{\sigma^2}{w^2})$ 是一个随机变量，表示该虚假三角剖分在其余 $V-2$ 个视图中的内点数。最后，$q_n \cong q_2 \cdot p_{n-2}$ 表示找到 n 个支持该虚假三角剖分的内点的概率。

结果1：在V个视角中，由均匀随机分布的二维点构成的、至少有n个内点支持的虚假三角测量概率约为$\mathrm{FT}_n \cong \mathrm{Pr}(Y \geq 1)$，其中

 $$ Y\sim\mathrm{B}\left(\binom{V}{2},q_{n}\right) $$

是一个随机变量，表示至少有n个内点支持的视角对数量。

结果2：对于给定的关键点探测器d，在多视图验证下，点p在V个视角中至少有n个内点时的真正率和假正率可近似表示为

 $$ \mathrm{TP}_{p}(d)=\Pr(Z\geq n) $$

 $$ \mathrm{FP}_{p}(d)=\left(1-\mathrm{TP}_{p}(d)\right)\cdot\mathrm{FT}_{n}, $$

其中$Z \sim \mathrm{B}(V, \mathrm{PCK}_{\sigma}^{p}(d))$是一个随机变量，表示V个视角中正确的二维检测点数量，且

---

![Image](images/38cdc1884cecc788395612cf12f92f5f9ba4b90b640866b12376bff3b2eabe98.jpg)

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

![Image](images/669a1eff57052757c07c71c87890600cb71da63c2841cbcf03dc9c3b2bd391c5.jpg)

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

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

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

![Image](images/51ae8f1c120ba98e6edb3cc68758f7a222a8fc54357fccfd88b73ffc97169a06.jpg)

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

<div style="text-align: center;">Figure 7: Improvement in PCK curves across multiview bootstrapping iterations. (a-c) PCK curves on MPII+NZSL testing images, MPII only, and NZSL only, for two different bootstrapping iterations of each model. Note: improvements are smaller because the evaluation set is from the subset of images that annotators successfully labeled—and the greatest improvements from multiview bootstrapping are usually observed in the complement to this set. (d) PCK for different types of hand joints. (e) Evolution of testing set  $PCK_{0.2}$ with SGD training iterations, for 3 different bootstrapping iterations.</div>

结果3：对于一个共有P个关键点的复杂物体，如果我们要求所有关键点$p \in [1 \ldots P]$都必须正确才能接受某一帧，并假设所有关键点的$\mathrm{PCK}_{\sigma}^{p}(d)$相同，那么

这里假定错误的检测点是均匀随机分布的。

 $$ TP(d)=TP_{p}(d)^{P} $$

 $$ \mathrm{FP}(d)=\sum_{k=1}^{P}\binom{P}{k}\mathrm{TP}_{p}(d)^{P-k}\mathrm{FP}_{p}(d)^{k}. $$

图6展示了不同视角数V、最小内点数n以及探测器质量$PCK_{\sigma}$下的图表。通过生成此类图表，可以读出针对目标假发现率的推荐视角数；反之，也能得出给定视角数下的真正率/假正率。

### 6. 评估

我们评估过的现有手部姿态估计数据集中，没有一套适合我们的目标应用场景：即包含日常手势和活动的自然场景图像。因此，我们手动标注了两组公开可用的图像集：(1) MPII人体姿态数据集[^2]，其中的图像取自YouTube视频，专门用来反映日常人类活动；(2)惠灵顿维多利亚大学的新西兰手语(NZSL)练习图像集[^11]，其中有多人用NZSL讲述故事。我们选择后者是因为它包含各种对话中可能出现的手部姿态（这在MPII中较为少见）。图2展示了来自这两组数据集的带手动标注的图像选集。截至目前，我们已在MPII数据集上收集了1300只手部的标注，在NZSL数据集上收集了1500只手部的标注，随后按70/30的比例将其划分为训练集（2000只手部）和测试集（800只手部）。

![Image](images/f56e6bd6b30c8284ff4051852d8c6aa50a7fab69a2f64c490db11aaeec0ce16d.jpg)

<div style="text-align: center;">Figure 8: Detections using model “Mix 3” on test images. To show a representative sample, we pick the first 5 images from the test sets of (a) MPII, and (b) NZSL. Each image’s PCK at  $\sigma=0.1$ and  $\sigma=0.2$ (across the 21 keypoints) is shown as a pair of bars at the bottom of the image, colored from red (0) to green (1).</div>

MPII数据集以及NZSL中的1500张图像，我们按70/30的比例划分为训练集（2000只手）和测试集（800只手）。

#### 6.1. 多视图自举法带来的改进

我们通过在三个初始检测器上应用算法 1 来评估多视图自举。所有三个检测器均遵循第 4 节所述架构，但在 3 组不同的初始训练数据 $\mathcal{T}_0$ 上训练：(1) “Render”：初始的一组合成渲染的手部 $^2$ 图像，共约 11000 个样本；(2) “Manual”：上述 MPII 和 NZSL 训练集中的人工标注；以及 (3) “Mix”：渲染数据与人工标注的组合。对于多视图自举，我们使用 Panoptic Studio 数据集 [^8] 中的图像。具体而言，我们使用 31 个 HD 相机视图，以及包含

---

![Image](images/15e40162ead338e5230191bb070960b8e6ef33c175fdbae84fed16dc978969cc.jpg)

<div style="text-align: center;">Figure 9: Robustness to view angle. We show percentage of outliers as a heatmap for each viewing angle, where azimuth  $\phi$ is along the X axis and elevation  $\theta$ along the Y axis.</div>

手部动作方面，我们利用提供的3D人体姿态[^8]来估算遮挡情况以及用于手部检测的边界框。在进行引导迭代时，我们会剔除那些内点数量平均值小于5或重投影误差平均值大于5的帧，同时设定检测置信度阈值为$\lambda=0.2$。在每一次迭代中，我们手动剔除的错误标注帧数量都不超过15帧。

6.1.1. PCK。我们将性能衡量为对所有关键点取平均的 PCK 曲线，并在 MPII 与 NZSL 图像组合的测试集（800 只手）上进行评估。结果如图 7a 所示，其中我们将自举迭代次数附加到模型名称之后，例如，“Manual 1”表示在 $\mathcal{T}_0 \cup \mathcal{T}_1$ 上训练的模型，其初始 $\mathcal{T}_0$ 由人工标注构建。PCK 曲线通过改变 Eq. (9) 中的精度阈值 $\sigma$ 绘制；该参数显示在水平轴上。我们将 $\sigma$ 衡量为归一化距离，其中每个样本中的像素距离均按对应人物头部大小的 0.7 倍进行归一化（大约等于一只伸展的手的长度）。不足为奇的是，仅在渲染数据上训练的模型表现最差，但从使用真实训练数据进行自举中获益最多。在图 7b 和 c 中可以看到，这些数据集反映了两个难度层级：MPII 图像在质量、分辨率和手部外观方面差异很大，包含多种类型的遮挡物、手-物交互（例如运动、园艺）、自我接触（例如头枕在手上）以及手-手交互，如图 8a 所示。相比之下，NZSL 集合相当同质，包含直视镜头并明确做出可见手势进行交流的人的上半身（图 8b）。此外，我们在图 7d 中研究了不同类型关节点的性能。这些关节点按从最接近手腕到最远 $^3$ 的顺序排列，这一顺序也对应于它们的难度。最后，我们在图 7e 中展示了多视角自举如何有助于防止过拟合，尤其是对于较小的初始集合 $\mathcal{T}_0$。

6.1.2 对视角的鲁棒性。我们通过测量三维重建过程中异常值的百分比，来量化该检测器对不同视角的鲁棒性提升情况。作为基准真值，我们目视检查最佳的三维重建结果，仅选取正确重建的帧。我们将视角定义为相对于原点处固定手模型的方位角$\phi$和仰角$\theta$。直观来说，当角度为$\phi = \{-180, 0, 180\}$（正对手掌或手背）时更容易识别，因为自遮挡现象较少。在$\phi = \{-90, 90\}$时，我们从侧面观察手部，即从拇指到小指或反之，此时会产生更多遮挡。类似地，在$\theta = \{90, -90\}$时，观测角度是从指尖到手腕，或反之；这些是最难处理的角度。我们比较了“Mix”检测器的初始迭代版本，它很快就能适应不同的视角变化。我们将结果绘制成热图，根据每个样本的方位角和仰角对手部检测结果进行分组，每个分组内异常值的百分比通过落入该分组的所有样本计算得出。

#### 6.2. 与基于深度的方法对比

我们利用Tzionas等人发布的公开数据集[^26]来评估我们方法的性能。虽然存在多个常用于评估基于深度方法的数据集，但其中许多数据集没有对应的RGB图像，或者其标注仅适用于深度图像。同时具备RGB图像且标注能够精确定位的数据集十分罕见；[^26]中的数据集是评估我们方法的最佳选择$^{4}$。我们在该数据集的RGB图像上运行2D关键点检测器“Mix 3”。数据集中的序列包含单手运动、手与手的交互以及手与物体的交互场景。为了能与[^26]的结果直接对比，我们采用表中所示的关键点位置的平均像素误差作为评价指标。需要注意的是，[^26]所提方法基于复杂的三维手部模板，需要利用深度数据和跟踪技术，每帧处理时间长达数秒。而我们的方法仅需对RGB图像进行逐帧检测，即可在单手及手与物体交互场景中取得相当的性能，且能在GPU上实现实时运行。但在手与手交互场景下性能会有所下降：当其中一只手被严重遮挡时，我们的检测器往往会将遮挡手误判为目标手。在这种情况下，若能同时检测两只手的关键点，会比当前独立处理每只手的方式更具优势。

#### 6.3. 无标记手部动作捕捉

训练好的关键点检测器使我们能够在各种具有挑战性的场景中重建三维手部动作。我们在Panoptic Studio数据[^8]的31个高清摄像头视角下使用“Mix 3”检测器，像多视角引导法那样通过三角测量生成三维手部模型。测试场景涵盖了各种实际手部动作，比如操作各类工具（如电钻、剪刀、尺子）、体育动作（扔球、挥棒）以及演奏乐器（钢琴、大提琴、长笛和吉他）。我们还重建了多人互动的场景，包括社交游戏、搭建货架和乐队表演。部分三维手部重建结果及对应的二维检测结果如图10和图11所示。需要注意的是，由于传感器量程较短且难以处理手与物体的交互问题，大多数基于深度的方法无法应用于这些场景。最佳观看效果请参见补充视频，其中还包含了更多重建结果。

---

<div style="text-align: center;">Table 1: Average 2D error in pixels on the dataset of Tzionas et al. [^26].</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td rowspan="2">Sequence</td><td colspan="4">Single Hand</td><td colspan="7">Hand-Object</td><td colspan="7">Hand-Hand</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Grasp</td><td style='text-align: center; word-wrap: break-word;'>Flying</td><td style='text-align: center; word-wrap: break-word;'>Rock Gesture</td><td style='text-align: center; word-wrap: break-word;'>Bunny Gesture</td><td style='text-align: center; word-wrap: break-word;'>Ball One Hand</td><td style='text-align: center; word-wrap: break-word;'>Ball Two Hands</td><td style='text-align: center; word-wrap: break-word;'>Bend Pipe</td><td style='text-align: center; word-wrap: break-word;'>Bend Rope</td><td style='text-align: center; word-wrap: break-word;'>Ball Occlu.</td><td style='text-align: center; word-wrap: break-word;'>Move Cube</td><td style='text-align: center; word-wrap: break-word;'>Moving Occlu.</td><td style='text-align: center; word-wrap: break-word;'>Walk</td><td style='text-align: center; word-wrap: break-word;'>Cross</td><td style='text-align: center; word-wrap: break-word;'>Cross Twist</td><td style='text-align: center; word-wrap: break-word;'>Tip Touch</td><td style='text-align: center; word-wrap: break-word;'>Dancing</td><td style='text-align: center; word-wrap: break-word;'>Tip Blend</td><td style='text-align: center; word-wrap: break-word;'>Hugging</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>[^26]</td><td style='text-align: center; word-wrap: break-word;'>4.37</td><td style='text-align: center; word-wrap: break-word;'>5.11</td><td style='text-align: center; word-wrap: break-word;'>4.44</td><td style='text-align: center; word-wrap: break-word;'>4.50</td><td style='text-align: center; word-wrap: break-word;'>6.10</td><td style='text-align: center; word-wrap: break-word;'>7.15</td><td style='text-align: center; word-wrap: break-word;'>6.09</td><td style='text-align: center; word-wrap: break-word;'>5.65</td><td style='text-align: center; word-wrap: break-word;'>8.03</td><td style='text-align: center; word-wrap: break-word;'>4.68</td><td style='text-align: center; word-wrap: break-word;'>5.55</td><td style='text-align: center; word-wrap: break-word;'>5.99</td><td style='text-align: center; word-wrap: break-word;'>4.53</td><td style='text-align: center; word-wrap: break-word;'>4.76</td><td style='text-align: center; word-wrap: break-word;'>3.65</td><td style='text-align: center; word-wrap: break-word;'>6.49</td><td style='text-align: center; word-wrap: break-word;'>4.87</td><td style='text-align: center; word-wrap: break-word;'>5.22</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Ours</td><td style='text-align: center; word-wrap: break-word;'>5.49</td><td style='text-align: center; word-wrap: break-word;'>5.67</td><td style='text-align: center; word-wrap: break-word;'>4.15</td><td style='text-align: center; word-wrap: break-word;'>4.81</td><td style='text-align: center; word-wrap: break-word;'>5.75</td><td style='text-align: center; word-wrap: break-word;'>9.79</td><td style='text-align: center; word-wrap: break-word;'>5.47</td><td style='text-align: center; word-wrap: break-word;'>4.35</td><td style='text-align: center; word-wrap: break-word;'>9.66</td><td style='text-align: center; word-wrap: break-word;'>6.38</td><td style='text-align: center; word-wrap: break-word;'>5.40</td><td style='text-align: center; word-wrap: break-word;'>9.10</td><td style='text-align: center; word-wrap: break-word;'>6.95</td><td style='text-align: center; word-wrap: break-word;'>10.09</td><td style='text-align: center; word-wrap: break-word;'>5.31</td><td style='text-align: center; word-wrap: break-word;'>6.55</td><td style='text-align: center; word-wrap: break-word;'>6.09</td><td style='text-align: center; word-wrap: break-word;'>10.35</td></tr></table>

![Image](images/f176bd23b37ec4019b5afb0630fc2664173a674d90a7b0e6fd835d8e996a4977.jpg)

<div style="text-align: center;">Figure 10: Qualitative multiview results on sequences not used during bootstrapping. (a) Reprojected triangulation. (b) 3D hands in context. (c) Metric reconstruction. (d) 2D detections from “Mix 3” on selected views.</div>

互动人群包括社交游戏参与者、货架搭建者以及乐队表演者。图10和图11展示了部分3D手部重建结果及其对应的2D检测结果。需要注意的是，大多数基于深度的方法由于传感器范围有限且难以处理手与物体的交互，因此并不适用于这些场景。

![Image](images/919ac2203b5c3fe0f3308becb701356510f6deb6b59f26cb280141c05507ccc1.jpg)

<div style="text-align: center;">Figure 11: A keypoint detector that works at typical camera resolutions combined with a multiview system allows capturing the hand motions of entire groups of interacting people, something that was not possible with prior approaches.</div>

相关结果在补充视频中有更清晰的呈现，该视频还包含了其他重建结果。

### 7. 讨论

本文提出了两项创新：(1)首个实时手部关键点检测器，能够实际应用于自然场景下的RGB视频；(2)首个无需标记点的3D手部动作捕捉系统，无需人工干预即可重建复杂的手物交互及音乐演奏场景。我们发现，利用多视角自举法可以构建丰富的训练集，从而提升标注的质量和数量。我们的方法可用于为易受遮挡影响的关键点检测器（如身体和面部关键点检测器）生成标注。构建大型标注数据集往往是许多机器学习和计算机视觉领域面临的主要瓶颈，而我们的方法正是利用多视角几何作为外部监督源来优化弱监督学习的一种方式。未来的研究方向是使该方法具备更强的鲁棒性，以便能在摄像头数量更少、环境更复杂的情况下（例如使用多部手机）运行，从而创建出更能反映真实采集条件的更丰富数据集。

---

## 参考文献

[^1]: S. Agarwal et al. Ceres solver. <http://ceres-solver.org>. 3

[^2]: M. Andriluka, L. Pishchulin, P. Gehler, and B. Schiele. 2D human pose estimation: New benchmark and state of the art analysis. In CVPR, June 2014. 6

[^3]: 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. 2

[^4]: Z. Cao, T. Simon, S.-E. Wei, and Y. Sheikh. Realtime multi-person 2d pose estimation using part affinity fields. In CVPR, 2017. 5

[^5]: M. de La Gorce, D. J. Fleet, and N. Paragios. Model-based 3D hand pose estimation from video. TPAMI, 2011. 2

[^6]: M. A. Fischler and R. C. Bolles. Random sample consensus. Communications of the ACM, 1981. 3

[^7]: T. M. Greiner. Hand anthropometry of US army personnel. Technical report, DTIC Document, 1991. 4

[^8]: H. Joo, H. Liu, L. Tan, L. Gui, B. Nabbe, I. Matthews, T. Kanade, S. Nobuhara, and Y. Sheikh. Panoptic studio: A massively multiview system for social motion capture. In ICCV, 2015. 6,7

[^9]: C. Keskin, F. Kıraç, Y. E. Kara, and L. Akarun. Hand pose estimation and hand shape classification using multi-layered randomized decision forests. In ECCV, 2012. 2

[^10]: S. Lu, D. Metaxas, D. Samaras, and J. Oliensis. Using multiple cues for hand tracking and model refinement. In CVPR, 2003. 2

[^11]: R. McKee, D. McKee, D. Alexander, and E. Paillat. NZ sign language exercises. Deaf Studies Department of Victoria University of Wellington, <http://www.victoria.ac.nz/llc/llc_resources/nzsl/>. 6

[^12]: M. Oberweger, G. Riegler, P. Wohlhart, and V. Lepetit. Efficiently Creating 3D Training Data for Fine-Hand Pose Estimation. In CVPR, 2016. 2

[^13]: M. Oberweger, P. Wohlhart, and V. Lepetit. Training a Feedback Loop for Hand Pose Estimation. In ICCV, 2015. 2

[^14]: I. Oikonomidis, N. Kyriazis, and A. A. Argyros. Tracking the articulated motion of two strongly interacting hands. In CVPR, 2012. 2

[^15]: J. M. Rehg and T. Kanade. Digiteyes: Vision-based hand tracking for human-computer interaction. In Motion of Non-Rigid and Articulated Objects, 1994. 2

[^16]: T. Sharp et al. Accurate, robust, and flexible real-time hand tracking. In CHI, 2015. 2

[^17]: K. Simonyan and A. Zisserman. Very deep convolutional networks for large-scale image recognition. In ICLR, 2015. 4

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

[^19]: 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. 7

[^20]: S. Sridhar, A. Oulasvirta, and C. Theobalt. Interactive markerless articulated hand motion tracking using RGB and depth data. In ICCV, 2013. 2

[^21]: B. Stenger, A. Thayananthan, P. H. Torr, and R. Cipolla. Model-based hand tracking using a hierarchical bayesian filter. TPAMI, 2006. 2

[^22]: X. Sun, Y. Wei, S. Liang, X. Tang, and J. Sun. Cascaded hand pose regression. In CVPR, 2015. 2

[^23]: J. S. Supancic, G. Rogez, Y. Yang, J. Shotton, and D. Ramanan. Depth-based hand pose estimation: data, methods, and challenges. In ICCV, 2015. 2

[^24]: D. Tang, H. Jin Chang, A. Tejani, and T.-K. Kim. Latent regression forest: Structured estimation of 3D articulated hand posture. In CVPR, 2014. 2

[^25]: J. Tompson, M. Stein, Y. Lecun, and K. Perlin. Real-time continuous pose recovery of human hands using convolutional networks. ACM TOG, 2014. 2, 7

[^26]: D. Tzionas, L. Ballan, A. Srikantha, P. Aponte, M. Pollefeys, and J. Gall. Capturing hands in action using discriminative salient points and physics simulation. IJCV, 2016. 2, 7, 8

[^27]: C. Wan, A. Yao, and L. Van Gool. Hand pose estimation from local surface normals. In ECCV, 2016. 2

[^28]: R. Y. Wang and J. Popović. Real-time hand-tracking with a color glove. ACM TOG. 2

[^29]: S.-E. Wei, V. Ramakrishna, T. Kanade, and Y. Sheikh. Convolutional pose machines. In CVPR, 2016. 4, 5

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

[^31]: Q. Ye, S. Yuan, and T.-K. Kim. Spatial attention deep net with partial pso for hierarchical hybrid hand pose estimation. In ECCV, 2016. 2
