
# 大规模多视角3D手部姿态数据集

Francisco Gomez-Donoso、Sergio Orts-Escolano和Miguel Cazorla

阿利坎特大学计算机研究所

## 摘要

在关节层面实现精确的手部姿态估计，在人机交互、用户界面以及虚拟现实应用中有着诸多用途。然而，这目前仍是一个尚未解决的问题。新型的深度学习技术或许能在这方面取得重大进展，但它们需要海量的标注数据。迄今为止发布的手部姿态数据集无法用于深度学习方法，因为它们存在样本数量有限、标注抽象程度高，或是样本为深度图等问题。

在这项工作中，我们推出了一套多视角手部姿态数据集，其中提供了手部的彩色图像以及对应的多种标注信息，即边界框以及手部关节的2D和3D位置。此外，我们还提出了一种简单却精确的深度学习架构，可用于实时、鲁棒地估计2D手部姿态。

### 1. 引言

基于2D图像的手部姿态估计是计算机视觉领域蓬勃发展的研究方向。这一问题不仅涉及手部本身的位置，还包括手部关节的定位，

---

也就是手部的姿态。这种识别的用途十分广泛，从用于手语识别$^{[1, 2]}$到识别更复杂的动作如手势等。它在虚拟现实和增强现实应用中的重要性也不容忽视。要在这些虚拟世界中实现自然交互，首先必须解决手部姿态检测问题。此外，为了给虚拟世界带来无缝集成的体验，必须使用非侵入式方法进行手部姿态检测。实现这一任务的一种方式是利用基于图像的计算机视觉算法来获取手部姿态。

众所周知，深度学习系统需要大量标注数据来训练出鲁棒性强的模型。在大多数情况下，人工标注并不可行，因此研究人员提出了多种能够自动生成真实标注的程序。通常，生成海量标注数据时会采用两种不同的方法。第一种是生成合成数据的工具。例如，在计算机视觉领域，人们常用图形引擎来模拟真实世界的摄像头以获取合成图像。不过，这种方法存在真实数据与合成数据之间的差异，导致训练出的网络无法正确分类真实数据。另一种方法是使用专门的工具或传感器来提供真实标注。这种方法往往能取得最佳效果，因为它能自动化标注流程，且获取的数据更接近真实数据。

对现有研究的梳理表明，早期的数据集由彩色图像组成，但它们旨在用于静态或动态

---

手势识别，因此并未提供手部关节层面的标注，仅为每个样本赋予一个类别标签。随后，随着低成本测距传感器的出现，数据集开始舍弃颜色信息而改用深度图。不过，大多数深度学习方法在解决分类和回归问题时仍会利用颜色信息。

本文介绍了一个新颖的姿势数据集。该数据集提供了来自多个视角的手部图像。其真实标签由不同类型的数据组成。对于每张图像，都标注了手部位置：包括其边界框、每个关节在图像中的X和Y坐标，以及每个关节在现实世界中的X、Y和Z坐标。该数据集包含了不同个体在不同时刻的图像，甚至还有在特殊条件下采集的样本，这些样本将对使用该数据集的算法的泛化能力提出挑战。此外，数据集还提供了训练集和测试集划分。

本文其余部分的结构如下：第2节回顾了现有手部姿势数据集相关的前沿研究；接着在第3节介绍了用于构建该数据集的采集设备详情；然后，第4节阐述了该数据集本身的相关细节；第5节描述了基于该数据集训练的手部姿势回归系统，该系统可作为其他基于手部姿势估计的研究方案的基准；第6节总结了本研究的主要结论，并提出了未来的研究方向。

---

### 2. 相关工作

手部姿势估计是人机交互领域最常见的研究方向之一。自21世纪初以来，人们便通过不同方法致力于实现高精度的手势和姿势识别。最初，传统的计算机视觉算法被应用于静态彩色图像中，以从背景中分割出手部；随后，机器学习方法被用于解决这一问题；最终，通过深度学习实现了最为复杂且精准的系统。随着这些方法的发展，各类旨在为这些系统提供合适数据的数据集也应运而生。本节将回顾这些数据集，并指出它们的优缺点。

如前所述，21世纪初出现了两套用于静态姿势检测的数据集$^{[3]}$和动态手势分类数据集$^{[4]}$。静态姿势版数据集包含超过3,000张处于静态姿势的手部图像，分为6个不同类别。动态手势数据集则由60个执行特定手势的手部序列组成，分为4个类别。

在这两个版本的数据集中，仅提供了每个样本的类别信息，没有进一步的标注，且样本分布严重不平衡，这可能会损害学习算法的准确性。按照如今的标准来看，这些样本的分辨率和数量也明显不足。

更晚一些，2014年Pisharady等人$^{[5]}$发布了另一套手部姿势分类数据集。NUS手部姿势数据集包含10种姿势类别，每个类别有24张样本图像，这些图像是通过改变手在图像帧内的位置和大小来采集的。该数据集同时提供灰度图和

---

彩色图像，分辨率均为$160 \times 120$像素。所选手部姿势在外观上的类别间差异被降至最低，这使得识别任务颇具挑战性，但该数据集中的图像背景是统一的。

同样，该数据集并未对手部关节进行标注，仅为每个样本提供一个类别标签，因此它并不适用于关节级别的连续手部姿势估计。此外，作者称其背景是统一的，这对学习算法而言并非理想特性。

在[^6]中介绍的手势识别数据集包含了波兰手语和美国手语中的手势，此外还包含一些特殊手势。该数据库由三组手势组成，包含以下数据：不同分辨率但质量极高的原始RGB图像；用于标识皮肤存在的二值掩码以及手部特征点位置信息。总体而言，该数据集包含超过1600个样本。

尽管该数据集具有高分辨率且真实标签质量优异，但其样本数量仍显不足。还有一个更严重的缺陷：所有样本的背景均完全相同。这可能会损害学习系统的泛化能力，因为在现实场景中背景是不断变化的，显然不会总是灰色且手部与背景之间具有明显对比度。

Molina等人发布了另一个数据集[^7]。该数据集由自然深度图和合成深度图组成。每张深度图都代表特定姿势下的分割后的手部图像。标注信息包括深度图坐标系下每个关节的二维位置以及该位置的深度值。

---

他们共收录了65个自然样本，这些样本被划分为6个不同的类别，分类依据包括遮挡程度、姿势、运动方式或综合内容。合成数据则是以自然样本为种子，通过最多200次随机旋转生成。

这是一个具有高度代表性的手部姿势数据集，但它存在一个重大缺陷：仅提供深度图，这就迫使使用者必须配备3D传感器。此外，样本数量对于深度学习算法而言也远远不够，而且合成样本无法体现现实世界的本质。

随着低成本测距传感器的出现，顺应深度数据的发展趋势，NYU手部姿势数据集[^8]应运而生。该数据集包含8252帧测试集图像和72757帧训练集图像，均为带有人手姿势真实标签的RGBD数据。每帧图像都提供了来自3台Kinect摄像头的RGBD数据：一个正面视图和两个侧面视图。训练集仅包含单个用户的样本，而测试集则包含两名用户的样本。此外，每个视图还提供了手部姿势的合成重建（渲染）图像。

该数据集的主要缺陷在于所提供的RGB图像是由3D传感器获取的点云投影而成的。这导致二维彩色图像的质量较低，且存在大量超出3D传感器范围的未知区域。因此，使用该数据集同样需要配备3D传感器。

[^9]中提出了另一个基于深度的数据集。该数据集包含14种手势的序列，这些手势有两种执行方式：使用一根手指和整只手。每种手势由28名参与者分别执行1到10次，

---

最终共得到2800个序列。这些序列根据其手势类型、所用手指数量、执行者和试验次数进行了标注。序列中的每一帧都包含一张深度图像，以及22个关节在二维深度图像空间和三维世界空间中的坐标，从而构成完整的手部骨骼模型。同样，该数据集也不包含对应的RGB图像，因此使用该数据集也必须配备3D传感器。

通过对现有技术的上述综述，我们认为有必要构建一个大规模的手部姿势数据集，其中包含彩色图像及其对应的三维和二维标注信息。

### 3. 采集设备

为了生成准确的基准数据，我们专门制作了一台采集设备，如图1所示。该设备由铝制结构组成，配有三个可活动的机械臂，总共可安装四台摄像头。其中三台是Logitech C920 Pro摄像头，最后一台位于正上方，为Microsoft LifeCam Studio摄像头。这些摄像头能够拍摄分辨率高达1080p的高质量图像；尽管该型号具备自动对焦功能，但我们还是禁用了这一功能，因为它会影响摄像头内参的估算。一旦摄像头经过校准，这些参数便不会再发生变化。图像的分辨率达到了$640 \times 480$。

摄像头的具体位置如下：一台安装在中间的机械臂上，朝下拍摄；另外两台安装在侧边的机械臂上，呈45度角朝向；最后一台摄像头则位于结构的底部。最后，还有一个Leap Motion控制器被固定在铝制框架上，位于摄像头前方。

---

![Image](images/fbab0e639a20bb418723a0503535b10b347a5e06c6e45eac6cce1e51bb045f6f.jpg)

<div style="text-align: center;">Figure 1: We created a custom structure in order to generate the dataset. This device holds the color cameras and the Leap Motion Controller, and allows us to quickly generate large amounts of ground truth data.</div>

Leap Motion控制器是一种能够精准捕捉人手姿态的设备。它能在200Hz的频率下实现亚毫米级的手部追踪。该设备能提供手关节的三维位置等数据。获取这些数据是为了自动标注彩色图像中关节的位置。该设备被安装在结构底部，朝上放置。这种配置形成了同时能被摄像头和Leap Motion控制器捕捉到的重叠区域。

这台设备无需费力就能采集到大量准确的基准数据。

---

### 4. 数据集描述

所提出的数据集旨在用于三维和二维手部姿态估计以及手部区域定位。该数据集由多个序列组成，每个序列又包含一组帧。一帧即某一时刻的不同类型的基准数据集合。

所提供的基准数据包括：

- 由Leap Motion提供的手部关节三维点集，未经进一步处理。

• 每台彩色摄像头拍摄的四张手部彩色图像。

- 将三维点投影到每台彩色摄像头坐标系后得到的四组二维点。

- 根据三维点在各摄像头坐标系中的投影计算出的四个边界框。

最后需要指出的是，为确保数据的高度多样性，每个序列都是在不同条件下采集的。我们考虑了受试者、一天中的不同时刻以及运动速度等参数来实现高多样性。关于泛化特性的更多细节详见4.5节。

#### 4.1. 手部关节的三维点

每一帧都会提供一组三维点。这些三维点对应Leap Motion控制器提供的手部关节位置，未经进一步预处理。表1列出了各点及其语义对应关系。图3中在真实手部上标记了这些不同的点。

---

我们为手指上的每个指关节以及指尖都提供了三维点。此外，我们还提供了手掌位置和手掌法向量。

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Joint ID</td><td style='text-align: center; word-wrap: break-word;'>Finger</td><td style='text-align: center; word-wrap: break-word;'>Bone</td><td style='text-align: center; word-wrap: break-word;'>Joint ID</td><td style='text-align: center; word-wrap: break-word;'>Finger</td><td style='text-align: center; word-wrap: break-word;'>Bone</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>1</td><td style='text-align: center; word-wrap: break-word;'>Index</td><td style='text-align: center; word-wrap: break-word;'>Distal</td><td style='text-align: center; word-wrap: break-word;'>11</td><td style='text-align: center; word-wrap: break-word;'>Pinky</td><td style='text-align: center; word-wrap: break-word;'>Intermediate</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>2</td><td style='text-align: center; word-wrap: break-word;'>Index</td><td style='text-align: center; word-wrap: break-word;'>Metacarpal</td><td style='text-align: center; word-wrap: break-word;'>12</td><td style='text-align: center; word-wrap: break-word;'>Pinky</td><td style='text-align: center; word-wrap: break-word;'>Proximal</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>3</td><td style='text-align: center; word-wrap: break-word;'>Index</td><td style='text-align: center; word-wrap: break-word;'>Intermediate</td><td style='text-align: center; word-wrap: break-word;'>13</td><td style='text-align: center; word-wrap: break-word;'>Ring</td><td style='text-align: center; word-wrap: break-word;'>Distal</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>4</td><td style='text-align: center; word-wrap: break-word;'>Index</td><td style='text-align: center; word-wrap: break-word;'>Proximal</td><td style='text-align: center; word-wrap: break-word;'>14</td><td style='text-align: center; word-wrap: break-word;'>Ring</td><td style='text-align: center; word-wrap: break-word;'>Metacarpal</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>5</td><td style='text-align: center; word-wrap: break-word;'>Middle</td><td style='text-align: center; word-wrap: break-word;'>Distal</td><td style='text-align: center; word-wrap: break-word;'>15</td><td style='text-align: center; word-wrap: break-word;'>Ring</td><td style='text-align: center; word-wrap: break-word;'>Intermediate</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>6</td><td style='text-align: center; word-wrap: break-word;'>Middle</td><td style='text-align: center; word-wrap: break-word;'>Metacarpal</td><td style='text-align: center; word-wrap: break-word;'>16</td><td style='text-align: center; word-wrap: break-word;'>Ring</td><td style='text-align: center; word-wrap: break-word;'>Proximal</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>7</td><td style='text-align: center; word-wrap: break-word;'>Middle</td><td style='text-align: center; word-wrap: break-word;'>Intermediate</td><td style='text-align: center; word-wrap: break-word;'>17</td><td style='text-align: center; word-wrap: break-word;'>Thumb</td><td style='text-align: center; word-wrap: break-word;'>Distal</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>8</td><td style='text-align: center; word-wrap: break-word;'>Middle</td><td style='text-align: center; word-wrap: break-word;'>Proximal</td><td style='text-align: center; word-wrap: break-word;'>18</td><td style='text-align: center; word-wrap: break-word;'>Thumb</td><td style='text-align: center; word-wrap: break-word;'>Metacarpal</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>9</td><td style='text-align: center; word-wrap: break-word;'>Pinky</td><td style='text-align: center; word-wrap: break-word;'>Distal</td><td style='text-align: center; word-wrap: break-word;'>19</td><td style='text-align: center; word-wrap: break-word;'>Thumb</td><td style='text-align: center; word-wrap: break-word;'>Intermediate</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>10</td><td style='text-align: center; word-wrap: break-word;'>Pinky</td><td style='text-align: center; word-wrap: break-word;'>Metacarpal</td><td style='text-align: center; word-wrap: break-word;'>20</td><td style='text-align: center; word-wrap: break-word;'>Thumb</td><td style='text-align: center; word-wrap: break-word;'>Proximal</td></tr></table>

<div style="text-align: center;">Table 1: Joints of the hand present in the dataset. The Joint Number columns reference the numerical label shown in Figure 3.</div>

#### 4.2. 手部彩色图像

我们提出的数据集旨在供深度学习模型使用，但并不限于此。这些方法会以手部图像为输入，希望能输出准确的姿态估计结果。不过，图像质量是确保这些系统正常运作的关键因素。

众所周知，传感器采集的图像反映的是真实场景的略微变形版本。其中一些较为明显的变形

是由相机镜头曲率导致的（即径向和切向镜头畸变）。

这些现象是由相机镜头的曲率引起的（即径向和切向镜头畸变）。

---

为解决这一问题并尽可能提供最准确的基准数据，我们按照[^10]中所述方法对每张图像进行了去畸变处理。之后并未对图像进行进一步预处理。

#### 4.3. 手部关节的2D坐标点

除了手部关节的3D坐标点外，我们还提供了每张彩色图像中的2D对应点。为了能够利用Leap Motion控制器自动标注彩色相机拍摄的图像，我们必须校准这两种设备，估算它们坐标系之间的外部参数。

除了手部关节的3D坐标外，我们还提供了每张彩色图像中的2D对应点。为了能够利用Leap Motion控制器自动标注来自彩色相机的图像，我们必须校准这两类设备，估算它们坐标系之间的外部参数。

校准过程分为两步：首先估算彩色相机的内部参数K，接着估算Leap Motion控制器与彩色相机之间的外部参数$[R|T]$。在本研究中，我们使用[^11]来计算相机的内部参数。随后，我们估算可将Leap Motion坐标系下的3D点转换为相机坐标系的变换关系。

给定Leap Motion参考坐标系中的一组n个3D点及其对应的2D图像投影，再加上相机的内部参数K，我们就能确定相机相对于Leap Motion坐标系的旋转R和平移T，也就是相机的六自由度（6DoF）姿态。我们使用Levenberg-Marquardt优化算法来最小化最终的重投影误差。图3展示了校准程序之后重投影的3D点结果。

---

如前所述，我们利用这个转换矩阵将Leap Motion控制器提供的3D点投影到彩色图像上。

![Image](images/cbf202669a3256f4ff11d7406ec9e3f03be8370dbe298ebfc833d47844e40834.jpg)

<div style="text-align: center;">Figure 2: Calibration setup used for extrinsic parameter estimation by solving the Perspective-n-Point problem.</div>

由于每台相机的校准参数是唯一的，我们将这种方法应用于采集设备的四台相机。因此，我们将Leap Motion控制器提供的3D点分别投影到每台彩色相机上，从而为每一帧生成四组2D点。

#### 4.4. 手部的2D边界框

---

![Image](images/5694529b3fed02a25dafdda94023d5ae939826741a4bd79123b8b0e725798264.jpg)

<div style="text-align: center;">Figure 3: Once the devices are calibrated and the transformation matrix computed, new examples can be annotated in an automatic fashion in order to generate reliable ground truth.</div>

#### 4.4. 手部的2D边界框

最后，我们还通过边界框提供了每个样本中手部在场景中的精确位置。该边界框是通过将3D点投影到相机坐标系，然后提取X和Y坐标的最大值与最小值来计算得出的。为了包含整个手部，每个方向都会加上30像素的固定偏移量。由于每帧有4张彩色图像，因此该数据集提供了4个不同的边界框，每张彩色图像对应一个。

### 4.5. 变异性与泛化能力

如前所述，这个用于姿态估计的数据集旨在提供具有高变异性的准确真实值数据。为确保这一点，数据集的创建过程涉及9名在不同时间记录的不同个体。手部的运动是无意识且不受限制的，完全没有预先设定的计划。因此，数据集涵盖了多种多样的组合，

---

这与基于手势的数据集形成对比，后者只考虑一些固定的姿势。此外，部分序列是在特殊条件下采集的：有两个序列中受试者佩戴了不同的手套，还有一个序列中受试者佩戴了口罩。最后需要指出的是，所有受试者均为右利手。

总共而言，我们提供了分布在21个序列中的超过20,500帧图像。每帧图像配有4张彩色图像和9种不同的标注，因此总共提供了超过80,000张彩色图像以及超过184,500个标注。

为了生成训练集和测试集，我们先将所有样本打乱，取其中20%作为测试集，剩余的80%作为训练集。

![Image](images/362335e5fcfa078230e75cf12eb924652ff1b4985bcc8e1d21f1863a2d0b356c.jpg)

![Image](images/148ff77ee646b542b06ede3c585f23770de112fca99d1519cce815d657a716f3.jpg)

![Image](images/113a0dfbebb4a0f77dacdb19580b567c705824570a55f9f9980d71171aead41f.jpg)

![Image](images/7b2f88e1af7012f46dffe283f2391ae244ececde7ea78c89167d1a9e52fb3f67.jpg)

![Image](images/dddc8510394e4ce6a970640ae2bcf823e7dd5e94ce61900783cea2293633c88d.jpg)

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

![Image](images/f86cba3cc2062f9b45346b2672a8d52fd40d82daa1df395693eefcd7f4ca0601.jpg)

![Image](images/849412172ab15ece1a1588391bb2c1588ff4213edf0aac8f63531f81ae631f46.jpg)

<div style="text-align: center;">Figure 4: Some images extracted from the proposed dataset. Notice the high variability of the samples.</div>

---

#### 5. 基线——2D关节点估计

在本节中，我们介绍了一种基于深度学习的彩色图像2D手部姿态估计基线系统。具体流程如下：首先使用普通相机拍摄彩色图像。该图像会被送入经过训练的Faster R-CNN网络[^12]以检测场景中的手部。该网络会输出手部的边界框以及代表检测置信度的分数。若该分数高于0.85，则利用估算出的边界框从图像中提取手部区域。手部区域裁剪后会调整大小为$224 \times 224$像素，再输入定制的ResNet50[^13]网络。通过该网络的回归模式，我们能够估算出图像平面上每个关节点的X和Y坐标。整体流程如图5所示。

![Image](images/ce4dfedde262668e296af8e6d2c0db174ae4413270f9f40ddcab2a91b09d098c.jpg)

<div style="text-align: center;">Figure 5: Overall pipeline of the proposed method. First, an image is captured using a regular web camera. This image is forwarded to a hand detector in order to obtain the bounding box of the hand. Then, the hand is cropped and passed to the hand pose regressor to finally estimate the position of the hand joints.</div>

需要注意的是，该流程中有两个关键阶段：手部检测（边界框估计）和手部姿态回归阶段。这两个子系统将在接下来的小节中详细介绍。

最后值得指出的是，该流程能在保持合理计算成本的同时，提供精度极高的手部姿态估计结果。这些

---

特性使得该系统能够满足实时运行的要求。更多结果与实验细节详见第5.3节。

#### 5.1. 检测手部位置

所提出的手部检测模块基于最初在[^12]中介绍的工作。我们采用在ImageNet数据集[^14]上预训练的VGG-16网络[^15]作为特征提取的骨干网络。此外，由于我们仅关注手部检测，因此修改了最后几层的输出数量。

![Image](images/e220d94d9cc4234f67fa7ffc65e9fdb62dc877e1b3ff2c7b5142cf2f481143ed.jpg)

![Image](images/5719d7dbbdec35d6393c332a62ba72b2cc0798c9a49199e21a530154ee33a2da.jpg)

![Image](images/da924104c64de33b940d4883553c5186ed1f1de10a9295b344f67cab514259c7.jpg)

<div style="text-align: center;">Figure 6: The Faster R-CNN network is able to accurately estimate the bounding box of a certain object, in our case, the network was trained for detecting and localizing hands.</div>

我们使用不同的手部数据集训练了Faster R-CNN网络。首先，我们使用了[^16]中介绍的数据集。该数据集包含从多个公共图像数据源收集的手部图像，具体来源如[^16]所列。我们增加了训练图像的数量（达到1000张），为此创建了另外两个数据来源：第一组额外图像来自所提出的数据集；第二组图像则通过Google Images获取，我们使用关键词“hands”和“close-up”来下载包含手部特写的图像。最后，我们还手动标注了这些额外图像。

在不同数据集上训练该系统的主要原因是为了避免

---

对特定环境的过拟合，从而导致泛化能力不足。

图6展示了Faster R-CNN网络训练完成后，在一些测试图像上生成的估计边界框。

#### 5.2. 手部姿态回归

手部姿态是通过改进的ResNet50来计算的。ResNet50深度学习架构目前是图像识别领域最先进的CNN，在ImageNet验证集上的top-1误差仅为22.85。该架构引入了“残差”项，即将输入图像与卷积块的输出图像相加。这样一来，卷积块的输出可以被视为输入图像，其中由滤波器激活的特征会被突出显示。相比之下，普通卷积神经网络中卷积层的输出仅仅是神经元的激活结果；如果输入图像的某个区域没有触发神经元，输出层的激活值就会较低。当网络在反向传播阶段更新权重时，未激活区域的数值会导致权重更新量极低，甚至完全不更新，进而造成学习停滞。这一问题被称为梯度消失问题。“残差”项的引入有助于解决梯度消失问题，从而能够设计出更深的网络架构。目前，在ImageNet挑战赛的多个任务中表现最佳的模型正是基于ResNet提出的“残差”方法。

如前所述，我们使用的是ResNet50版本（50层）。我们的ResNet50模型以$224 \times 224$像素的彩色图像作为输入。神经元数量

---

最后一个全连接层的神经元数量根据我们的需求进行了调整。由于需要定位20个关节，每个关节对应X和Y两个坐标值，因此输出神经元的数量被设定为40。我们还把默认的softmax激活函数替换为了线性激活函数。

该架构是利用所提出数据集的训练部分从头开始训练的。首先，利用边界框提取手部图像，随后相应地重新映射并归一化关节标注值，使其范围介于0到1之间。网络在生成的数据集上训练了200次迭代，最终训练损失达到<tel:0.0000607571>，测试损失为0.00031547。测试损失被用作提前停止训练的依据。我们选择的优化器是Adam，学习率为0.001，所使用的损失函数为均方误差。

### 5.3. 实验

在本节中，我们首先描述实验设置，然后展示所提出流程的实验结果。

该流水线的所有计时数据和结果均源自以下测试环境：搭载英特尔酷睿i5-3570处理器、8 GiB金士顿HyperX 1600 MHz CL10 DDR3内存，主板为华硕P8H77-M PRO（英特尔H77芯片组）。主存储器采用希捷台式机硬盘。此外，系统中还配备了用于训练和推理的NVIDIA GTX1080显卡。

完整流水线的执行帧率为23帧/秒，不过只需对代码稍作调整，便可轻松达到30–35帧/秒。例如，在NVIDIA GTX 1080上，手部检测每帧耗时15毫秒。在当前系统中，手部检测器会对每一帧都进行运算。

---

不过，若采用简单的运动估计技术，就能沿序列追踪边界框，只有当系统检测到较大位移时才会重新计算手部位置，从而缩短计算时间。

我们选用的框架是Caffe 0.14-RC3和Keras 1.2.0，以TensorFlow 0.12为后端，运行在Ubuntu 14.04.02系统上。两者均使用CMake 2.8.7、g++ 4.8.2、CUDA 8.0以及cuDNN v5.0编译而成。

如前所述，我们的流水线中包含两个可训练子系统。手部检测器和手部姿态估计器均在我们的数据集上进行了训练。

为了验证我们的基准方法，我们使用测试集对完整流水线进行了处理，结果显示输入手部图像$(224 \times 224)$上的验证平均绝对误差为0.06939%，相当于10个像素的误差。

图7展示了几种手部姿态下的系统性能。最后一张图像展示了一个因手部检测错误导致的失败案例。由于该方法属于依赖性的两阶段系统，如果第一步未能检测出完整的手部，第二阶段系统就会基于错误数据尝试回归关节位置，因此极有可能失败。

## 6. 结论

无论是二维还是三维环境下的手部检测都是极具挑战性的问题。在本研究中，我们提出了一种新颖的多视角手部姿态数据集，其中包含超过20,500张标注好的手部彩色图像。这些标注不仅包括从不同视角拍摄的图像，还有边界框以及手部每个关节的二维和三维位置信息。

---

![Image](images/11c3f036ab435e3f9c8b1b48b658a0c04d340d81142a8c17657a4634847f1873.jpg)

<div style="text-align: center;">Figure 7: Our proposed system is able to accurately estimate hand joints position on a variety of hand poses. Nonetheless, it presents some failure cases as shown in the last image.</div>

此外，我们还提出了一种简单却精确的实时二维手部姿态估计架构，可作为基准方法。该数据集可为未来手部检测相关研究提供基准。数据集可在$^{1}$下载。

在此基础上，我们计划设计一种新的鲁棒三维手部姿态估计架构，该系统不仅能输出图像平面内的x和y坐标，还能给出x、y、z坐标以及手掌在现实世界坐标系中的法向量。

---

## 致谢

本研究得到了西班牙政府TIN2016-76515-R资助的COMBAHO项目支持，该项目由欧盟区域发展基金提供资助。

## 参考文献

[^1]: F. Gomez-Donoso, M. Cazorla, A. Garcia-Garcia, J. Garcia-Rodriguez, Automatic schaeffer's gestures recognition system, Expert Systems 33 (5) (2016) 480–488, eXSY-Nov-15-262.R1. doi:10.1111/exsy.12160.

URL <http://dx.doi.org/10.1111/exsy.12160>

[^2]: M. Cazorla, F. Gomez-Donoso, D. Viejo, J. Martinez-Gomez, Recognizing schaeffer's gestures for robot interaction, Vol. 9422 of Lecture Notes in Computer Science, Springer, 2015. doi:10.1007/978-3-319-24598-0.

URL <http://dx.doi.org/10.1007/978-3-319-24598-0>

[^3]: S. Marcel, O. Bernier, Hand posture recognition in a body-face centered space, in: Proceedings of the International Gesture Workshop on Gesture-Based Communication in Human-Computer Interaction, GW '99, Springer-Verlag, London, UK, UK, 1999, pp. 97–100.

## [^4]: S. Marcel, O. Bernier, J. E. Viallet, D. Collobert, Hand gesture recognition using input-output hidden markov models, in: Proceedings Fourth IEEE International Conference on Automatic Face and Gesture Recognition (Cat. No. PR00580), 2000, pp. 456–461. doi:10.1109/AFGR.2000.840674

---

[^5]: P. K. Pisharady, P. Vadakkepat, L. A. Poh, Hand Posture and Face Recognition Using Fuzzy-Rough Approach, Springer Singapore, Singapore, 2014, pp. 63–80.

[^6]: T. Grzejszczak, M. Kawulok, A. Galuszka, Hand landmarks detection and localization in color images, Multimedia Tools and Applications 75 (23) (2016) 16363–16387. doi:10.1007/s11042-015-2934-5.

[^7]: J. Molina, J. A. Pajuelo, M. Escudero-Viñolo, J. Bescós, J. M. Martínez, A natural and synthetic corpus for benchmarking of hand gesture recognition systems, Machine Vision and Applications 25 (4) (2014) 943–954. doi:10.1007/s00138-013-0576-z.

[^8]: J. Tompson, M. Stein, Y. Lecun, K. Perlin, Real-time continuous pose recovery of human hands using convolutional networks, ACM Transactions on Graphics 33.

[^9]: Q. D. Smedt, H. Wannous, J.-P. Vandeborre, J. Guerry, B. L. Saux, D. Filliat, 3D Hand Gesture Recognition Using a Depth and Skeletal Dataset, in: I. Pratikakis, F. Dupont, M. Ovsjanikov (Eds.), Eurographics Workshop on 3D Object Retrieval, The Eurographics Association, 2017. doi:10.2312/3dor.20171049.

## [^10]: J. Weng, P. Cohen, M. Herniou, Camera calibration with distortion models and accuracy evaluation, IEEE Transactions on Pattern Analysis and Machine Intelligence 14 (10) (1992) 965–980. doi:10.1109/34.159901

---

[^11]: Z. Zhang, A flexible new technique for camera calibration, IEEE Trans. Pattern Anal. Mach. Intell. 22 (11) (2000) 1330–1334. doi:10.1109/34.888718.

[^12]: S. Ren, K. He, R. Girshick, J. Sun, Faster r-cnn: Towards real-time object detection with region proposal networks, in: C. Cortes, N. D. Lawrence, D. D. Lee, M. Sugiyama, R. Garnett (Eds.), Advances in Neural Information Processing Systems 28, Curran Associates, Inc., 2015, pp. 91–99.

[^13]: K. He, X. Zhang, S. Ren, J. Sun, Deep residual learning for image recognition, in: The IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016.

[^14]: K. Simonyan, A. Zisserman, Very deep convolutional networks for large-scale image recognition, CoRR abs/1409.1556.

[^15]: O. Russakovsky, J. Deng, H. Su, J. Krause, S. Satheesh, S. Ma, Z. Huang, A. Karpathy, A. Khosla, M. Bernstein, A. C. Berg, L. Fei-Fei, ImageNet Large Scale Visual Recognition Challenge, International Journal of Computer Vision (IJCV) 115 (3) (2015) 211–252. doi:10.1007/s11263-015-0816-y.

[^16]: A. Mittal, A. Zisserman, P. H. S. Torr, Hand detection using multiple proposals, in: British Machine Vision Conference, 2011.
