
# 基于三维卷积神经网络的单深度图像高效鲁棒手部姿态估计

葛柳浩 $^{1}$、梁辉 $^{1,2,*}$、袁俊松 $^{1,\dagger}$、丹尼尔·塔尔曼 $^{1}$

$^{1}$南洋理工大学跨学科研究生院媒体创新研究所

$^{2}$新加坡科技研究局高性能计算研究所

<mailto:ge0001ao@ntu.edu.sg>、<mailto:lianghui@ihpc.a-star.edu.sg>、{jsyuan, danielthalmann}@ntu.edu.sg

## 摘要

我们提出了一种简单却高效的方法，利用三维卷积神经网络（3D CNN）从单张深度图像中实时估计手部姿态。由于缺少三维空间信息，2D CNN提取的基于图像的特征无法直接用于三维手部姿态估计。我们提出的3D CNN以手部深度图像的三维体素表示作为输入，能够捕捉输入数据的三维空间结构，并单次运算即可精准回归出完整的三维手部姿态。为了使3D CNN对手部尺寸和全局方向的变化具有鲁棒性，我们对训练数据进行了三维数据增强处理。实验表明，我们提出的基于3D CNN的方法在两个具有挑战性的手部姿态数据集上的表现优于现有最先进方法，且效率极高：在配备单块GPU的标准计算机上，该方法的运行帧率超过215帧/秒。

### 1. 引言

在虚拟现实和增强现实应用中，多关节手部姿态估计是人机交互的核心技术之一，因为该技术为用户提供了与虚拟环境和物体进行交互的自然方式。随着消费级深度相机的问世，精准的实时三维手部姿态估计近年来受到了大量研究关注 [^7] [^10] [^15] [^18] [^21] [^30] [^32] [^34] [^39]。然而，由于手部姿态变化大、手部运动维度高、深度图像中存在严重的自遮挡现象以及手指间的相似性，要实现高效且鲁棒的姿态估计仍然颇具挑战性。

近年来，许多手部姿态估计研究取得了良好成果，这得益于卷积神经网络（CNN）的成功应用 [^4] [^17] [^23] [^34] [^40] [^42]

![Image](images/b2aa53d08657f5d7a19d8b9a60949506030013499810ec001e8b2586acdf2a4e.jpg)

<div style="text-align: center;">Figure 1: Overview of our proposed 3D CNN based hand pose estimation method. We generate the 3D volumetric representation of hand with projective D-TSDF from the 3D point cloud. 3D CNN is trained in an end-to-end manner to map the 3D volumetric representation to 3D hand joint relative locations in the 3D volume.</div>

此外，大型手部姿态数据集的可用性也促进了这类方法的发展[^28] [^30] [^34]。这些方法直接将深度图像作为输入，送入二维卷积神经网络，以输出三维关节位置[^16] [^17] [^23] [^40]、手部模型参数[^42]或热图[^34]。不过我们认为，由于缺少三维空间信息，二维卷积神经网络提取的基于图像的特征并不直接适用于三维手部姿态估计。例如，在[^17]中，二维卷积神经网络的初始结果非常差，需要通过反馈循环迭代优化，才能融入生成模型提供的三维信息。Ge等人[^4]则通过将深度图像投影到三个视角，并应用多视角卷积神经网络来回归这三个视角的热图，从而更好地利用深度线索。然而，多视角卷积神经网络仍无法充分利用深度图像中的三维空间信息，因为从三维到二维的投影会丢失部分信息。虽然增加视角数量可能会提升性能，但使用更多视角也会提高计算复杂度。

---

在这项工作中，我们提出了一种基于三维卷积神经网络的手部姿态估计方法，该方法能够捕捉输入数据的三维空间结构，并一次性准确回归完整的三维手部姿态，如图1所示。具体来说，首先从深度图像中分割出人手；将手部的三维点云编码为存储有投影定向截断有符号距离函数（D-TSDF）[^24]值的三维体素，随后将其送入包含三层三维卷积层和三层全连接层的三维卷积神经网络。该网络的输出是一组三维体素内的三维手部关节相对位置。通过简单的坐标变换，我们最终就能得到相机坐标系下的三维手部关节位置。据我们所知，这是首篇将此类三维卷积神经网络应用于手部姿态估计的研究，旨在高效且稳健地理解三维空间中的手部姿态结构并推断三维手部关节位置。

与以往基于卷积神经网络的手部姿态估计方法相比，我们提出的基于三维卷积神经网络的方法具有以下优势：

- 我们提出的三维卷积神经网络能够从三维体素表示中有效学习用于手部姿态估计的三维特征。与那些从二维特征回归三维关节位置的二维卷积神经网络[^5] [^16] [^17] [^40]相比，三维卷积神经网络无需采用任何迭代优化过程，就能直接从三维特征中一次性回归三维关节位置，且能实现更优的估计性能。

- 我们提出的方法在单块GPU上的运行速度可超过215帧/秒。我们为三维卷积神经网络设计了相对较浅的架构，仅包含三层三维卷积层和三层全连接层。此外，全连接层的参数数量也较为适中。因此，我们提出的方法能够满足手部姿态估计的实时性要求。

- 我们提出的方法对手部尺寸和全局方向的变化具有鲁棒性，因为我们会对训练集进行三维数据增强。与传统的数据增强方式（即对二维图像进行二维变换）不同，我们提出的三维数据增强是对三维点云进行三维变换，从而能更好地丰富三维空间中的训练数据。

### 2. 相关工作

我们在两个具有挑战性的手部姿态数据集上评估了所提出的方法：MSRA数据集[^28]和NYU数据集[^34]。大量实验表明，我们提出的基于3D CNN的3D手部姿态估计方法在这两个数据集上的表现均优于现有最先进的方法，在配备单块GPU的标准计算机上，其运行速度可超过215帧/秒。

根据深度图像的手部姿态估计方法可分为模型驱动方法、数据驱动方法和混合方法。模型驱动方法通过最小化人工设计的代价函数，将显式可变形手部模型拟合到深度图像上。常用的优化方法包括粒子群优化（PSO）[^18]、迭代最近点算法（ICP）[^29]以及它们的组合[^20]。3D手部模型可由线性混合蒙皮（LBS）模型[^1] [^8] [^36]、高斯混合模型[^25] [^26]等来表示。部分模型需要定义用户特定的参数和运动约束。由于这类方法通常依赖时间信息，因此对初始化十分敏感；一旦前几帧的估计结果不准确，估计误差就会不断累积。

数据驱动方法从训练数据中学习深度图像到手部姿态的映射关系。受人体姿态估计领域开创性工作的启发[^22]，[^7] [^9] [^28] [^30] [^31] [^37] [^39]，研究人员采用随机森林及其变体作为判别模型。但由于受限于人工设计的特征，基于随机森林的方法很难在手姿估计任务中超越当前基于CNN的方法。我们的工作与基于CNN的数据驱动方法相关。Tompson等人[^34]率先提出利用CNN来预测表示深度图像中2D关节位置概率分布的热图。Ge等人[^4]对该方法进行了改进，通过预测多视角下的热图来更好地利用深度信息。Oberweger等人[^17]训练了一个反馈循环，其中包含用于初始姿态估计的判别网络、用于姿态合成的生成网络以及用于优化姿态估计的姿态更新网络。Zhou等人[^42]采用CNN来预测手部模型参数而非关节位置。Sinha等人[^23]从CNN中提取激活特征，借助矩阵补全算法来同步最近邻样本中的手部姿态。Ye等人[^40]提出了一种结合层次化混合方法的空间注意力网络用于手部姿态估计。所有这些方法都使用2D CNN中的2D滤波器来提取2D特征，这类特征缺乏3D空间信息，因此难以将2D特征映射到3D关节位置。在本研究中，我们将2D CNN升级为3D CNN，使其能够理解3D空间信息并提取用于3D手部姿态估计的3D特征。

混合方法结合了基于数据驱动的逐帧重新初始化策略与模型驱动方法[^21] [^32]。这类方法通常用于手部跟踪，因为它们利用时间信息来获得平滑的结果。不过在本研究中，我们专注于利用单张深度图像进行手部姿态估计，且不使用任何时间信息，该方法可用于混合手部跟踪方法中可靠的重新初始化环节。

---

![Image](images/8905fb9f9aaff6a5b8ab8811fafde200fa2c1fc3013d3cb3bd3a5d31272169ab.jpg)

![Image](images/ccf67cabf16e96ae6031520dd600bf26a15d68ba0d30b545dccee18e1bfa9f84.jpg)

<div style="text-align: center;">Figure 2: Visualization of TSDF volumes. For comparison, we visualize accurate TSDF and projective D-TSDF. We only visualize voxels of which values are less than 1 and larger than -1 by using color maps shown in the color bar. Positive value (red or yellow) indicates that the voxel is in front of the visible surface; and negative value (blue or cyan) indicates that the voxel is behind the visible surface. The volume resolution is  $32 \times 32 \times 32$. This figure is best viewed in color.</div>

3D CNN（三维卷积神经网络）已成功应用于视频和动态手势识别任务中，这类任务将时间视为第三个维度。3D CNN还用于从深度图像、CAD模型等三维数据中提取三维特征。3D ShapeNets利用卷积深度信念网络对三维形状进行建模，从而学习强大的三维特征。Qi等人指出，即便输入体积分辨率较低，通过应用子体积监督和各向异性探测技术，3D CNN仍能实现较高的物体分类准确率。Song和Xiao提出利用3D CNN在RGB-D图像中进行三维物体检测。Maturana和Scherer提出了VoxNet——一种能够处理激光雷达数据、RGB-D图像及CAD数据的3D CNN，用于物体识别；他们还将该3D CNN应用于着陆区检测。Yumer和Mitra则提议利用3D CNN从CAD模型中学习形变流，以实现三维形状变形。尽管这些研究在其各自领域取得了顶尖成果，但均未涉及需要实时从单张深度图像中定位一组关节点三维坐标的三维手姿估计问题。
[^6]: [^35]: [^13]: [^38]: [^19]: [^24]: [^12]: [^11]: [^41]:

### 3. 方法论

我们的方法能够从单张深度图像中估计三维手姿。具体而言，该任务的输入是包含手部的深度图像，输出则是表示三维手姿的K个手部关节点在三维空间中的位置。设这K个目标手部关节点的位置为$\boldsymbol{\Phi} = \{\phi_k\}_{k=1}^K \in \Lambda$，其中$\Lambda$属于$3 \times K$维的手部关节空间。

手部深度图像会通过体素表示进行编码，以此作为我们提出的3D CNN的输入。通过3D CNN中的三维卷积和三维池化操作，可从体素表示中提取三维特征，进而用于回归三维体积内手部关节的相对位置。为使3D CNN能够适应不同大小的手部及不同的全局朝向，我们还会对训练数据进行三维数据增强处理。

#### 3.1. 体素表示

编码体素表示的目的是从深度图像中实时生成尽可能还原手部真实情况的三维体积。这些三维体积将被送入3D CNN，用于学习三维特征并回归三维手部关节位置。

如果输入的是三维CAD模型且其中的三维信息完全已知，我们就可以用二进制网格来表示三维空间中已被占据和未被占据的体素。但在我们的研究问题中，输入的是2.5D深度图像，它仅能捕捉到相机视角下的可见表面点。3D ShapeNets [^38]将体素分为自由空间、表面和遮挡空间三类。为了进行形状分类，会估算遮挡空间内的占据概率分布。但该方法需要遍历多个相机视角以及不同的可能形状，因此很难实现实时性能。KinectFusion [^14]采用基于截断有符号距离函数（TSDF）的体素表示方法，用于借助深度相机进行环境建模与定位。在精确的TSDF中，每个体素会存储该体素中心到最近表面点的距离：若体素位于可见表面前方，该值为正；若体素被可见表面遮挡，该值为负。该距离会在截断距离处被截断，并归一化到-1到1之间。不过，计算精确的TSDF十分耗时，因为它需要为三维空间中的所有体素在所有表面点中查找最近点。出于实时性考虑，应采用投影式TSDF，即仅在相机坐标系下的视线上查找最近点，这种方式可在GPU上高效并行计算。由于投影式TSDF是精确TSDF的近似，因此部分信息在投影式TSDF中可能会存在偏差或丢失。为了在体素表示中编码更多信息，本研究采用了[^24]中提出的投影式方向TSDF（D-TSDF），它用三维向量取代了欧几里得距离。

---

![Image](images/056766c1ee06bded3bb3bc7179ea7c85d3b63b57a65ba8fe2225a8a4d10d1aa8.jpg)

<div style="text-align: center;">Figure 3: (a) Architecture of our proposed 3D convolutional neural network. The network contains three 3D convolutional layers and three fully-connected layers. (b) Visualization of extracted 3D features output from layers L1, L2 and L3 during the forward pass in a fully trained CNN model. For illustration purpose, we only draw 16, 32, 48 feature volumes output from L1, L2, L3, respectively. For feature volumes output from L1, we only draw voxels of which values are larger than a threshold. Voxels with large values are shown in bright color, and voxels with small values are shown in dark color. This figure is best viewed in color.</div>

[dx, dy, dz]表示相机坐标系中三个方向上的距离。

图2展示了不同手部姿势下精确TSDF体素与投影式D-TSDF体素的示例。可以看出，在精确TSDF中，从由点云构成的可见表面向自由空间移动时TSDF值会增大，而向遮挡空间移动时TSDF值会减小。但在投影式D-TSDF中，三个方向的值会沿对应方向连续变化，且在表面前方保持正值，在表面后方为负值。第4.1节中的实验将证明，投影式D-TSDF不仅计算效率高，还能提升估计精度。

为了创建包含$M \times M \times M$个体素的三维体素空间，我们首先为三维手部点构建轴对齐边界框（AABB）。AABB是最小的边界框，其x、y、z轴分别与相机坐标系的x、y、z轴对齐。三维体素空间的中心设定为AABB的中心，其各面与AABB的各面平行。体素的边长设定为：

 $$ l_{v o x e l}=\operatorname*{m a x}\left\{l_{x},l_{y},l_{z}\right\}/M, $$

其中$l_x$、$l_y$、$l_z$分别为AABB的三条边长；M为体素分辨率数值。截断距离设定为$3 \times l_{voxel}$。我们需要在体素分辨率M与计算成本之间取得平衡：若体素分辨率过高，会导致计算耗时且占用大量内存；若体素分辨率过低，体素表示就无法为三维手部姿态估计提供充足的信息。在本研究中，我们将体素分辨率M设为32。第4.1节中的部分实验将证明，兼顾估计精度与计算效率时，这一分辨率适用于三维手部姿态估计。

#### 3.2. 网络架构

我们提出的3D CNN以三个投影型D-TSDF体素作为输入，输出一个包含$3 \times K$个元素的列向量，这些元素对应体素内K个3D手部关节的相对位置。图3a展示了我们提出的网络架构。对于这三层3D卷积层，其核大小分别为$5^3$、$3^3$和$3^3$，步长均为1且无需填充。前两层3D卷积层之后是核大小为$2^3$、步长为2且无需填充的3D最大池化层。经过3D卷积层的特征提取后，通过三个全连接层将3D特征映射到3D手部关节位置。在前两个全连接层中，我们加入了丢弃率为0.5的Dropout层，以防止神经网络过拟合[^27]。

我们将训练样本表示为$(X_n, \Phi_n)$，其中$X_n$为深度图像，$\Phi_n$为相机坐标系下对应的关节位置，即$n = 1, \ldots, N$。深度图像$X_n$会按照第3.1节的描述被转换为体素表示$V_n$。真实标签$\Phi_n$会被转换到体素坐标系下的坐标，并且归一化到0到1之间。

---

归一化后的结果记为$Y_{n}$：

 $$ \mathbf{Y}_{n}=\mathbf{T}_{c a m e r a}^{v o l u m e}\left(\mathbf{\Phi}_{n}\right)\big/\left(M\cdot l_{v o x e l}\right)+0.5, $$

其中$\mathbf{T}_{\text{volume}}(\cdot)$是一种坐标变换操作，用于将相机坐标系下的关节位置$\Phi$转换为体素坐标系下的位置。由于体素坐标系的原点位于3D体素的中心，因此体素内的坐标值除以体素的边长后会在-0.5到0.5之间（假设所有关节都位于3D体素内部）。因此我们在公式2中加上0.5，以使$\mathbf{Y}_n$中的数值介于0到1之间。在训练阶段，我们使用随机梯度下降（SGD）算法来最小化以下目标函数：

 $$ \boldsymbol{w}^{*}=\arg\min_{\boldsymbol{w}}\sum_{n=1}^{N}\left\|\boldsymbol{Y}_{n}-\mathcal{F}\left(\boldsymbol{V}_{n},\boldsymbol{w}\right)\right\|^{2}, $$

其中w表示网络权重，$\mathcal{F}$代表3D CNN回归器。

在图3b中，我们展示了使用训练完成的3D CNN模型在前向传播过程中从L1、L2和L3层输出的部分提取出的3D特征。对应的输入是图1中展示的示例。可以看出，从低层到高层，特征体素的大小逐渐减小，特征也愈发抽象。对于每一层而言，不同部位（如指尖和手掌）在不同的3D特征体素中被放大显示。此外，第三卷积层（L3）的感受野大小为20，能够覆盖3D体素中的较大区域。凭借如此大的感受野，网络能够捕捉3D手部关节的空间依赖关系，并以隐式方式嵌入3D关节约束，无需借助任何显式的手部模型或后处理步骤。

#### 3.3. 3D数据增强

手部姿态估计面临的一个挑战是手部姿态在全局方向和尺寸上存在较大差异。为了使3D CNN模型对不同方向和尺寸具有鲁棒性，我们提出对训练数据进行3D数据增强。与现有的2D图像数据增强方法不同，我们的方法可以直接在3D空间中旋转和拉伸手部点云。

我们首先按照拉伸因子$s_x$、$s_y$和$s_z$，分别沿相机坐标系的x、y、z轴对点云进行拉伸。随后，点云会围绕相机坐标系的x、y、z轴旋转，旋转角度分别为$\theta_x$、$\theta_y$和$\theta_z$。对于一个三维点p，经过拉伸和旋转后，该点会被变换为$p'$：

 $$ \begin{aligned}\boldsymbol{p}^{\prime}&=\mathcal{R}\cdot\mathcal{S}\cdot\boldsymbol{p}\\\mathcal{R}&=\mathcal{R}_{x}\left(\theta_{x}\right)\cdot\mathcal{R}_{y}\left(\theta_{y}\right)\cdot\mathcal{R}_{z}\left(\theta_{z}\right)\\\mathcal{S}&=\operatorname{Diag}\left(s_{x},s_{y},s_{z}\right),\end{aligned} $$

其中 $\mathcal{R}_x$、$\mathcal{R}_y$ 和 $\mathcal{R}_z$ 分别是绕 x、y、z 轴的 $3\times3$ 旋转矩阵；Diag $(s_x, s_y, s_z)$ 是一个 $3\times3$ 对角

![Image](images/b3dbf810675dc52b591d6cb1422db81331d9a76ad290296a6133bd72d56c048e.jpg)

<div style="text-align: center;">Figure 4: An example of 3D data augmentation. Top left: original point cloud, ground truth and TSDF volume. Bottom left: point cloud, ground truth and TSDF volume after 3D stretching. Top right: point cloud, ground truth and TSDF volume after 3D rotation. Bottom right: point cloud, ground truth and TSDF volume after 3D stretching and rotation. For illustration purpose, we only draw the projective D-TSDF volume on z direction.</div>

矩阵，其对角线元素从左上角开始依次为 $s_{x}$、$s_{y}$ 和 $s_{z}$。图 4 展示了 3D 数据增强的一个示例。对 3D 手部点云及相应的 ground truth 执行拉伸和旋转。从变换后的点云生成 TSDF 体素。

在本工作中，通过对原始训练样本进行随机拉伸和旋转来生成变换后的训练集。旋转角 $\theta_x$ 和 $\theta_y$ 从区间 $[-45^\circ, 45^\circ]$ 中均匀随机选取。旋转角 $\theta_z$ 从区间 $[-90^\circ, 90^\circ]$ 中均匀随机选取。拉伸因子 $s_x$ 和 $s_y$ 从区间 $[1/1.3, 1.3]$ 中按对数均匀随机选取。由于影响 TSDF 体素的是相对大小而非绝对大小，我们可以将拉伸因子 $s_z$ 设为 1。在训练阶段，原始训练集和变换后的训练集都用于训练。

### 4. 实验

我们在两个公开的手部姿态数据集上评估所提出的方法：MSRA数据集[^28]和NYU数据集[^34]。实验中采用了三种指标来评估手部姿态估计性能。第一个指标是所有测试帧上的关节平均误差距离；第二个指标是最差关节误差低于阈值[^33]的有效帧所占比例，这是一种较为严格的衡量标准；第三个指标是误差在阈值[^21]范围内的关节所占比例。

所有实验均在一台配备两颗

---

![Image](images/9557e11c5ab63d1cb3c23ab32a138e47496d3d7e11611513197ec327bf8e866d.jpg)

![Image](images/1ca762fc03b57823eec8538ed96f9989ff31146da0a250bdc1a2c268eadf00c3.jpg)

![Image](images/94473431724ab5ef49e3a08be21a00c4a922fcbdae650f189a15a9c9d0c01a1c.jpg)

<div style="text-align: center;">Figure 5: Self-comparison of different methods on MSRA dataset [^28]. Left: the impact of different volume resolutions on the proportion of good frames. Middle: the impact of different TSDF types and data augmentation on the proportion of good frames. Right: the impact of different TSDF types and data augmentation on the per-joint mean error distance (R:root, T:tip).</div>

Intel Core i7 5930K 3.50GHz处理器、64GB内存以及Nvidia Quadro K5200 GPU的计算机上进行。3D CNN模型是在Torch7 [^3]框架内实现的。在网络训练参数方面，我们设定批量大小为16，学习率为0.01，动量为0.9，权重衰减为0.0005。网络共训练50个周期。使用第3.2节提出的带三维数据增强的3D CNN，在MSRA数据集上的训练时间约为12小时，在NYU数据集上约为13小时。

#### 4.1. MSRA手部姿态数据集

MSRA手部姿态数据集[^28]包含9名受试者，每名受试者有17种手势，每种手势约包含500帧数据。实验中，我们选取8名受试者的数据用于训练，剩余1名受试者的数据用于测试。该实验针对所有受试者重复进行9次。每帧数据的真实标签包含21个三维手部关节位置，即每个手指4个关节，手腕1个关节。

自我对比实验方面，我们测试了不同的体素分辨率以及不同类型的TSDF，同时评估了三维数据增强的效果。实验结果如图5所示。

我们测试了不同分辨率（16、32和64）的投影式D-TSDF体素。需要注意的是，当体素分辨率为$16 \times 16 \times 16$或$64 \times 64 \times 64$时，网络架构与图3a中的有所不同。我们根据不同的体素分辨率调整了架构，并在补充材料中进行了说明。由于使用$64 \times 64 \times 64$分辨率训练网络会占用大量内存，因此在本实验中，我们仅针对MSRA数据集的一个小子集，在不进行数据增强的情况下，训练并测试这三种不同分辨率下的网络。如图5（左）所示，$16 \times 16 \times 16$分辨率的估计精度略低于$32 \times 32 \times 32$和$64 \times 64 \times 64$分辨率。后两种分辨率的估计精度几乎相同。不过，用$64 \times 64 \times 64$分辨率计算TSDF体素会更耗时且更耗费内存。因此，$32 \times 32 \times 32$分辨率最适合手部姿态估计。这一结果还表明我们的方法对相对较低的体素分辨率具有鲁棒性，因为当分辨率值为16时，估计精度并未显著下降。

我们在整个MSRA数据集上，以$32 \times 32 \times 32$的体素分辨率评估了不同TSDF类型和数据增强对估计精度的影响。需要注意的是，在本实验中，当输入体素为仅含一个通道的精确/投影式TSDF时，需对图3a中的网络架构参数进行调整。我们在补充材料中给出了调整后的架构。从图5（中图和右图）可以看出，精确TSDF和投影式TSDF的估计精度几乎相同，这表明使用精确TSDF的近似形式来加速计算并不会降低手部姿态估计的精度。此外，投影式D-TSDF的估计精度优于投影式TSDF。在训练阶段使用3D数据增强时，估计精度还会进一步提升。就实时性能而言，在同一GPU上生成精确TSDF、投影式TSDF和投影式D-TSDF的平均计算时间分别为30.2毫秒、1.9毫秒和2.9毫秒。因此，综合考虑估计精度和实时性能，投影式D-TSDF整体优于精确TSDF和投影式TSDF。在后续实验中，我们将采用分辨率为$32 \times 32 \times 32$的投影式D-TSDF作为网络输入，并应用3D数据增强进行训练。

与最先进方法的比较 我们将基于3D CNN的手部姿态估计方法与四种最先进的方法进行比较：分层回归方法[^28]、协同过滤方法[^2]、多视角CNN

---

![Image](images/aac456c8898656c4f762f2a9fa531678ade66cd3595032363ad727b8fac1aac5.jpg)

![Image](images/1cd981f57b8655fbf1b2a9c8c809087e052bbd8c035a06325af4df6853908271.jpg)

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

<div style="text-align: center;">Figure 6: Comparison with state-of-the-art methods [^28] [^2] [^4] [^37] on MSRA dataset [^28]. Left: the proportion of good frames over different error thresholds. Middle & right: the mean error distance over different yaw and pitch viewpoint angles with respect to the camera frame. Some curves are cropped from corresponding figures reported in [^28] [^2] [^4] [^37].</div>

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

![Image](images/54a5c0bfb8cd9680aa0f7b72833f9707256e5122c4bfbbf79c0b6483956144a9.jpg)

<div style="text-align: center;">Figure 7: Comparison with state-of-the-art methods [^34] [^16] [^17] [^42] [^23] [^40] on NYU dataset [^34]. Left: the proportion of good frames over different error thresholds. Right: the proportion of joints within different error thresholds. Some curves are cropped from corresponding figures reported in [^16] [^17] [^42] [^23] [^40].</div>

为基础的方法[^4]以及基于局部表面法线的方法[^37]，均在整个MSRA数据集上进行测试。需要注意的是，由于分层回归方法[^28]已被证明优于[^22]、[^30]和[^39]中的方法，因此我们间接将我们的方法与[^22]、[^30]和[^39]进行了比较。

如图6所示，我们基于3D CNN的方法在MSRA数据集上的表现大幅优于现有最先进方法。不同误差阈值下优质帧的比例如图6（左）所示。当误差阈值大于10毫米时，我们的方法取得了最佳性能。例如，当误差阈值为30毫米时，我们方法的优质帧比例分别比[^4]、[^37]（姿态分类）、[^28]和[^2]中的方法高出约10%、12%、25%和30%。当误差阈值为5毫米时，我们方法的优质帧比例略低于[^28]和[^2]中的方法。这可能是由于体素的边长相对较大所致，当体积分辨率为$32 \times 32 \times 32$时，平均边长达到5.5毫米。在图6（中和右）中，我们将不同偏航角和俯仰角下的平均误差距离与[^28]、[^4]中的方法进行了比较。可以看出，在不同视角下，我们方法的平均误差分别比[^28]和[^4]中的方法小约5.5毫米和3毫米。对于俯仰角变化，我们方法的表现更稳定，其标准差仅为0.48毫米，而[^28]和[^4]中的方法分别为0.79毫米和0.64毫米。

#### 4.2. NYU手部姿态数据集

NYU手部姿态数据集[^34]包含72,757个训练帧和8,252个测试帧，涵盖了连续的手部姿态。每帧的 Ground Truth 包含36个3D手部关节位置。在我们的实验中，3D CNN被训练用于估计14个手部关节的子集，这一做法与[^34]、[^17]中的先前研究一致。由于NYU数据集提供的原始深度图像中包含人体和背景，我们采用随机决策森林（RDF）[^22]从深度图像中分割出手部，该方法与[^34]中的描述类似。

我们首先将基于3D CNN的手部姿态估计算法

---

![Image](images/1087b8db5401d59986b39b66494a4bc447559539a4062a74bf9504808de593d4.jpg)

<div style="text-align: center;">Figure 8: Qualitative results for MSRA dataset [^28] and NYU dataset [^34]. We compare our 3D CNN based method (in the second line) with the multi-view CNN based method in [^4] (in the first line). The ground truth hand joint locations are presented in the last line. We show hand joint locations on the depth image. Different hand joints and bones are visualized using different colors. This figure is best viewed in color.</div>

与五种最先进方法在NYU数据集上进行比较：基于2D CNN的热图回归方法[^34]、结合先验知识的基于2D CNN的直接回归方法[^16]、采用反馈机制的基于2D CNN的回归方法[^17]、基于2D CNN的手部模型参数回归方法[^42]以及基于深度特征的矩阵补全方法[^23]。此次评估针对14个手部关节进行。如图7（左）所示，在所有误差阈值下，我们方法的表现均显著优于这五种最先进方法。例如，当误差阈值在20毫米到40毫米之间时，我们方法的优质帧比例比[^17]中的方法高出约10%。

为了与基于空间注意力网络的分层混合方法[^40]进行公平比较，我们按照[^40]中的实验设置（去掉除拇指根关节外的掌心关节），在11个手部关节子集上评估不同误差阈值下的关节比例。如图7（右）所示，在所有误差阈值下，我们方法的表现都优于[^16]、[^17]和[^40]中的方法。例如，误差阈值在20毫米以内时，我们方法的关节比例比[^40]中的方法高出约10%。

#### 4.3. 运行时间与定性结果

我们方法使用投影式D-TSDF，并以$32 \times 32 \times 32$分辨率的体积作为网络输入时，其运行时间平均为4.6毫秒，其中投影式D-TSDF体积生成耗时2.9毫秒，3D CNN前向传播耗时1.5毫秒，坐标转换耗时0.18毫秒。因此，我们的方法能够以超过215帧/秒的速度实时运行。体积生成和3D CNN前向传播过程均在GPU上执行；而将CNN输出值转换为相机坐标系下3D坐标的坐标转换操作则在CPU上完成。此外，测试时我们的3D CNN模型会占用约500 MB的GPU内存，而[^4]中的多视角CNN在测试时则占用约1.5 GB的GPU内存。

定性结果 图8展示了MSRA数据集和NYU数据集的一些定性结果。可以看出，与[^4]中的基于多视角CNN的方法相比，我们基于3D CNN的方法能够更好地利用深度信息，提供更精确的估计。

### 5. 结论

本文提出了一种新颖的基于3D CNN的手部姿态估计方法。通过采用投影式D-TSDF，我们将手部深度图像编码为3D体积表示，再将其输入到3D CNN中。实验表明，将3D体积直接映射为3D关节位置的3D CNN模型易于训练。我们还在训练数据上进行了3D数据增强，以使3D CNN能够适应不同的手部尺寸和全局朝向。实验结果证明，我们提出的基于3D CNN的方法在两个具有挑战性的数据集上均能实现实时3D手部姿态估计的顶尖性能。

致谢：本研究得到了BeingTogether中心的支持，该中心是南洋理工大学与北卡罗来纳大学教堂山分校的合作项目。BeingTogether中心由新加坡总理公署下属的国家研究基金会通过其“新加坡国际研究中心资助计划”提供支持。本研究还部分得到了新加坡教育部学术研究基金第2层级项目MOE2015-T2-2-114的支持。

---

## 参考文献

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

[^2]: C. Choi, A. Sinha, J. Hee Choi, S. Jang, and K. Ramani. A collaborative filtering approach to real-time hand pose estimation. In ICCV, 2015.

[^3]: R. Collobert, K. Kavukcuoglu, and C. Farabet. Torch7: A matlab-like environment for machine learning. In BigLearn, NIPS Workshop, 2011.

[^4]: L. Ge, H. Liang, J. Yuan, and D. Thalmann. Robust 3D hand pose estimation in single depth images: from single-view CNN to multi-view CNNs. In CVPR, 2016.

[^5]: A. Haque, B. Peng, Z. Luo, A. Alahi, S. Yeung, and F.-F. Li. Towards viewpoint invariant 3D human pose estimation. In ECCV, 2016.

[^6]: S. Ji, W. Xu, M. Yang, and K. Yu. 3D convolutional neural networks for human action recognition. IEEE Transactions on Pattern Analysis and Machine Intelligence, 35(1):221–231, 2013.

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

[^8]: S. Khamis, J. Taylor, J. Shotton, C. Keskin, S. Izadi, and A. Fitzgibbon. Learning an efficient model of hand shape variation from depth images. In CVPR, 2015.

[^9]: H. Liang, J. Yuan, and D. Thalmann. Parsing the hand in depth images. IEEE Transactions on Multimedia, 16(5):1241–1253, 2014.

[^10]: H. Liang, J. Yuan, and D. Thalmann. Resolving ambiguous hand pose predictions by exploiting part correlations. IEEE Transactions on Circuits and Systems for Video Technology, 25(7):1125–1139, 2015.

[^11]: D. Maturana and S. Scherer. 3D convolutional neural networks for landing zone detection from lidar. In ICRA, 2015.

[^12]: D. Maturana and S. Scherer. Voxnet: A 3D convolutional neural network for real-time object recognition. In IROS, 2015.

[^13]: P. Molchanov, X. Yang, S. Gupta, K. Kim, S. Tyree, and J. Kautz. Online detection and classification of dynamic hand gestures with recurrent 3D convolutional neural network. In CVPR, 2016.

[^14]: R. A. Newcombe, S. Izadi, O. Hilliges, D. Molyneaux, D. Kim, A. J. Davison, P. Kohli, J. Shotton, S. Hodges, and A. Fitzgibbon. Kinectfusion: Real-time dense surface mapping and tracking. In ISMAR, 2011.

[^15]: M. Oberweger, G. Riegler, P. Wohlhart, and V. Lepetit. Efficiently creating 3d training data for fine-hand pose estimation. In CVPR, 2016.

[^16]: M. Oberweger, P. Wohlhart, and V. Lepetit. Hands deep in deep learning for hand pose estimation. In CVWW, 2015.

[^17]: M. Oberweger, P. Wohlhart, and V. Lepetit. Training a feedback loop for hand pose estimation. In ICCV, 2015.

[^18]: I. Oikonomidis, N. Kyriazis, and A. Argyros. Efficient model-based 3D tracking of hand articulations using Kinect. In BMVC, 2011.

[^19]: C. R. Qi, H. Su, M. Niessner, A. Dai, M. Yan, and L. J. Guibas. Volumetric and multi-view CNNs for object classification on 3D data. In CVPR, 2016.

[^20]: C. Qian, X. Sun, Y. Wei, X. Tang, and J. Sun. Realtime and robust hand tracking from depth. In CVPR, 2014.

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

[^22]: J. Shotton, A. Fitzgibbon, M. Cook, T. Sharp, M. Finocchio, R. Moore, A. Kipman, and A. Blake. Real-time human pose recognition in parts from a single depth image. In CVPR, 2011.

[^23]: A. Sinha, C. Choi, and K. Ramani. Deephand: Robust hand pose estimation by completing a matrix with deep features. In CVPR, 2016.

[^24]: S. Song and J. Xiao. Deep Sliding Shapes for amodal 3D object detection in RGB-D images. In CVPR, 2016.

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

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

[^27]: N. Srivastava, G. Hinton, A. Krizhevsky, I. Sutskever, and R. Salakhutdinov. Dropout: A simple way to prevent neural networks from overfitting. Journal of Machine Learning Research, 15:1929–1958, 2014.

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

[^29]: A. Tagliasacchi, M. Schroeder, A. Tkach, S. Bouaziz, M. Botsch, and M. Pauly. Robust articulated-icp for real-time hand tracking. Computer Graphics Forum, 34(5), 2015.

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

[^31]: D. Tang, J. Taylor, P. Kohli, C. Keskin, T.-K. Kim, and J. Shotton. Opening the black box: Hierarchical sampling optimization for estimating human hand pose. In ICCV, 2015.

[^32]: 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. ACM Transactions on Graphics, 35(4):143, 2016.

[^33]: J. Taylor, J. Shotton, T. Sharp, and A. Fitzgibbon. The vitruian manifold: Inferring dense correspondences for one-shot human pose estimation. In CVPR, 2012.

[^34]: J. Tompson, M. Stein, Y. Lecun, and K. Perlin. Real-time continuous pose recovery of human hands using convolutional networks. ACM Transactions on Graphics, 33(5):169, 2014.

## [^35]: D. Tran, L. D. Bourdev, R. Fergus, L. Torresani, and M. Paluri. Learning spatiotemporal features with 3D convolutional networks. In ICCV, 2015

---

[^36]: D. Tzionas, L. Ballan, A. Srikantha, P. Aponte, M. Pollefeys, and J. Gall. Capturing hands in action using discriminative salient points and physics simulation. International Journal of Computer Vision, 118(2):172–193, 2016.

[^37]: C. Wan, A. Yao, and L. Van Gool. Direction matters: hand pose estimation from local surface normals. In ECCV, 2016.

[^38]: Z. Wu, S. Song, A. Khosla, F. Yu, L. Zhang, X. Tang, and J. Xiao. 3D shapenets: A deep representation for volumetric shapes. In CVPR, 2015.

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

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

[^41]: M. E. Yumer and N. J. Mitra. Learning semantic deformation flows with 3D convolutional networks. In ECCV, 2016.

[^42]: X. Zhou, Q. Wan, W. Zhang, X. Xue, and Y. Wei. Model-based deep hand pose estimation. In IJCAI, 2016.
