
# 用于3D手部姿态估计的点对点回归PointNet

葛柳浩 $^{1}$ $^{ID}$、任周 $^{2}$ 和袁俊松 $^{3(\boxtimes)}$

$^{1}$ 新加坡南洋理工大学跨学科研究生院媒体创新研究所，新加坡 <mailto:ge0001ao@e.ntu.edu.sg>

$^{2}$ Snap Inc.，美国加利福尼亚州威尼斯市场街64号  

<mailto:zhou.ren@snapchat.com>

$^{3}$ 美国纽约州立大学布法罗分校计算机科学与工程系，纽约州布法罗市 <mailto:jsyuan@buffalo.edu>

摘要：基于卷积神经网络（CNN）的深度相机3D手部姿态估计方法通常以2D深度图像为输入，直接回归整体的3D手部姿态。与这些方法不同，我们提出的点对点回归PointNet直接以3D点云为输入，输出逐点的估计结果，即点云上的热图和单位向量场，用以表示点云中每个点到手部关节的接近程度和方向。这些逐点估计结果通过加权融合来推断3D关节位置。为了更好地捕捉点云中的3D空间信息，我们为PointNet采用了带中间监督的堆叠网络架构，并对其进行端到端训练。实验表明，在三个具有挑战性的手部姿态数据集上，我们的方法与最先进的方法相比能够取得优异的结果。

关键词：3D手部姿态估计

## 1 引言

在虚拟现实和增强现实应用中，实现准确且实时的3D手部姿态估计是人机交互的关键技术，它允许人们直接与虚拟物体进行手部交互。尽管近期基于深度相机的3D手部姿态估计取得了进展 [^11] [^13] [^17] [^22] [^23] [^35] [^36] [^38] [^43] [^45] [^51] [^54]，但由于3D手部姿态的高维性和巨大变化性、手指之间的高度相似性、严重的自遮挡现象以及噪声较大的深度图像，要获得准确且鲁棒的结果仍然颇具挑战性。

---

近期提出的大多数3D手部姿态估计方法[4,5,10-12,19,22,45,53]都基于卷积神经网络（CNN），在大型手部姿态数据集上取得了显著的性能提升 [^35] [^36] [^43] [^55]。许多方法直接利用CNN回归手部关节的3D坐标或手部姿态参数 [^4] [^5] [^7] [^9] [^11] [^12] [^19] [^21] [^22] [^45] [^56]。然而，从输入表示到3D手部姿态的直接映射具有高度非线性且难以学习，这使得这类直接回归方法难以达到高精度 [^42]。另一种方法是生成一组热图，用以表示关节位置在2D图像平面上的概率分布 [^8] [^10] [^43]，该方法已在2D人体姿态估计中成功应用 [^18] [^49]。不过，将2D热图转换为3D关节位置并非易事 [^24] [^30] [^41]。一种直接的解决方案是利用3D CNN生成体素热图，但这种方式计算效率较低。Wan等人 [^46] 最近提出了一种密集像素级估计方法；除了生成2D热图外，该方法还会为2D图像的每个像素估算手部关节的3D偏移量。不过，该方法存在两个局限性：首先，由于它从2D图像中逐像素回归3D估计值，因此可能无法充分利用深度图像中的3D空间信息；其次，为2D图像的背景像素生成3D估计值，可能会干扰深度神经网络对手部区域有效特征的学习。

为解决这些问题，我们旨在直接从3D点云中回归逐点估计值，因为深度图像本质上是由可见物体表面的一组3D点构成的。我们利用PointNet [^25] [^27] 直接从3D点云中学习特征。与 [^46] 的方法相比，我们的方法能够以更高效的方式充分利用深度图像中的3D空间信息，并以自然的方式专注于学习手部点云的有效特征，因为我们网络的输入和输出形式均为手部点云。此外，这种点对点的回归方案还使我们能够将单层PointNet模块 [^27] 扩展为如 [^18] 中所述的堆叠式网络架构，从而进一步提升估计精度。

如图1所示，我们提出了一种用于单张深度图像中3D手部姿态估计的点对点回归方法。首先从深度图像中分割出手部，并将其转换为一组3D点；随后将经过下采样和归一化的3D点输入到采用双层堆叠网络架构的分层PointNet [^27] 中。网络的输出为3D点云上的热图和单位向量场，分别反映了3D点到目标手部关节的接近程度与方向。根据网络输出推断出手部关节的逐点偏移量，并据此投票确定3D手部关节的位置；再通过后续处理步骤消除其他限制因素，进而进一步提升估计精度。

我们的主要贡献总结如下：

- 我们建议直接将三维点云作为网络输入，并在输入点云上生成热图和单位向量场，分别反映各点到手部关节的接近程度及方向。借助这种点对点回归网络，我们的方法能够更有效地利用这些信息。

---

![Image](images/aee7cd2fc719f4936577e646c3b00c081dcbe1b0f52a083d05ba151b5c2c05e9.jpg)

<div style="text-align: center;">Fig. 1. Overview of our proposed point-to-point regression method for 3D hand pose estimation from single depth images. We propose to directly take N sampled and normalized 3D hand points as network input and output a set of heat-maps as well as unit vector fields on the input point cloud, reflecting the closeness and directions from input points to J hand joints, respectively. From the network outputs, we can infer point-wise offsets to hand joints and estimate the 3D hand pose with post-processing. We apply the hierarchical PointNet [^27] with two-stacked network architecture which feeds the output of one module as input to the next. For illustration purpose, we only visualize the heat-map, unit vector field and offset field of one hand joint. 'C.S.' stands for coordinate system; 'MLP' stands for multi-layer perceptron network.</div>

该方法能够充分利用深度图像中的三维空间信息，并捕捉三维点云的局部结构，从而实现精确的三维手部姿态估计。

- 我们提出将堆叠式网络架构[^18]应用于分层PointNet[^27]以实现点对点回归；据我们所知，这是首个此类堆叠式PointNet架构。与[^18]类似，这种堆叠式PointNet架构将一个模块的输出作为下一个模块的输入，能够对三维点云进行反复的自底向上和自顶向下推理，实验表明其能提升估计精度。

- 我们分析了点对点回归方法的局限性，并提出当点对点回归方法得到的候选估计结果之间的差异过大时，可采用直接回归方法的结果作为替代。实验表明，直接回归方法与点对点回归方法具有互补性，二者结合可进一步提升估计精度。

我们在三个极具挑战性的手部姿态数据集上开展了大量实验：NYU数据集[^43]、ICVL数据集[^36]以及MSRA数据集[^35]。在这三个数据集上的实验结果显示，我们提出的点对点回归方法性能优异，其运行速度可达41.8帧/秒，网络模型大小仅为17.2 MB。

## 2 相关工作

手部姿态估计。基于深度图像的三维手部姿态估计方法可分为三类：生成式方法、判别式方法以及混合方法。

---

生成式方法旨在将可变形的三维手部模型拟合到由输入深度图像转换而来的三维点云上[^1] [^14] [^23] [^28] [^31] [^40] [^44]。判别式方法则利用训练数据学习从输入深度图像的表征到三维手部姿态表征的映射关系[4,5,10–13,19,35,36,51]。混合方法将基于训练数据学习的判别式模型用于姿态估计，再结合生成式手部模型进行姿态优化[^22] [^32] [^37] [^38] [^43] [^45] [^53]。

我们的工作与基于深度神经网络的3D手部姿态估计研究相关[2,4,5,10–12,19,22,45,53]。Tompson等人[^43]首次提出将CNN应用于3D手部姿态估计。他们利用CNN生成表示深度图像中手部关节2D概率分布的热图，再通过估算出的热图及对应的深度值，借助基于模型的逆向运动学来恢复3D手部姿态。Ge等人[^10]通过将深度图像投影到多个视角，并从多视角热图中估算3D手部姿态，解决了2D热图中缺乏3D信息的问题[^43]。Oberweger等人[^19] [^21]则直接从深度图像中回归手部关节的3D坐标或3D手部姿态的低维嵌入。他们还提出了一种反馈循环[^22]，用于迭代优化3D手部姿态。Zhou等人[^56]提出直接从深度图像中回归手部模型参数。Ge等人[^11]将手部深度图像编码为3D体素，并利用3D CNN从3D体素中直接回归3D手部姿态。Guo等人[^12]提出了一种区域集成网络，可直接从深度图像中回归3D手部姿态。Chen等人[^4]通过迭代优化改进了[^12]。尽管许多3D手部姿态估计方法都直接回归3D手部姿态，但Wan等人[^46]最近提出了一种密集像素级估计方法，该方法采用沙漏网络生成2D和3D热图以及3D单位向量场，进而可推断出3D手部关节位置。我们的方法受到这项工作的启发[^46]，但本质上与之不同。首先，[^46]中提出的方法以2D图像为输入，而我们的方法以3D点云作为网络输入，因此能够更好地利用深度图像中的3D空间信息。其次，[^46]中提出的网络会对原始图像中的每个像素输出估算结果，而这些像素中可能包含大量无用的背景区域；而我们提出的点对点回归网络会对手部点云中的每个点输出估算结果，因此能够专注于从手部点云而非背景区域中学习有效的特征。

3D深度学习。3D数据通常不适合直接由处理2D图像的传统CNN进行处理。[^3] [^10] [^26] [^34]中的方法会将3D点投影到多个视角的2D图像上，再用多视角CNN进行处理。[^11] [^16] [^26] [^33] [^50]中的方法会将3D点栅格化为3D体素，再应用3D CNN提取特征。但3D CNN的时间和空间复杂度较高。随后提出了基于八叉树的3D CNN[^29] [^48]，用于在高分辨率的3D体积上进行高效计算，但仍受限于庞大的输入数据量。

PointNet[^25] [^27]是一种近期提出的方法，它可直接以无序的点集为输入，并能够在该点集上学习特征。

---

在基础的PointNet [^25]中，每个输入点都通过多层感知机（MLP）被映射为特征向量，且这些权重在所有输入点之间共享。随后，向量最大值运算会将各点的特征聚合为一个对输入点排列顺序具有不变性的全局特征。提取出的全局特征以及各点特征可应用于多种任务。但基础的PointNet [^25]无法捕捉点云的局部结构。为解决这一问题，人们提出了分层PointNet [^27]，以分层方式提取局部特征。关于分层PointNet的详细内容，请参阅[^27]。深度Kd网络 [^15]与PointNet类似，也是采用Kd树结构直接处理点云数据。尽管这些方法在三维分类和分割任务中表现优异，但尚无一种方法能以点对点回归的方式应用于三维手部姿态估计。

## 3 方法论

我们提出的方法旨在从单张深度图像中估计三维手部姿态。输入为包含手部的深度图像，输出则是相机坐标系（C.S.）下的三维手部关节位置集合$\boldsymbol{\Phi}^{cam} = \{\phi_j^{cam}\}_{j=1}^J \in \boldsymbol{\Lambda}$，其中J表示手部关节的数量，$\boldsymbol{\Lambda}$即为$3 \times J$维的手部关节空间。

### 3.1 点云预处理

首先利用深度相机的内部参数将手部深度图像转换为一组三维点。随后对该三维点集进行下采样，得到N个点。为使我们的方法能适应各种手部朝向，我们会根据三维点云创建一个有向包围盒（OBB），并将三维点转换到OBB坐标系中，如图1所示。通过减去点云的质心并除以OBB的最大边长$L_{obb}$，可将三维点的坐标归一化到-0.5到0.5之间。我们将在OBB坐标系下经过下采样和归一化的三维点集记为$\mathcal{P}^{obb} = \{\boldsymbol{p}_i^{obb}\}_{i=1}^N$。在我们的实现中，采样点的数量N设为1024。由于我们在OBB坐标系下处理点集，为简便起见，后续章节中点和关节位置的符号将省略上标‘obb’。

### 3.2 基于点云的三维手部姿态表示方法

目前大多数基于CNN的3D手部姿态估计方法，都是直接回归手部关节的3D坐标[^4] [^11] [^12] [^22] [^45]，或是手部姿态参数[^5] [^19] [^21] [^56]。与需要学习高度非线性映射的直接回归方法不同，我们的方法旨在从点云中生成手部关节位置的逐点估计值，从而能更好地利用局部特征。这种逐点估计值可以定义为各点到手部关节位置的偏移量。不过，对点集中的所有点都进行偏移估计是不必要的，还可能导致每个点的投票结果出现噪声。

---

因此，我们仅对手部关节附近的邻近点进行偏移估计，如图2所示。我们将目标偏移场V中、对于点$\boldsymbol{p}_i$（$i = 1, \cdots, N$）以及真实手部关节位置$\phi_j^*$（$j = 1, \cdots, J$）所对应的元素定义为：

 $$ V\left(\boldsymbol{p}_{i},\boldsymbol{\phi}_{j}^{*}\right)=\left\{\begin{array}{c l}{\boldsymbol{\phi}_{j}^{*}-\boldsymbol{p}_{i}}&{\boldsymbol{p}_{i}\in\mathcal{P}_{K}\left(\boldsymbol{\phi}_{j}^{*}\right)\mathrm{~a n d~}\left\|\boldsymbol{\phi}_{j}^{*}-\boldsymbol{p}_{i}\right\|\leq r,}\\ {\mathbf{0}}&{\mathrm{o t h e r w i s e;}}\end{array}\right. $$

其中，$\mathcal{P}_K(\phi_j^*)$ 表示点集 $\phi_j^*$ 中真实手部关节位置 $\mathcal{P}^{obb}$ 的 K 个最近邻点（KNN）；r 为最近邻搜索时球体的最大半径；在我们的实现中，将 K 设为 64，r 设为 80 mm/L $_{obb}$。我们结合 KNN 与球体查询来进行最近邻搜索，以确保邻近点的数量和邻近区域的范围都是可控的。

![Image](images/442b8b49dbc9ca28f4820c7756e762b259de3cec0c5264a809939b8f95171910.jpg)

<div style="text-align: center;">Fig. 2. An illustration of the ground truth of the point cloud based representation for 3D hand pose. We visualize the neighboring points, offset field, heat-map and unit vector field on 3D point cloud for the root joint of the thumb finger. For illustration proposed, we enlarge the region of neighboring points of the hand joint location on the right of each complete point cloud.</div>

然而，由于偏移量的差异较大，训练能够直接生成偏移场的神经网络十分困难。与 [^46] 类似，我们将目标偏移场 V 分解为反映各点到手部关节位置接近程度的热图 H：

 $$ H\left(\boldsymbol{p}_{i},\boldsymbol{\phi}_{j}^{*}\right)=\left\{\begin{matrix}{1-\left\|\phi_{j}^{*}-\boldsymbol{p}_{i}\right\|/r}&{\boldsymbol{p}_{i}\in\mathcal{P}_{K}\left(\boldsymbol{\phi}_{j}^{*}\right)\mathrm{~a n d~}\left\|\phi_{j}^{*}-\boldsymbol{p}_{i}\right\|\leq r,}\\ {0}&{\mathrm{o t h e r w i s e};}\\ \end{matrix}\right. $$

以及反映各点到手部关节位置方向的单位向量场 U：

 $$ U\left(\boldsymbol{p}_{i},\boldsymbol{\phi}_{j}^{*}\right)=\left\{\begin{array}{c l}{\left(\phi_{j}^{*}-\boldsymbol{p}_{i}\right)/\left\|\phi_{j}^{*}-\boldsymbol{p}_{i}\right\|}&{\boldsymbol{p}_{i}\in\mathcal{P}_{K}\left(\phi_{j}^{*}\right)\mathrm{~a n d~}\left\|\phi_{j}^{*}-\boldsymbol{p}_{i}\right\|\leq r,}\\ {\mathbf{0}}&{\mathrm{o t h e r w i s e.}}\\ \end{array}\right. $$

与在二维图像上生成热图和单位向量场的 [^46] 不同，我们提出的方法是在三维点云上生成热图和单位向量场，如图 2 所示，这样能更好地利用其中的三维空间信息。

---

深度图像中同样包含此类信息。此外，在具有大面积空白背景区域的二维图像上生成热图和单位向量场，可能会干扰神经网络对手部区域有效特征的学习。虽然通过在损失函数中乘以二值手部掩码可以缓解这一问题，但我们的方法无需使用任何掩码，就能自然地专注于学习手部位点云的有效特征，因为输出的热图和单位向量场是建立在手部位点云之上的。

### 3.3 网络架构

在本研究中，我们利用分层 PointNet [^27] 来学习三维点云上的热图和单位向量场。与 [^27] 中用于点集分割的分层 PointNet 不同，我们提出的点对点回归网络采用双层堆叠的网络架构，以便更好地捕捉三维点云中的三维空间信息。

我们首先描述单个分层PointNet模块的网络架构。如图3所示，网络的输入是一组具有$C_{in}$维输入特征的d维坐标，即通过对点云中查询点的邻近点拟合局部平面来近似得到的3D表面法线（在本研究中对应$d=3$和$C_{in}=3$）。与[^27]中提出的集合分割网络架构类似，我们的网络单个模块通过三个集合抽象层从点云中提取全局特征向量，再通过三个特征传播层将全局特征传递到原始点的特征中，如图3所示。在特征传播层，我们利用$N_l$个点中插值点的邻近点，为$N_{l-1}$个点插值特征[^27]。$C_{l}$个点的插值后的$N_{l-1}$维特征会与集合抽象层中的对应点特征拼接，随后通过逐点MLP映射为$C_{l-1}$维特征，且该MLP的权重在所有点上共享($l=1,2,3;N_0=N,C_0=C_{out},N_3=1$)。热图和单位向量场是通过逐点MLP根据原始点集的点特征生成的。在我们的实现中，将$N=1024,N_1=512,N_2=128,C_1=128,C_2=256$和$C_{out}=128$设为相应参数。

![Image](images/d408ac8d4526960295506a89e7a8dba5020b7cbc4d9f1cb3b5083fa3e5b426e5.jpg)

<div style="text-align: center;">Fig. 3. An illustration of a single network module which is based on the hierarchical PointNet [^27]. Here, ‘SA’ stands for point set abstraction layers; ‘FP’ stands for feature propagation layers; ‘MLP’ stands for multi-layer perceptron network. The dotted shortcuts denote skip links for feature concatenation.</div>

---

受用于人体姿态估计的堆叠式沙漏网络 [^18] 的启发，我们将两个层次化 PointNet 模块端到端地堆叠起来，以提升网络的性能。这两个层次化 PointNet 模块具有相同的网络结构和相同的超参数，但输入层的超参数除外。如图 4 所示，第一个模块输出的热图和单位向量场与第一个模块的输入和输出点特征相拼接，作为第二个层次化 PointNet 模块的输入。出于实时性考虑，我们仅堆叠两个层次化 PointNet 模块。

在训练这两个堆叠的分层PointNet时，我们采用了中间监督机制。每个训练样本的损失函数定义如下：

 $$ \mathcal{L}=\sum_{t=1}^{T}\sum_{j=1}^{J}\sum_{i=1}^{N}\bigg[\Big(\hat{H}_{i j}^{(t)}-H\left(\boldsymbol{p}_{i},\boldsymbol{\phi}_{j}^{*}\right)\Big)^{2}+\Big\|\hat{\boldsymbol{U}}_{i j}^{(t)}-\boldsymbol{U}\left(\boldsymbol{p}_{i},\boldsymbol{\phi}_{j}^{*}\right)\Big\|^{2}\bigg], $$

其中T表示堆叠的网络模块数量，在本研究中$T = 2$；$\hat{H}_{ij}^{(t)}$和$\hat{U}_{ij}^{(t)}$分别是第t个网络模块所估算出的热图和单位向量场中的元素；$H(\boldsymbol{p}_i, \boldsymbol{\phi}_j^*)$和$\boldsymbol{U}(\boldsymbol{p}_i, \boldsymbol{\phi}_j^*)$则是公式2和3中定义的真实热图和真实单位向量场中的元素。

![Image](images/7932c4680f2a2fecb2f00bf3ecafb37ab3316146557ea6a967a68a1ba78a32ea.jpg)

<div style="text-align: center;">Fig. 4. An illustration of the two-stacked hierarchical PointNet architecture with intermediate supervision. The input feature dimension of the 2nd network module is  $C_{in2} = C_{in1} + C_{out} + 4J$.</div>

### 3.4 手部姿态推断

测试阶段，我们根据最后一个分层PointNet模块所估算出的热图$\hat{H}$和单位向量场$\hat{U}$来推断3D手部姿态。根据公式1–3中对偏移场、热图和单位向量场的定义，我们可以推导出从点$\hat{V}_{ij}$到关节$p_i$的偏移向量$\hat{\phi}_j$：

 $$ \hat{V}_{i j}=r\cdot\left(1-\hat{H}_{i j}\right)\cdot\hat{U}_{i j}. $$

根据式 1，仅使用手部关节邻近点的偏移向量进行手部姿态推理，这些邻近点可由估计的热图得出，该热图反映了各点与手部关节的接近程度。我们将

---

第 j 个手部关节的估计热图记为 $H_j$，即 $\hat{H}$ 的第 j 列。我们将第 j 个手部关节的邻近点确定为热图 $\hat{H}_j$ 中 M 个最大取值对应的点。这些点在点集中的索引记为 $\{i_m\}_{m=1}^M$。手部关节位置 $\hat{\phi}_j$ 可由对应的偏移向量 $\hat{V}_{i_m j}$ 和三维点 $\boldsymbol{p}_{i_m}$（$m=1,\cdots,M$）通过加权平均简单地推断得到：

 $$ \begin{array}{r}{\hat{\phi}_{j}=\sum_{m=1}^{M}w_{m}\left(\hat{V}_{i_{m}j}+p_{i_{m}}\right)/\sum_{m=1}^{M}w_{m},}\end{array} $$

其中 $w_m$ 为候选估计的权重。在我们的实现中，将权重 $w_m$ 设为对应的热图值 $\hat{H}_{i_{mj}}$，并将 M 设为 25。

### 3.5 后处理

我们的点对点回归方法存在两个问题。第一个问题是，当M个候选估计值在3D空间中的差异较大时，估算结果并不可靠，如图5(a)所示。这通常是由于手部关节附近缺少深度数据导致的。第二个问题是，尽管神经网络可能会在输出的热图和单位向量场中学习到关节约束关系，但估算出的3D手部姿态并没有明确的约束条件。

![Image](images/930a9f7500b3a0ccf489d8e539449c19e2f002ac0cb0220586c34b27d656e6cc.jpg)

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

![Image](images/f1dd040f81660f7e5ce4667491465c64b764c62ffadd2522b785520183dc13a5.jpg)

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

<div style="text-align: center;">Fig. 5. (a) A failure case in which the candidate estimations of the middle fingertip can not converge to a small local region in 3D space due to missing depth data near the hand joint. The ground truth hand joint locations are plotted in this figure. (b) An illustration of the two-stacked hierarchical PointNet architecture in which we add three fully-connected layers to directly regress the 3D coordinates of hand joints from the global feature extracted by the second hierarchical PointNet module.</div>

为了解决第一个问题，当M个候选估计值的差异超过阈值时，我们会用直接回归方法的结果来替换该估计结果。直接回归方法可直接预测手部关节的3D坐标，因此不存在上述问题。为了节省推理时间，我们没有为直接的手部姿态回归单独训练一个PointNet模型，而是如图5(b)所示，在预训练的双层层次化PointNet中添加三个全连接层来进行直接的手部姿态回归。这三个全连接层被训练用于直接回归3D坐标。

---

这些3D坐标来自第二个层次化PointNet模块提取的特征。M个候选估计值的差异定义为各候选估计值中x、y、z坐标的标准差之和。在我们的实现中，将差异阈值设为$7.5 \, \text{mm}/L_{obb}$。第4.1节的实验结果将表明：尽管只有少量手部关节估计值需要被直接回归结果替换，但这种替换策略仍能在一定程度上提升估计精度。

为了解决第二个问题，我们显式地将估计的3D手部姿态 $\hat{\mathbf{P}}$ 约束在通过主成分分析（PCA）学习得到的低维空间中。通过对训练数据集中的真实3D关节位置执行PCA，我们可以得到主成分 $\mathbf{E} = [\mathbf{e}_1, \mathbf{e}_2, \cdots, \mathbf{e}_H] (H < 3J)$ 以及经验均值 $\mathbf{u}$。受约束的3D手部姿态可通过以下公式进行计算：

 $$ \hat{\mathbf{\Phi}}_{c o n s}=\mathbf{E}\cdot\mathbf{E}^{T}\cdot\left(\hat{\mathbf{\Phi}}-\mathbf{\Sigma}\mathbf{u}\right)+\mathbf{\Sigma}\mathbf{u}. $$

在我们的实现中，将主成分的数量H设为30。第4.1节的实验结果将表明，加入PCA约束后精度会有小幅提升，这说明神经网络可能已经在输出的热图和单位向量场中学会了关节约束关系。

最后，将归一化OBB坐标系下的估计3D手部关节位置转换回相机坐标系下的关节位置$\hat{\Phi}^{cam}$。

## 4 实验

我们在三个公开的手部姿态数据集上评估所提出的方法：NYU数据集[^43]、ICVL数据集[^36]和MSRA数据集[^35]。NYU数据集[^43]包含72,757帧训练样本和8,252帧测试样本，每帧数据的真实标签包含36个手部关节的3D位置。遵循[^11]、[^22]、[^43]中的先前研究做法，我们仅对14个手部关节进行估计与评估。由于该数据集中的帧是包含人体和背景的原始深度图像，我们使用单个沙漏网络[^18]来检测2D手部关节位置，并利用对应的深度信息进行手部分割。由于分割后的图像中手臂长度各异，我们对训练数据增加了随机手臂长度的增强处理。ICVL数据集[^36]包含22,059帧训练数据和1,596帧测试数据，每帧数据的真实标签包含16个手部关节的3D位置。我们采用与NYU数据集相同的方法进行手部分割，训练数据也会随机增加不同的手臂长度和拉伸因子以增强多样性。MSRA数据集[^35]包含9名受试者，每名受试者有17种手势，每种手势约有500帧带分割的手部深度图像，每帧数据的真实标签包含21个手部关节的3D位置。实验中，我们选取8名受试者的数据用于训练，剩余1名受试者的数据用于测试，这一过程对所有受试者重复9次；该数据集未进行任何数据增强处理。

我们采用两种指标来评估3D手部姿态估计方法的性能。第一种指标是在所有测试帧上各关节的平均误差距离，以及所有测试帧上所有关节的总体平均误差距离。

---

第二种指标是“良好帧”所占的比例，其中所谓“良好帧”是指最差关节误差低于阈值[^39]的帧。这一指标的要求更为严格。

我们在一台配备两颗英特尔酷睿i7 5930K处理器、64GB内存和Nvidia TITAN Xp GPU的工作站上训练并评估所提出的深度神经网络模型。这些深度神经网络模型是基于PyTorch框架实现的。在训练过程中，我们采用Adam [^14]优化器，初始学习率为0.001，批量大小为32，动量参数为0.5，权重衰减系数为0.0005。每训练30个周期后，学习率会除以10。为防止过拟合，训练会在60个周期后停止。

![Image](images/cd4b3d67611ca554103078fdaf2892ef8463b3951e7196ad94cd17986aaa391b.jpg)

![Image](images/40641ceb2f29a66607233accc1f8a5f3ceb0d7625f3e21f4cca5b8d2473a5b87.jpg)

![Image](images/087e5fdfa06fe88d4251ce10c01018a2183632f0cf5ff2202c5dc36be13d9a50.jpg)

<div style="text-align: center;">Fig. 6. Self-comparison of different methods on NYU dataset [^43]. Left: the impacts of the stacked network architecture and different network outputs on the proportion of good frames. Middle: the impacts of our point-to-point regression method and post-processing methods on the proportion of good frames. We use two-stacked network for point-to-point regression in this figure. Right: the impact of point-to-point regression method, stacked network architecture and post-processing methods on the per-joint mean error distance (R: root, T: tip). 'P2P Reg.' stands for point-to-point regression. The overall mean error distances are shown in parentheses.</div>

<div style="text-align: center;">Table 1. The impacts of the number of candidate estimations  M and weighted average on the overall mean error distance on NYU dataset [^43].</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'># Candidate estimations M</td><td style='text-align: center; word-wrap: break-word;'>5</td><td style='text-align: center; word-wrap: break-word;'>15</td><td style='text-align: center; word-wrap: break-word;'>25</td><td style='text-align: center; word-wrap: break-word;'>35</td><td style='text-align: center; word-wrap: break-word;'>45</td><td style='text-align: center; word-wrap: break-word;'>55</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Unweighted average</td><td style='text-align: center; word-wrap: break-word;'>9.50 mm</td><td style='text-align: center; word-wrap: break-word;'>9.47 mm</td><td style='text-align: center; word-wrap: break-word;'>9.48 mm</td><td style='text-align: center; word-wrap: break-word;'>9.57 mm</td><td style='text-align: center; word-wrap: break-word;'>9.70 mm</td><td style='text-align: center; word-wrap: break-word;'>9.84 mm</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Weighted average</td><td style='text-align: center; word-wrap: break-word;'>9.50 mm</td><td style='text-align: center; word-wrap: break-word;'>9.47 mm</td><td style='text-align: center; word-wrap: break-word;'>9.46 mm</td><td style='text-align: center; word-wrap: break-word;'>9.53 mm</td><td style='text-align: center; word-wrap: break-word;'>9.61 mm</td><td style='text-align: center; word-wrap: break-word;'>9.71 mm</td></tr></table>

### 4.1 自我对比

我们首先评估堆叠网络架构对分层PointNet的影响。如图6（左图和右图）所示，双层堆叠网络的性能明显优于单层网络模块，这体现了堆叠网络架构在我们点对点回归方法中的重要性。

---

我们还评估了不同网络输出的影响。在我们的方法中，网络被训练用于输出手部关节的热图和单位向量场，随后利用它们来恢复偏移场，具体如第3节所述。在本实验中，我们将该方法与一种基线方法进行比较，该基线方法中的网络被训练用于生成偏移场而非单位向量场；该网络同样会输出热图，仅用于定位手部关节的邻近点。如图6（左图）所示，当采用双层堆叠网络架构时，生成单位向量场的网络性能优于生成偏移场的网络。这一结果表明，回归偏移量的单位向量可能比回归偏移向量更容易学习，因为偏移向量的方差大于单位向量。

我们还评估了不同网络输出所带来的影响。在我们的方法中，训练网络以输出手部关节的热图和单位向量场，随后利用它们来恢复偏移场，具体如第3节所述。在本实验中，我们将我们的方法与一种基线方法进行比较，该基线方法中的网络被训练用于生成偏移场而非单位向量场；该网络同样会输出热图，但仅用于定位手部关节的邻近点。如图6（左侧）所示，当采用双层堆叠的网络架构时，生成单位向量场的网络表现优于生成偏移场的网络。这一结果表明，回归偏移量的单位向量的网络可能比回归偏移向量的网络更容易学习，因为偏移向量的方差大于单位向量。

为了评估我们提出的点对点回归方法，我们将该方法与直接回归方法进行比较。在本实验中，我们使用具有三个集合抽象层和三个全连接层的分层PointNet [^27]，来直接回归手部关节的3D坐标。如图6（中间）所示，当误差阈值小于45毫米时，我们的点对点回归方法的性能优于直接回归方法；但当误差阈值大于45毫米时，点对点回归方法的性能反而劣于直接回归方法。这可能是由于某些结果中候选估计值之间的差异较大所致，具体如第3.5节所述。按照第3.5节的描述，将点对点方法与直接回归方法相结合后，估计精度可进一步提升，如图6（中间）所示。此外，组合方法在所有误差阈值下的性能均优于或等同于直接回归方法。在本实验中，点对点回归方法所估计的关节位置中仅有7.9%被直接回归方法的结果取代，这一数据表明估计结果主要由点对点回归方法主导，而直接回归方法可对其起到补充作用。另外，加入PCA约束还能略微提升估计精度。

我们进一步研究了公式7中所用的候选估计数量M以及加权平均对整体平均误差距离的影响。如表1所示，当候选估计数量M介于15到25之间时，平均误差距离最小；当M超过25时，平均误差距离会变大。此外，当M小于25时，加权平均并不能改善平均误差距离；但随着M的增大，加权平均对平均误差距离的改善效果愈发明显。因此，加权平均能够使估计结果对噪声较大的候选估计更加鲁棒。在后续实验中，我们将M设为25，并采用带有后处理的加权平均方法。

---

### 4.2 与现有先进方法的比较

我们将所提出的点对点回归方法与16种现有先进方法进行比较：潜在随机森林（LRF）[^36]、基于随机森林的分层回归（RDF, Hierarchical）[^35]、基于局部表面法线的随机森林（LSN）[^47]、协同过滤[^6]、使用2D CNN的2D热图回归（Heat-map）[^43]、基于反馈回路的2D CNN（Feedback Loop）[^22]、使用2D CNN的手部模型参数回归（DeepModel）[^56]、基于李群的2D CNN（Lie-X）[^52]、使用2D CNN的改进型直接回归结合姿态先验（DeepPrior++）[^19]、使用2D CNN生成幻觉热分布（Hallucination Heat）[^5]、多视角CNN[^10]、3D CNN[^11]、使用深度生成模型的交叉网络（Crossing Nets）[^45]、区域集成网络（REN）[^12]、姿态引导的结构化REN（Pose-REN）[^4]以及使用2D CNN的密集3D回归（DenseReg）[^46]。我们在NYU [^43]、ICVL [^36]和MSRA [^35]数据集上评估了不同误差阈值下的优质帧比例、各关节的平均误差距离以及整体平均误差距离，相关结果分别如图7和图8所示。

![Image](images/baa905b08dae442557a0d2fed32bbca0fe45815770cdbacb6ea6fb258f89ceb0.jpg)

![Image](images/8e344824514e5191d803fed136b5874bc935b703842d37e263d07e4499431c85.jpg)

![Image](images/bad4e6a94360f7f3c7b1fd1cc213562d4a6995dfc9898c68db88040ebe068d4a.jpg)

<div style="text-align: center;">Fig. 7. Comparison with state-of-the-art methods on NYU [^43] (left), ICVL [^36] (middle) and MSRA [^35] (right) datasets. The proportions of good frames and the overall mean error distances (in parentheses) are presented in this figure.</div>

![Image](images/e6c48f59a2d0edbd3ee7e42cc471e32783ca92cef9036c18ff6b5f4383afaae9.jpg)

![Image](images/fb422b1114d0a43eac1bcc7ddccd4ff8d71dca71c302b2d39719c9f2bb9c4a8b.jpg)

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

<div style="text-align: center;">Fig. 8. Comparison with state-of-the-art methods on NYU [^43] (left), ICVL [^36] (middle) and MSRA [^35] (right) datasets. The per-joint mean error distances and the overall mean error distances are presented in this figure (R: root, T: tip).</div>

---

从图7和图8可以看出，我们的方法在这三个数据集上均能取得更优的性能。在NYU [^43]和ICVL [^36]数据集上，我们的方法在几乎所有误差阈值下都优于其他方法，且在这两个数据集上均实现了最小的总体平均误差距离。具体而言，在NYU数据集 [^43]上，当误差阈值处于15毫米到20毫米之间时，我们方法的优质帧比例比DenseReg [^46]高出约15%，比Pose-REN [^4]高出20%；在ICVL数据集 [^36]上，当误差阈值处于10毫米到15毫米之间时，我们方法的优质帧比例比DenseReg [^46]和Pose-REN [^4]方法高出10%以上。在MSRA数据集 [^35]上，除了DenseReg [^46]方法外，我们的方法在几乎所有误差阈值下都优于其他方法。尽管当误差阈值为10毫米时，我们方法的表现比DenseReg [^46]好约10%，且我们方法的总体平均误差距离仅比DenseReg [^46]差0.5毫米，但当误差阈值超过15毫米时，我们方法的表现却不如DenseReg [^46]方法。正如[^20]中所提及且在定性结果中所示，MSRA数据集 [^35]中的一些3D手部关节标注存在明显误差，这可能会降低在该数据集上的评估有效性，也会限制我们深度神经网络的学习能力。

此外，我们在补充材料中展示了NYU [^43]、ICVL [^36]和MSRA [^35]数据集的一些定性结果。

### 4.3 运行时间与模型大小

我们的方法平均每帧运行时间为23.9毫秒，其中点采样与表面法线计算耗时8.2毫秒，两层堆叠的分层PointNet前向传播耗时15.1毫秒，手部姿态推断及后处理耗时0.6毫秒。因此，我们的方法能够以约41.8帧/秒的速度实时运行。

此外，我们网络的模型大小为17.2 MB，其中用于点对点回归网络的双层堆叠分层PointNet占11.1 MB，由三个全连接层组成的额外直接回归模块占6.1 MB。与[^11]中提出的3D CNN模型大小（约420 MB）相比，我们的模型更小。

## 5 结论

在本文中，我们提出了一种新颖的方法：直接将手部的3D点云作为网络输入，输出点云上的热图以及单位向量场，用以反映各点到手部关节的接近程度与方向。我们利用加权融合技术，根据估算出的热图和单位向量场来推断3D手部关节位置。与堆叠式沙漏网络 [^18]类似，我们将堆叠式网络架构应用于分层PointNet [^27]，从而能够对点云进行反复的自底向上和自顶向下推断，进而进一步提升性能。我们提出的点对点回归方法也能轻松与直接回归方法结合，以实现更稳健的性能。在三个具有挑战性的手部姿态数据集上的实验结果表明，我们的方法能够在实时条件下实现更高的精度。

---

致谢。本研究得到了BeingTogether中心的支持，该中心是新加坡南洋理工大学与北卡罗来纳大学教堂山分校的合作机构。BeingTogether中心由新加坡总理公署国家研究基金会通过其“新加坡国际研究中心资助计划”提供支持。本研究还部分得到了新加坡教育部学术研究基金第2层级项目MOE2015-T2-2-114、布法罗大学的启动经费以及Snap Inc.的捐赠资助。

## 参考文献

1. Ballan, L., Taneja, A., Gall, J., Van Gool, L., Pollefeys, M.：利用判别性显著点捕捉动作中手部的运动轨迹。载于：Fitzgibbon, A., Lazebnik, S., Perona, P., Sato, Y., Schmid, C.（编）《ECCV 2012》。LNCS第7577卷，第640–653页。斯普林格出版社，海德堡（2012年）。<https://doi.org/10.1007/978-3-642-33783-3_46>

[^2]: Cai, Y., Ge, L., Cai, J., Yuan, J.: Weakly-supervised 3D hand pose estimation from monocular RGB images. In: ECCV (2018)

[^3]: Cao, Z., Huang, Q., Ramani, K.: 3D object classification via spherical projections. In: 3DV (2017)

[^4]: Chen, X., Wang, G., Guo, H., Zhang, C.: Pose guided structured region ensemble network for cascaded hand pose estimation. arXiv preprint arXiv:1708.03416 (2017)

[^5]: Choi, C., Kim, S., Ramani, K.: Learning hand articulations by hallucinating heat distribution. In: ICCV (2017)

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

7. Ge, L., Liang, H., Yuan, J., Thalmann, D.：基于三维卷积神经网络的实时三维手部姿态估计。《IEEE模式分析与机器智能汇刊》第1–15页（2018年）。<https://doi.org/10.1109/TPAMI.2018.2827052>。ISSN：0162-8828

[^8]: Ge, L., Liang, H., Yuan, J., Thalmann, D.: Robust 3D hand pose estimation from single depth images using multi-view CNNs. IEEE Trans. Image Process. 27(9), 4422–4436 (2018)

[^9]: Ge, L., Cai, Y., Weng, J., Yuan, J.: Hand pointnet: 3D hand pose estimation using point sets. In: Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 8417–8426 (2018)

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

[^11]: Ge, L., Liang, H., Yuan, J., Thalmann, D.: 3D convolutional neural networks for efficient and robust hand pose estimation from single depth images. In: CVPR (2017)

[^12]: Guo, H., Wang, G., Chen, X., Zhang, C., Qiao, F., Yang, H.: Region ensemble network: improving convolutional network for hand pose estimation. In: ICIP (2017)

13. Keskin, C., Kiraç, F., Kara, Y.E., Akarun, L.：利用多层随机决策森林进行手部姿态估计与手部形状分类。载于：Fitzgibbon, A., Lazebnik, S., Perona, P., Sato, Y., Schmid, C.（编）《ECCV 2012》。LNCS第7577卷，第852–863页。斯普林格出版社，海德堡（2012年）。<https://doi.org/10.1007/978-3-642-33783-3_61>

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

## [^15]: Klokov, R., Lempitsky, V.: Escape from cells: deep Kd-networks for the recognition of 3D point cloud models. In: ICCV (2017)

---

[^16]: Maturana, D., Scherer, S.: Voxnet: a 3D convolutional neural network for real-time object recognition. In: IROS (2015)

[^17]: Moon, G., Chang, J.Y., Lee, K.M.: V2V-PoseNet: Voxel-to-voxel prediction network for accurate 3D hand and human pose estimation from a single depth map. In: CVPR (2018)

18. Newell, A., Yang, K., Deng, J.：用于人体姿态估计的堆叠沙漏网络。载于：Leibe, B., Matas, J., Sebe, N., Welling, M.（编）《ECCV 2016》。LNCS第9912卷，第483–499页。斯普林格出版社，沙姆（2016年）。<https://doi.org/10.1007/978-3-319-46484-8_29>

[^19]: Oberweger, M., Lepetit, V.: Deepprior++: improving fast and accurate 3D hand pose estimation. In: ICCV Workshop (2017)

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

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

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

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

[^24]: Pavlakos, G., Zhou, X., Derpanis, K.G., Daniilidis, K.: Coarse-to-fine volumetric prediction for single-image 3D human pose. In: CVPR (2017)

[^25]: Qi, C.R., Su, H., Mo, K., Guibas, L.J.: PointNet: deep learning on point sets for 3D classification and segmentation. In: CVPR (2017)

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

[^27]: Qi, C.R., Yi, L., Su, H., Guibas, L.J.: PointNet++: deep hierarchical feature learning on point sets in a metric space. In: NIPS (2017)

[^28]: Remelli, E., Tkach, A., Tagliasacchi, A., Pauly, M.: Low-dimensionality calibration through local anisotropic scaling for robust hand model personalization. In: ICCV (2017)

[^29]: Riegler, G., Ulusoy, A.O., Geiger, A.: Octnet: learning deep 3D representations at high resolutions. In: CVPR (2017)

[^30]: Rogez, G., Weinzaepfel, P., Schmid, C.: Lcr-net: Localization-classification-regression for human pose. In: CVPR (2017)

[^31]: Romero, J., Tzionas, D., Black, M.J.: Embodied hands: modeling and capturing hands and bodies together. ACM Trans. Graph. (TOG) 36(6), 245 (2017)

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

[^33]: Song, S., Xiao, J.: Deep sliding shapes for amodal 3D object detection in RGB-D images. In: CVPR (2016)

[^34]: Su, H., Maji, S., Kalogerakis, E., Learned-Miller, E.: Multi-view convolutional neural networks for 3D shape recognition. In: ICCV (2015)

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

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

## [^37]: Tang, D., Taylor, J., Kohli, P., Keskin, C., Kim, T.K., Shotton, J.: Opening the black box: hierarchical sampling optimization for estimating human hand pose. In: ICCV (2015)

---

[^38]: Taylor, J., et al.: Efficient and precise interactive hand tracking through joint, continuous optimization of pose and correspondences. ACM Trans. Graph. 35(4), 143 (2016)

[^39]: Taylor, J., Shotton, J., Sharp, T., Fitzgibbon, A.: The vitruvian manifold: inferring dense correspondences for one-shot human pose estimation. In: CVPR (2012)

[^40]: Tkach, A., Tagliasacchi, A., Remelli, E., Pauly, M., Fitzgibbon, A.: Online generative model personalization for hand tracking. ACM Trans. Graph. (TOG) 36(6), 243 (2017)

[^41]: Tome, D., Russell, C., Agapito, L.: Lifting from the deep: convolutional 3D pose estimation from a single image. In: CVPR (2017)

[^42]: Tompson, J., Jain, A., LeCun, Y., Bregler, C.: Joint training of a convolutional network and a graphical model for human pose estimation. In: NIPS (2014)

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

[^44]: Tzionas, D., Ballan, L., Srikantha, A., Aponte, P., Pollefeys, M., Gall, J.: Capturing hands in action using discriminative salient points and physics simulation. Int. J. Comput. Vis. 118(2), 172–193 (2016)

[^45]: Wan, C., Probst, T., Van Gool, L., Yao, A.: Crossing nets: dual generative models with a shared latent space for hand pose estimation. In: CVPR (2017)

[^46]: Wan, C., Probst, T., Van Gool, L., Yao, A.: Dense 3D regression for hand pose estimation, pp. 5147–5156 (2018)

47. Wan, C., Yao, A., Van Gool, L.：基于局部表面法线的手部姿态估计。载于：Leibe, B., Matas, J., Sebe, N., Welling, M.（编）《ECCV 2016》。LNCS第9907卷，第554–569页。斯普林格出版社，沙姆（2016年）。<https://doi.org/10.1007/978-3-319-46487-9_34>

[^48]: Wang, P.S., Liu, Y., Guo, Y.X., Sun, C.Y., Tong, X.: O-CNN: Octree-based convolutional neural networks for 3D shape analysis. ACM Trans. Graph. (TOG) 36(4), 72 (2017)

[^49]: Wei, S.E., Ramakrishna, V., Kanade, T., Sheikh, Y.: Convolutional pose machines. In: CVPR (2016)

[^50]: Wu, Z., et al.: 3D shapenets: a deep representation for volumetric shapes. In: CVPR (2015)

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

[^52]: Xu, C., Govindarajan, L.N., Zhang, Y., Cheng, L.: Lie-X: Depth image based articulated object pose estimation, tracking, and action recognition on lie groups. Int. J. Comput. Vis. 123(3), 454–478 (2017)

53. Ye, Q., Yuan, S., Kim, T.-K.：结合空间注意力深度网络与部分粒子群优化算法的分层混合手部姿态估计方法。载于：Leibe, B., Matas, J., Sebe, N., Welling, M.（编）《ECCV 2016》。LNCS第9912卷，第346–361页。斯普林格出版社，沙姆（2016年）。<https://doi.org/10.1007/978-3-319-46484-8_21>

[^54]: Yuan, S., et al.: Depth-based 3D hand pose estimation: from current achievements to future goals. In: CVPR (2018)

[^55]: Yuan, S., Ye, Q., Stenger, B., Jain, S., Kim, T.K.: BigHand2.2m benchmark: hand pose dataset and state of the art analysis. In: CVPR (2017)

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