
# 基于模型的自监督学习3D手部重建

陈宇金$^{1*}$ 涂志刚$^{1\dagger}$ 康迪$^{2}$ 鲍林超$^{2}$

张颖$^{3}$ 折雪飞$^{2}$ 陈瑞志$^{1}$ 袁俊松$^{4}$

$^{1}$武汉大学 $^{2}$腾讯AI实验室 $^{3}$腾讯 $^{4}$纽约州立大学布法罗分校

{yujin.chen, tuzhigang, ruizhi.chen}@whu.edu.cn {di.kang, zhexuefei}@outlook.com <mailto:linchaobao@gmail.com> <mailto:yinggzhang@tencent.com> <mailto:jsyuan@buffalo.edu>

## 摘要

由于手部姿态的多样性以及深度信息的不确定性，从单视图RGB图像中重建3D手部模型是一项极具挑战性的任务。为了能够可靠地从单目图像中重建3D手部模型，目前大多数最先进的方法在训练阶段都严重依赖3D标注数据，但获取这类标注数据的成本极高。为减少对标注训练数据的依赖，我们提出了S²HAND——一种自监督的3D手部重建网络，它能够同时估计手部的姿态、形状、纹理以及相机视角。具体而言，我们通过易于获取的2D检测关键点从输入图像中提取几何线索。为了利用这些含噪的几何线索来训练出精准的手部重建模型，我们利用2D与3D表示之间的一致性，并提出了一系列新颖的损失函数以规范神经网络的输出。我们首次证明了无需依赖人工标注即可训练出精准的3D手部重建网络的可行性。实验结果表明，所提出的自监督方法性能可与近期有监督的方法相媲美。相关代码可在<https://github.com/TerenceCYJ/S2HAND>查看。

### 1. 引言

从单张图像中重建3D人手对于计算机视觉任务具有重要意义，例如手部动作识别、增强现实、手语翻译以及人机交互等[^21] [^33] [^43]。然而，由于手部形态的多样性以及单目3D重建中的深度不确定性，基于图像的3D手部重建仍是一个极具挑战性的问题。

近年来，从图像中恢复人手3D表示的技术取得了快速进展。在该领域，大多数方法旨在从深度图像中预测3D手部姿态[^1] [^10] [^15] [^22] [^49] 或者

<div style="text-align: center;">Training Phase</div>

![Image](images/290f6307951d96b36587acac80c87455936318e329d020fd09669123443c0c63.jpg)

<div style="text-align: center;">Figure 1: Given a collection of unlabeled hand images, we learn a 3D hand reconstruction network in a self-supervised manner. Top: the training uses a collection of unlabeled hand images and their corresponding noisy detected 2D keypoints. Bottom: our model outputs accurate hand joints and shapes, as well as vivid textures.</div>

RGB图像 [^2] [^8] [^24] [^37] [^52]。不过，某些应用场景中需要手部表面信息，例如虚拟手抓取物体时 [^21]，此时仅靠由稀疏关节表示的3D手部姿态并不够。为了更好地呈现手部的表面信息，以往的研究要么通过回归每个顶点的坐标来预测三角网格 [^16] [^29]，要么通过变形参数化手部模型来实现 [^19] [^20]。从2D输入生成这种高维表示对神经网络而言学习难度较大，因此训练过程严重依赖3D标注数据，比如密集的手部扫描结果、拟合后的参数化手部网格或人工标注的3D关节点。此外，在某些应用中手部纹理也十分重要，比如在沉浸式虚拟现实中实现逼真的手部重建。但直到最近才有研究探索基于学习的手部恢复系统中的参数化纹理估计问题 [^35]，而大多数

---

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Approach</td><td style='text-align: center; word-wrap: break-word;'>Supervision</td><td style='text-align: center; word-wrap: break-word;'>Outputs</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>[^35]</td><td style='text-align: center; word-wrap: break-word;'>3DM, 3DJ, 2DKP, I, TI</td><td style='text-align: center; word-wrap: break-word;'>3DM, 3DJ, Tex</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>[^20] [^30]</td><td style='text-align: center; word-wrap: break-word;'>3DM, 3DJ</td><td style='text-align: center; word-wrap: break-word;'>3DM, 3DJ</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>[^48]</td><td style='text-align: center; word-wrap: break-word;'>3DM $^{*}$, 3DJ, 2DKP, 2DS, Syn</td><td style='text-align: center; word-wrap: break-word;'>3DM, 3DJ</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>[^16]</td><td style='text-align: center; word-wrap: break-word;'>3DM $^{*}$, 3DJ, 2DKP, D $^{*}$</td><td style='text-align: center; word-wrap: break-word;'>3DM, 3DJ</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>[^29]</td><td style='text-align: center; word-wrap: break-word;'>3DM $^{*}$, D2DKP</td><td style='text-align: center; word-wrap: break-word;'>3DM, 3DJ</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>[^51]</td><td style='text-align: center; word-wrap: break-word;'>3DJ, 2DKP, Mo</td><td style='text-align: center; word-wrap: break-word;'>3DM, 3DJ</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>[^3] [^7] [^50]</td><td style='text-align: center; word-wrap: break-word;'>3DJ, 2DKP, 2DS</td><td style='text-align: center; word-wrap: break-word;'>3DM, 3DJ</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>[^52]</td><td style='text-align: center; word-wrap: break-word;'>3DJ, 2DKP, 2DS</td><td style='text-align: center; word-wrap: break-word;'>3DJ</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>[^24]</td><td style='text-align: center; word-wrap: break-word;'>3DJ, 2DKP</td><td style='text-align: center; word-wrap: break-word;'>3DJ</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>[^4]</td><td style='text-align: center; word-wrap: break-word;'>3DJ $^{*}$, 2DKP, 2DS</td><td style='text-align: center; word-wrap: break-word;'>3DM, 3DJ, Tex</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>[^37]</td><td style='text-align: center; word-wrap: break-word;'>3DJ $^{*}$, 2DKP</td><td style='text-align: center; word-wrap: break-word;'>3DJ</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>[^8]</td><td style='text-align: center; word-wrap: break-word;'>2DKP, D</td><td style='text-align: center; word-wrap: break-word;'>3DJ</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Ours</td><td style='text-align: center; word-wrap: break-word;'>D2DKP, I</td><td style='text-align: center; word-wrap: break-word;'>3DM, 3DJ, Tex</td></tr></table>

<div style="text-align: center;">Table 1: A comparison of some representative 3D hand recovery approaches with highlighting the differences between the supervision and the outputs. We use the weakest degree of supervision and output the most representations. 3DM: 3D mesh, 3DJ: 3D joints, I: input image, TI: an additional set of images with clear hand texture, Tex: texture, 2DKP: 2D keypoints, 2DS: 2D silhouette, D: depth, D2DKP: detected 2D keypoints, Syn: extra synthetic sequence data, Mo: extra motion capture data. * indicates that the study uses multiple datasets for training, and at least one dataset used the supervision item.</div>

## 以往的研究并未考虑纹理建模

我们的核心发现是：图像空间中的2D线索与现实世界中的3D手部模型密切相关。2D手部关键点包含丰富的结构信息，图像则包含纹理信息。这两者对于减少昂贵的3D标注的使用至关重要，但目前尚未得到充分研究。通过这种方式，我们可以直接利用2D标注和输入图像来学习结构与纹理表征，无需借助3D标注。不过，标注2D手部关键点仍是一项耗时的工作。为了完全省去人工标注的成本，我们提出从无标签图像中提取一些几何表征以辅助形状重建，同时利用输入图像中包含的纹理信息来进行纹理建模。

受上述发现的启发，本研究旨在仅利用从输入图像中获取的监督信号来训练一个精确且鲁棒的3D手部重建网络，彻底摒弃所有人工标注，这也是该领域的首次尝试。为此，我们使用现成的2D关键点检测器 [^9] 来生成一些含噪的2D关键点，并借助这些检测到的含噪2D关键点与输入图像来对手部重建过程进行监督。为了实现这一目标，需要解决几个关键问题：首先，如何高效利用逐关节的2D关键点来监督条件受限的单目3D手部重建任务？其次，由于我们的设置中不使用任何真实标注，该如何处理2D检测输出中的噪声呢？

为解决第一个问题，我们提出了一种基于模型的自编码器来估计3D关节点和形状，在训练过程中会将输出的3D关节点投影到图像空间，并强制其与检测到的关键点对齐。然而，若仅在图像空间中对齐关键点，往往会产生无效的手部姿态。这类姿态可能对应着看似能投影出正确2D关键点的无效3D手部配置。此外，2D关键点也无法消除预测出的3D手部的尺度歧义。因此，我们在基于模型的手部表征中嵌入了一系列先验知识，以帮助神经网络输出姿态和尺寸均合理的手部。

为了解决第二个问题，我们提出了一种可训练的二维关键点估计器以及一种新颖的二维-三维一致性损失。该二维关键点估计器能够输出各关节对应的二维关键点，而二维-三维一致性损失则将二维关键点估计器与三维重建网络联系起来，使它们在训练过程中相互促进。此外，我们发现不同样本的检测精度差异很大，因此我们提出对各个检测项加以区分，从而相应地调整其监督强度。

总而言之，我们提出了S²HAND（自监督三维手部重建）模型，该模型使我们能够训练出一类神经网络，这类网络无需任何真实标注数据，仅利用二维关键点检测器的输出（见图1），就能从手部图像中预测出三维姿态、形状、纹理以及相机视角。

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

- 我们提出了首个自监督三维手部重建网络，该网络无需使用任何标注的训练数据，便能从单张图像中精准输出三维关节、网格及纹理。

- 我们利用额外的可训练二维关键点估计器，通过相互提升的方式促进三维重建，在此过程中还提出了一种新颖的二维-三维一致性损失。

我们引入了手部纹理估计模块，通过自监督方式学习逼真的手部纹理。

- 我们在一些当前具有挑战性的数据集上对自监督三维手部重建技术进行了基准测试，结果显示我们的自监督方法性能可与以往的全监督方法相媲美。

### 2. 相关工作

在本节中，我们将回顾与本研究相关的前期工作。我们的研究重点是基于模型的三维手部姿态与形状估计，以及在有限监督下的三维重建。如需了解更多关于三维姿态估计的研究，请参阅 [^1] [^16] [^37]。下文及表1中，我们将我们的成果与以往的工作进行了对比。

基于模型的手部姿态与形状估计。已有许多手部模型被提出，用于通过参数化模型来近似手部形状 [^5] [^26] [^36] [^42]。在本文中，我们采用了一种名为MANO的手部模型 [^36]，该模型可将姿态和形状参数映射为三角网格 [^7] [^11] [^20] [^53]。

---

![Image](images/117e03797cc43e554dbd6862e7d99879e3e9f9b7eb23f9b93f0baaf6ec125644.jpg)

<div style="text-align: center;">Figure 2: Overview of the proposed framework. Our 3D reconstruction network decomposes an input image I into pose, shape, viewpoint, texture, and lighting. The network is trained to reconstruct the input hand image and align with the detected 2D keypoints without extra ground truth annotation. We also adopt an additional trainable 2D keypoint estimator for joint-wise 2D keypoint estimation, which is supervised by the detected 2D keypoints as well. If the 2D keypoint estimator is enabled, a 2D-3D consistency function is introduced to link the 2D and 3D components for mutual improvement. During the inference, only the 3D reconstruction network is utilized. The “Input Image I” and “Detected 2D Keypoints $J^{de}$” on the right side of this figure are used to calculate losses.</div>

由于参数化模型包含了丰富的人手结构先验，近期的研究将手部模型作为神经网络中的可微层加以整合 [^3] [^4] [^7] [^19] [^20] [^45] [^51] [^53]。其中，[^3] [^45] [^51] 会输出一组中间估计结果，比如分割掩码和2D关键点，随后再将这些表示映射到MANO参数中。与它们不同，我们旨在证明使用直观的自编码器构建自监督框架的可行性。我们还会从另一个分支输出2D关键点估计结果，且仅在训练阶段利用它来促进3D重建。更普遍而言，近期的方法 [^4] [^7] [^19] [^20] [^53] 直接采用将图像特征编码阶段与基于模型的解码阶段相结合的自编码器。与 [^19] [^20] 不同，我们专注于手部恢复，不使用任何关于物体的标注信息。更重要的是，上述方法以3D标注作为监督信号，而我们提出的方法并不依赖任何真实标注。

在有限监督下的3D手部姿态与形状估计。2D标注的成本低于3D标注，但处理深度和尺度的歧义性较为困难。[^8] 利用深度图提供额外的弱监督以增强2D监督效果。[^37] 提出了生物力学约束，以帮助网络输出可行的3D手部配置。[^32] 检测2D手部关键点，并将手部模型直接拟合到2D检测结果上。[^29] 通过类似 [^32] 的自动化数据收集方法获取大规模数据集，随后将收集到的网格作为监督信号。在本研究中，我们通过为皮肤模型引入一组约束来限制生物力学上的可行性，而非像 [^37] 那样仅对骨骼施加约束。与 [^8] [^29] 不同，我们的方法旨在验证（含噪声的）2D监督的可行性，且不引入任何额外的2.5D或3D数据。

自监督3D重建。近期有一些方法试图仅从单目图像中学习3D几何结构。例如，[^47] 提出了一种从无监督方式下从原始单视图图像学习3D可变形物体的方法，但他们假设物体完全对称，而这在手部重建中并不成立。[^17] 从监督信号中移除了关键点，但它使用真实的2D轮廓作为监督信号，且仅针对类内形状差异较小的类别，如鸟类、鞋子和汽车。[^44] 提出了一种基于深度的自监督3D手部姿态估计方法，但深度图像提供的证据和监督信息比RGB图像强得多。近期，[^12] [^40] [^41] 提出了利用人脸3D可变形模型（3DMM）[^6] 和2D地标检测进行自监督面部重建的方法。我们的方法与之类似，但与3D人脸相比，手部相对不平整且不对称，同时还存在更严重的自遮挡现象。这些特性使得这项自监督手部重建任务更具挑战性。

手部康复中的纹理建模。[^13] [^14] 利用阴影和纹理信息来处理手部跟踪系统中的自遮挡问题。最近，[^35] 采用主成分分析（PCA）从一组带纹理的扫描数据中构建手部的参数化纹理模型。在本研究中，我们尝试在不引入额外数据的情况下，通过自监督训练来建模纹理，并进一步探究纹理建模是否有助于形状建模。

从上述相关工作的分析与比较中，我们认为自监督三维手部重建是

---

可行且具有重要意义的，但据我们所知，该领域尚未有人研究这一思路。在本研究中，我们填补了这一空白，提出了首个自监督三维手部重建网络，并通过实验验证了所提方法的有效性。

### 3. 方法

如图2所示，我们的方法能够以自监督方式实现三维手部重建网络的端到端学习。为此，我们采用一个自动编码器，它以手部图像为输入，输出手部姿态、形状、纹理以及相机视角（详见第3.1节和3.2节）。我们在图像空间中生成多种二维表示形式（详见第3.3节），并设计了一系列损失函数与正则化项用于网络训练（详见第3.4节）。接下来，我们将详细介绍所提出的方法。

#### 3.1. 深度手部编码

给定包含手部的图像I，网络首先使用EfficientNet-b0骨干网络[^39]将图像编码为几何语义码向量x和纹理语义码向量y。几何语义码向量x以统一的方式参数化手部姿态$\theta \in \mathbb{R}^{30}$、形状$\beta \in \mathbb{R}^{10}$、尺度$s \in \mathbb{R}^1$、旋转$R \in \mathbb{R}^3$以及平移$T \in \mathbb{R}^3$：$x = (\theta, \beta, s, R, T)$。纹理语义码向量y则以统一的方式参数化手部纹理$C \in \mathbb{R}^{778 \times 3}$和场景光照$L \in \mathbb{R}^{11}$：$y = (C, L)$。

#### 3.2. 基于模型的手部解码

给定几何语义码向量x和纹理语义码向量y，我们的基于模型的解码器会在相机空间中生成带纹理的三维手部模型。接下来，我们将详细介绍所使用的手部模型和解码网络。

姿态与形状的表示。手部表面由流形三角网格$M \equiv (V, F)$表示，该网格包含$n = 778$个顶点$V = \{v_i \in \mathbb{R}^3 | 1 \leq i \leq n\}$和面F。面F指明了手部表面顶点的连接方式，我们假设面的拓扑结构保持不变。根据网格拓扑，可以直接从手部网格中推导出一组$k = 21$个关节$J = \{j_i \in \mathbb{R}^3 | 1 \leq i \leq k\}$。这里，手部网格和关节是通过MANO从姿态向量$\theta$和形状向量$\beta$中恢复出来的，MANO是一种从两千多个三维手部扫描数据中学习得到的低维参数化模型[^36]。

相机空间中的三维手部。通过MANO手部模型根据姿态和形状参数表示三维手部后，网格和关节位于手部相关的坐标系中。为了将输出的关节和网格表示在相机坐标系中，我们利用估计出的尺度、旋转和平移，将原始手部网格$M_0$和关节$J_0$转换为最终的表示形式：$M = sM_0R + T$和$J = sJ_0R + T$。

纹理与光照表示。我们使用$n = 778$个顶点的逐顶点RGB值来表示手部$C = \{c_i \in \mathbb{R}^3 | 1 \leq i \leq n\}$的纹理，其中$c_i$可得出第i个顶点的RGB值。在我们的模型中，采用简单的环境光与定向光来模拟光照条件[^25]。光照向量L将环境光强度$l^a \in \mathbb{R}^1$、环境光颜色$l_c^a \in \mathbb{R}^3$、定向光强度颜色$l^d \in \mathbb{R}^1$、定向光颜色$l_c^d \in \mathbb{R}^3$以及定向光方向$n^d \in \mathbb{R}^3$统一表示为：$L = (l^a, l_c^a, l^d, l_c^d, n^d)$。

#### 3.3. 二维手部表示

相机视野内的一组估计出的3D关节可通过相机投影映射到图像空间。类似地，经过纹理处理的输出模型也能通过神经渲染器转化为逼真的二维手部图像。除了从基于模型的3D关节投影得到的2D关键点外，我们还能估算输入图像中每个关键点的2D位置。在此，我们以三种模式表示二维手部，并探索它们之间的互补性。

关节投影。给定相机坐标系下的一组3D关节J以及相机的内部参数，我们利用相机投影$\Pi$将3D关节映射为一组$k = 21$个2D关节$J^{pro} = \{j_i^{pro} \in \mathbb{R}^2 | 1 \leq i \leq k\}$，其中$j_i^{pro}$可得出第i个关节在图像UV坐标中的位置：$J^{pro} = \Pi(J)$。

图像生成。利用3D网格渲染器将三角形手部网格转换为2D图像，此处我们采用了$^1$的实现方式[^25]。给定3D网格M、网格纹理C以及光照L，神经渲染器$\Delta$能够生成手部轮廓$S^{re}$和彩色图像$I^{re}$：$S^{re}, I^{re} = \Delta(M, C, L)$。

额外的2D关节估算。将基于模型的3D关节投影到2D有助于使投影后的2D关键点保留结构信息，但会牺牲各关键点的独立性。鉴于此，我们额外使用2D关键点估算器直接估算一组$k = 21$个独立的2D关节$J^{2d} = \{j_i^{2d} \in \mathbb{R}^2 | 1 \leq i \leq k\}$，其中$j_i^{2d}$表示第i个关节在图像UV坐标中的位置。在我们的2D关键点估算器中，采用了堆叠式沙漏网络[^31]以及积分姿态回归方法[^38]。需注意，2D手部姿态估算模块仅在训练阶段可选部署，推理时无需使用。

#### 3.4. 训练目标

我们的整体训练损失E由三部分组成：3D分支损失$E_{3d}$、2D分支损失$E_{2d}$以及2D-3D一致性损失$E_{con}$：

 $$ E=w_{3d}E_{3d}+w_{2d}E_{2d}+w_{c o n}E_{c o n} $$

---

需要注意的是，$E_{2d}$和$E_{con}$属于可选项，仅在使用2D估算器时才会用到。常数权重$w_{3d}$、$w_{2d}$和$w_{con}$用于平衡这三项损失。下文我们将详细描述这些损失项。

#### 3.4.1 3D分支的损失

为了训练基于模型的3D手部解码器，我们强制实施几何对齐$E_{geo}$、光度对齐$E_{photo}$以及统计正则化$E_{regu}$：

 $$ E_{3d}=w_{geo}E_{geo}+w_{photo}E_{photo}+w_{regu}E_{regu} $$

几何对齐。我们提出了一种基于检测到的2D关键点的几何对齐损失$E_{geo}$，这些关键点是在离线阶段通过实现$^2$的[^9]来获得的。检测到的2D关键点$L = \{(j_i^{de}, con_i)|1 \leq i \leq k\}$为每个关键点分配一个2D位置$j_i^{de} \in \mathbb{R}^2$和一个1D置信度$con_i \in [0,1]$。在2D图像空间中的几何对齐损失由联合位置损失$E_{loc}$和骨骼方向损失$E_{ori}$组成。联合位置损失$E_{loc}$强制投影后的2D关键点$J^{pro}$与其对应的2D检测结果$J^{de}$靠近，而骨骼方向损失$E_{ori}$则强制这两组关键点的$m = 20$骨骼保持一致。

 $$ E_{loc}=\frac{1}{k}\sum_{i=1}^{k}con_{i}\mathcal{L}_{SmoothL1}(j^{de}_{i},j^{pro}_{i}) $$

 $$ E_{o r i}=\frac{1}{m}\sum_{i=1}^{m}c o n_{i}^{b o n e}\parallel\nu_{i}^{d e}-\nu_{i}^{p r o}\parallel_{2}^{2} $$

此处，方程3中使用了SmoothL1损失[^23]，以使损失项对局部调整更具鲁棒性，因为检测到的关键点与MANO关键点匹配度不佳。在方程4中，$\nu_i^{de}$和$\nu_i^{pro}$分别是检测到的2D关节以及投影后的2D关节的第i根骨骼的归一化向量，而$com_i^{bone}$则是这两组检测到的2D关节中第i根骨骼的置信度乘积。整体几何对齐损失$E_{geo}$是$E_{loc}$和$E_{ori}$的加权和，加权因子为$w_{ori}$：

 $$ E_{g e o}=E_{l o c}+w_{o r i}E_{o r i} $$

光度一致性。在图像生成方面，理想结果是渲染出的彩色图像$I^{re}$与输入图像I中的前景手部相匹配。为此，我们采用了包含两部分的光度一致性约束：像素损失$E_{pixel}$通过对所有可见像素的最小绝对偏差（L1）距离取平均值来衡量像素级差异；结构相似性（SSIM）损失$E_{SSIM}$则是两幅图像之间的结构相似性[^46]。

 $$ E_{p i x e l}=\frac{c o n_{s u m}}{|S^{r e}|}\sum_{(u,v)\in S^{r e}}\parallel I_{u,v}-I_{u,v}^{r e}\parallel_{2} $$

![Image](images/911e2c06b02356cee9085b0e326edc2e0046fe97e2d5aee38fc0bcf6a6a0f577.jpg)

<div style="text-align: center;">Figure 3: (A) Joint skeleton structure. (B) A sample of bone rotation angles. The five bones  $\overrightarrow{(01,05,09,013,017)}$ on the palm are fixed. Each finger has 3 bones, and the relative orientation of each bone from its root bone is represented by azimuth, pitch, and roll.</div>

 $$ E_{S S I M}=1-S S I M(I\odot S^{r e},I^{r e}) $$

此处，利用渲染出的轮廓$S^{re}$来获取输入图像中的前景部分以计算损失。在方程6中，我们使用$con_{sum}$——即所有关键点的检测置信度之和——来区分不同的训练样本。这是因为我们认为低置信度的样本对应着模糊的纹理信息，例如被遮挡的手部的检测置信度通常较低。光度一致性损失$E_{photo}$是$E_{pixel}$和$E_{SSIM}$的加权和，加权因子为$w_{SSIM}$。

 $$ E_{photo}=E_{pixel}+w_{SSIM}E_{SSIM} $$

统计正则化。在训练过程中，为使结果合理，我们引入了正则化项，包括形状正则化$E_\beta$、纹理正则化$E_C$、尺度正则化$E_s$以及3D关节正则化$E_J$。形状正则化项定义为$E_\beta = \|\beta - \beta\|$，旨在促使估计出的手部模型形状$\beta$接近平均形状$\beta = \tilde{\theta} \in \mathbb{R}^{10}$。纹理正则化$E_C$用于惩罚异常的RGB值。尺度正则化项$E_s$用于确保输出的手部尺寸合适，从而有助于确定该单目3D重建任务中输出的深度。至于对骨骼的正则化约束$E_J$，我们为每个旋转角度定义了可行范围$a_i$（如图3B所示），并对超出可行阈值的情况进行惩罚。关于$E_C, E_s$和$E_J$的更多细节，请参阅附录。

统计正则化项 $E_{regu}$ 是 $E_{\beta}$、$E_{C}$、$E_{s}$ 和 $E_{J}$ 的加权和，其权重因子分别为 $w_{C}$、$w_{s}$ 和 $w_{I}$：

 $$ E_{r e g u}=E_{\beta}+w_{C}E_{C}+w_{s}E_{s}+w_{J}E_{J} $$

#### 3.4.2 二维-三维一致性

二维分支的损失。对于二维关键点估计器，我们采用公式3中的联合位置损失，其中将

---

投影得到的二维关节点 $j_{i}^{pro}$ 替换为估计得到的二维关节点 $j_{i}^{2d}$：

 $$ E_{2d}=\frac{1}{k}\sum_{i=1}^{k}con_{i}\mathcal{L}_{SmoothL1}(j_{i}^{de},j_{i}^{2d}) $$

二维-三维一致性损失。由于二维分支和三维分支的输出旨在表示同一手部在不同空间中的形态，因此当它们被转换到同一域时应当保持一致。通过这种一致性，三维重建网络中包含的结构信息可以被引入二维关键点估计器中，同时估计得到的二维关键点也能为三维手部重建提供逐关节的几何线索。为此，我们提出了一种新颖的二维-三维一致性损失，用于将每个投影得到的二维关节点 $j_{i}^{pro}$ 与其对应的估计二维关节点 $j_{i}^{2d}$ 关联起来。

 $$ E_{c o n}=\frac{1}{k}\sum_{i=1}^{k}\mathcal{L}_{S m o o t h L1}(j_{i}^{p r o},j_{i}^{2d}) $$

### 4. 实验

在本节中，我们首先介绍数据集和评估指标（第4.1节）以及实现细节（第4.2节）。随后，我们展示所提方法的性能并进行全面分析（第4.3节和4.4节）。

#### 4.1. 数据集和评估指标

我们在两个具有挑战性的真实数据集上评估了所提方法，这两个数据集均用于评估三维关节点和三维网格。评估结果通过在线提交系统 $^{3,4}$ 进行上报。

FreiHAND。FreiHAND数据集是一个大规模的真实世界数据集，包含32,560个训练样本和3,960个测试样本。对于每个训练样本，会提供一张真实的RGB图像以及另外三张带有不同合成背景的图像。部分样本涉及手部抓取物体的场景，但该数据集并未提供关于前景物体的标注，这带来了额外的挑战。

HO-3D。HO-3D数据集收集了手部与物体交互时的彩色图像。该数据集由68个序列组成，共包含77,558帧图像，涉及10名用户操作10种不同物体。训练集包含66,034张图像，测试集包含11,524张图像。该数据集中的物体比FreiHAND中的更大，因此对手部的遮挡也更严重。

评估指标。我们通过评估三维关节点和三维网格来评价三维手部重建效果。对于三维关节点，我们报告所有测试帧上所有关节点在欧几里得空间中的平均关节位置误差（MPJPE），单位为厘米，以及PCK AUC曲线下的面积 $_{J}$。此处PCK指的是正确关键点的百分比，该曲线是通过在0毫米到50毫米之间取100个等间距阈值绘制而成的。对于三维网格，我们报告所有测试帧上所有顶点在欧几里得空间中的平均顶点位置误差（MPVPE），单位为厘米，以及正确顶点百分比的AUC $_{V}$。我们还比较了F分数 [^28]，即给定距离阈值下召回率与精确度的调和平均值。我们分别报告5毫米和15毫米距离阈值下的F分数，以及5毫米和15毫米下网格顶点的F分数，分别用F $_{5}$ 和 F $_{15}$ 表示。遵循以往的研究 [^18] [^53]，我们将对齐后的预测结果与Procrustes对齐结果进行比较，所有三维结果均通过在线评估系统进行评价。对于二维关节点，我们报告像素级的MPJPE以及关节点处于指定距离范围内的比例曲线。

#### 4.2. 实现细节

实现过程中使用了Pytorch [^34]。对于3D重建网络，采用了在ImageNet数据集上预训练的EfficientNet-b0 [^39]。2D关键点估计器以及2D-3D一致性损失函数可根据需要选用。若结合2D关键点估计器来训练整个网络，则采用分阶段训练方案：分别将2D关键点估计器和3D重建网络训练90个周期，期间分别使用$E_{3d}$和$E_{2d}$作为优化目标。初始学习率为$10^{-3}$，每30个周期衰减为原来的一半；随后对整个网络进行60个周期的微调，初始学习率设为$2.5 \times 10^{-4}$，每20个周期衰减为原来的三分之一。我们采用Adam [^27]优化网络权重，批量大小设为64。模型在两块NVIDIA Tesla V100 GPU上训练，在FreiHAND数据集上的训练时长约为36小时。更多细节详见附录。

#### 4.3. 与现有最先进方法的比较

我们在表2中对FreiHAND数据集上的FreiHAND方法与四种近期基于模型的全监督方法[^7] [^20] [^35] [^53]，以及一种最先进的弱监督方法[^37]进行了对比。需要注意的是，[^30]并未被纳入此次对比，因为它采用的是先进的“图像到像素”预测方式，而非直接回归MANO参数。我们的方法旨在提供一个包含轻量级组件的自监督框架，尽管手部回归过程仍会受到高度非线性映射的影响。因此，为了更公平地展示这种自监督方法的性能，我们选取了几种主流的基于模型的方法[^7] [^20] [^35] [^53]进行对比。无需使用任何标注数据，我们的方法在所有评估指标上的表现均优于[^20]和[^53]，其性能甚至可与[^7]和[^35]相媲美。[^37]仅能输出3D姿态，其在FreiHAND测试集上的姿态性能略优于我们的结果，但差距并不大。

---

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Supervision</td><td style='text-align: center; word-wrap: break-word;'>Method</td><td style='text-align: center; word-wrap: break-word;'>AUC $_{J}$ $\uparrow$</td><td style='text-align: center; word-wrap: break-word;'>MPJPE $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>AUC $_{V}$ $\uparrow$</td><td style='text-align: center; word-wrap: break-word;'>MPVPE $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>F $_{5}$ $\uparrow$</td><td style='text-align: center; word-wrap: break-word;'>F $_{15}$ $\uparrow$</td></tr><tr><td rowspan="4">3D</td><td style='text-align: center; word-wrap: break-word;'>[^53](2019)</td><td style='text-align: center; word-wrap: break-word;'>0.35</td><td style='text-align: center; word-wrap: break-word;'>3.50</td><td style='text-align: center; word-wrap: break-word;'>0.74</td><td style='text-align: center; word-wrap: break-word;'>1.32</td><td style='text-align: center; word-wrap: break-word;'>0.43</td><td style='text-align: center; word-wrap: break-word;'>0.90</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>[^20](2019)</td><td style='text-align: center; word-wrap: break-word;'>0.74</td><td style='text-align: center; word-wrap: break-word;'>1.33</td><td style='text-align: center; word-wrap: break-word;'>0.74</td><td style='text-align: center; word-wrap: break-word;'>1.33</td><td style='text-align: center; word-wrap: break-word;'>0.43</td><td style='text-align: center; word-wrap: break-word;'>0.91</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>[^7](2019)</td><td style='text-align: center; word-wrap: break-word;'>0.78</td><td style='text-align: center; word-wrap: break-word;'>1.10</td><td style='text-align: center; word-wrap: break-word;'>0.78</td><td style='text-align: center; word-wrap: break-word;'>1.09</td><td style='text-align: center; word-wrap: break-word;'>0.52</td><td style='text-align: center; word-wrap: break-word;'>0.93</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>[^35](2020)</td><td style='text-align: center; word-wrap: break-word;'>0.78</td><td style='text-align: center; word-wrap: break-word;'>1.11</td><td style='text-align: center; word-wrap: break-word;'>0.78</td><td style='text-align: center; word-wrap: break-word;'>1.10</td><td style='text-align: center; word-wrap: break-word;'>0.51</td><td style='text-align: center; word-wrap: break-word;'>0.93</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>2D</td><td style='text-align: center; word-wrap: break-word;'>[^37](2020) $^{*}$</td><td style='text-align: center; word-wrap: break-word;'>0.78</td><td style='text-align: center; word-wrap: break-word;'>1.13</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>Ours</td><td style='text-align: center; word-wrap: break-word;'>0.77</td><td style='text-align: center; word-wrap: break-word;'>1.18</td><td style='text-align: center; word-wrap: break-word;'>0.77</td><td style='text-align: center; word-wrap: break-word;'>1.19</td><td style='text-align: center; word-wrap: break-word;'>0.48</td><td style='text-align: center; word-wrap: break-word;'>0.92</td></tr></table>

<div style="text-align: center;">1able 2: Comparison of main results on the FreiHAND test set. 1ne performance of our self-supervised method is comparable to the recent fully-supervised and weakly-supervised methods. [^37]* also uses synthetic training data with 3D supervision.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Supervision</td><td style='text-align: center; word-wrap: break-word;'>Method</td><td style='text-align: center; word-wrap: break-word;'>AUC $_{J}\uparrow$</td><td style='text-align: center; word-wrap: break-word;'>MPJPE $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>AUC $_{V}\uparrow$</td><td style='text-align: center; word-wrap: break-word;'>MPVPE $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>F $_{5}$ $\uparrow$</td><td style='text-align: center; word-wrap: break-word;'>F $_{15}$ $\uparrow$</td></tr><tr><td rowspan="3">3D</td><td style='text-align: center; word-wrap: break-word;'>[^20](2019)</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>1.30</td><td style='text-align: center; word-wrap: break-word;'>0.42</td><td style='text-align: center; word-wrap: break-word;'>0.90</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>[^18](2020)</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>1.06</td><td style='text-align: center; word-wrap: break-word;'>0.51</td><td style='text-align: center; word-wrap: break-word;'>0.94</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>[^19](2020)</td><td style='text-align: center; word-wrap: break-word;'>0.773</td><td style='text-align: center; word-wrap: break-word;'>1.11</td><td style='text-align: center; word-wrap: break-word;'>0.773</td><td style='text-align: center; word-wrap: break-word;'>1.14</td><td style='text-align: center; word-wrap: break-word;'>0.43</td><td style='text-align: center; word-wrap: break-word;'>0.93</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>Ours</td><td style='text-align: center; word-wrap: break-word;'>0.773</td><td style='text-align: center; word-wrap: break-word;'>1.14</td><td style='text-align: center; word-wrap: break-word;'>0.777</td><td style='text-align: center; word-wrap: break-word;'>1.12</td><td style='text-align: center; word-wrap: break-word;'>0.45</td><td style='text-align: center; word-wrap: break-word;'>0.93</td></tr></table>

<div style="text-align: center;">Table 3: Comparison of main results on the HO-3D test set. Without using any object information and hand annotation, our hand pose and shape estimation method performs comparably with recent fully-supervised methods.</div>

此外，该方法还使用了更多的训练数据，包括RHD数据集[^52]（含4万张以上合成图像及3D标注）以及FreiHAND的2D真实标注。

在手-物体交互场景中，我们在表3中将该方法与三种近期的监督式方法在HO-3D数据集上进行了对比。与[^20]中的手部分支相比，我们的自监督结果在网格重建性能上表现更佳，MPVPE值降低了14%。与完全监督式的手-物体姿态估计方法[^19]相比，我们的方法在关节和形状估计结果上与之相当。[^18]的形状估计结果略优于我们的方法，这可能是因为该方法采用了多帧手-物体姿态细化机制以及网格监督。

在图5中，我们展示了基于OpenPose [^9]的2D关键点检测结果，以及难样本的手部重建结果。我们还将重建结果与MANO-CNN进行了对比，后者通过CNN直接估计MANO参数[^53]，但我们将其骨干网络修改为了与我们相同的结构。我们的结果更为准确，且还保留了纹理信息。

#### 4.4. 消融实验

#### 4.4.1 各组件的影响

如表4所示，我们给出了在FreiHAND数据集上不同组件设置下的评估结果，以及网络中使用的相应损失项。基线模型仅使用包含$E_{loc}$和$E_{regu}$的3D分支；随后我们加入$E_{ori}$，使得MPJPE和MPVPE降低了19.5%。再加入包含$E_{2d}$的2D分支以及2D-3D一致性约束$E_{con}$后，MPJPE和MPVPE进一步降低了4%。$E_{photo}$对姿态和形状估计结果有轻微改善。

![Image](images/006c8a94a40b3fb2615c9dfa44a52a8200b192359d7cd37d8ab0e97dee92fed6.jpg)

<div style="text-align: center;">Figure 4: A comparison of 2D keypoint sets used or outputted at the training stage on FreiHAND. The fraction of joints within distance is plotted. The average 2D distances in pixel are shown in the legend. Refer to Section 4.4.2 for details.</div>

![Image](images/138f4daa4f9902e7936462836fe811841d6b37849424c65e62b8e643d0edb299.jpg)

<div style="text-align: center;">Figure 5: Qualitative comparison to OpenPose [^9] and MANO-CNN on the FreiHAND test set. For OpenPose, we visualize detected 2D keypoints. For our method and MANO-CNN, we visualize projected 2D keypoints and 3D mesh.</div>

#### 4.4.2 不同2D关键点集的比较

在我们的方法中，共有三组2D关键点：检测到的关键点$J^{de}$、估计的2D关键点$J^{2d}$以及输出的投影关键点$J^{pro}$。其中$J^{de}$被用作监督项，而$J^{2d}$和$J^{pro}$则是输出项。在我们的设置中，我们利用多种2D表示来提升最终的3D手部重建效果，因此我们并不强调2D手部估计的新颖性，而是通过比较训练集中的2D精度来展示从含噪监督中学习的效果以及所提出的2D-3D一致性的优势。

尽管我们使用OpenPose的输出作为关键点监督源（见图4中的OpenPose），但当我们分别预训练2D和3D分支时，整体2D MPJPE反而更低（见图中“Predicted w/o 2D-3D”和“Projected w/o 2D-3D”）。

---

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td colspan="4">Losses</td><td rowspan="2">MPJPE $\downarrow$</td><td rowspan="2">MPVPE $\downarrow$</td><td rowspan="2">AUC $\downarrow$</td><td rowspan="2">AUCV $\uparrow$</td><td rowspan="2">F $\uparrow$</td><td rowspan="2">F15 $\uparrow$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$E_{loc}, E_{regu}$</td><td style='text-align: center; word-wrap: break-word;'>$E_{ori}$</td><td style='text-align: center; word-wrap: break-word;'>$E_{2d}, E_{com}$</td><td style='text-align: center; word-wrap: break-word;'>$E_{photo}$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>1.54</td><td style='text-align: center; word-wrap: break-word;'>1.58</td><td style='text-align: center; word-wrap: break-word;'>0.696</td><td style='text-align: center; word-wrap: break-word;'>0.687</td><td style='text-align: center; word-wrap: break-word;'>0.387</td><td style='text-align: center; word-wrap: break-word;'>0.852</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>1.24</td><td style='text-align: center; word-wrap: break-word;'>1.26</td><td style='text-align: center; word-wrap: break-word;'>0.754</td><td style='text-align: center; word-wrap: break-word;'>0.750</td><td style='text-align: center; word-wrap: break-word;'>0.457</td><td style='text-align: center; word-wrap: break-word;'>0.903</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>1.19</td><td style='text-align: center; word-wrap: break-word;'>1.20</td><td style='text-align: center; word-wrap: break-word;'>0.764</td><td style='text-align: center; word-wrap: break-word;'>0.763</td><td style='text-align: center; word-wrap: break-word;'>0.479</td><td style='text-align: center; word-wrap: break-word;'>0.915</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>1.18</td><td style='text-align: center; word-wrap: break-word;'>1.19</td><td style='text-align: center; word-wrap: break-word;'>0.766</td><td style='text-align: center; word-wrap: break-word;'>0.765</td><td style='text-align: center; word-wrap: break-word;'>0.483</td><td style='text-align: center; word-wrap: break-word;'>0.917</td></tr></table>

<div style="text-align: center;">Table 4: Ablation studies for different losses used in our method on the FreiHAND testing set. Refer to Section 4.4.1 for details.</div>

在对这两个分支进行带2D-3D一致性的微调后，我们发现它们均获得了额外收益。微调之后，2D分支（“Predicted w/ 2D-3D”）的2D MPJPE降低了5.4%，3D分支（“Projected w/ 2D-3D”）的2D MPJPE降低了9.3%。从曲线中可以看出，2D关键点估计方法（包括OpenPose和我们提出的2D分支）在小距离阈值下精度更高，而基于回归的方法（“Projected w/o 2D-3D”）在较大距离阈值下精度更高。从曲线还能看出，所提出的2D-3D一致性能够在所有距离阈值下改善3D分支的性能，这验证了我们的网络设计的合理性。

#### 4.4.3 与真实2D监督的比较

我们比较了使用真实标注的弱监督（WSL）方案与我们提出的自监督（SSL）方法，以探究该方法处理含噪监督源的能力。两种设置采用相同的网络结构和实现方式，WSL方案使用真实2D关键点标注，且这些关键点的置信度被设为相同值。如表5所示，在两个数据集上我们的SSL方法性能均优于WSL设置。我们认为这是因为检测置信度信息被嵌入到所提出的损失函数中，有助于网络区分含噪样本中的不同精度水平。此外，我们发现SSL方法在HO-3D数据集上的性能提升幅度（1.0%）小于在FreiHand数据集上的提升幅度（4.9%）。我们认为这是因为HO-3D数据集中包含更多被遮挡的手部，导致2D检测结果较差。因此我们得出结论：含噪的2D关键点能够用于指导手部重建任务中的形状学习，同时无标注图像的质量也会产生一定影响。

### 5. 讨论

虽然我们的方法在许多具有挑战性的场景中（例如手部与物体的交互、自遮挡情况）都能实现精确且生动的手部重建，但我们也在图6中看到了一些失败的案例。在极端姿势、严重遮挡以及极端视角下，重建精度较低，部分原因是单视图2D关键点检测提供的监督信息不足。在复杂的皮肤反光条件下，纹理建模也不够准确，这可能是因为我们难以用简单的光照模型和粗糙的手部网格来精确模拟复杂的皮肤反光现象。

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Dataset</td><td style='text-align: center; word-wrap: break-word;'>Method</td><td style='text-align: center; word-wrap: break-word;'>AUC $_{J}$ $\uparrow$</td><td style='text-align: center; word-wrap: break-word;'>AUC $_{V}$ $\uparrow$</td><td style='text-align: center; word-wrap: break-word;'>F $_{5}$ $\uparrow$</td><td style='text-align: center; word-wrap: break-word;'>F $_{15}$ $\uparrow$</td></tr><tr><td rowspan="2">FreiHAND</td><td style='text-align: center; word-wrap: break-word;'>WSL</td><td style='text-align: center; word-wrap: break-word;'>0.730</td><td style='text-align: center; word-wrap: break-word;'>0.725</td><td style='text-align: center; word-wrap: break-word;'>0.42</td><td style='text-align: center; word-wrap: break-word;'>0.89</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>SSL</td><td style='text-align: center; word-wrap: break-word;'>0.766</td><td style='text-align: center; word-wrap: break-word;'>0.765</td><td style='text-align: center; word-wrap: break-word;'>0.48</td><td style='text-align: center; word-wrap: break-word;'>0.92</td></tr><tr><td rowspan="2">HO-3D</td><td style='text-align: center; word-wrap: break-word;'>WSL</td><td style='text-align: center; word-wrap: break-word;'>0.765</td><td style='text-align: center; word-wrap: break-word;'>0.769</td><td style='text-align: center; word-wrap: break-word;'>0.44</td><td style='text-align: center; word-wrap: break-word;'>0.93</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>SSL</td><td style='text-align: center; word-wrap: break-word;'>0.773</td><td style='text-align: center; word-wrap: break-word;'>0.777</td><td style='text-align: center; word-wrap: break-word;'>0.45</td><td style='text-align: center; word-wrap: break-word;'>0.93</td></tr></table>

<div style="text-align: center;">Table 5: Comparison of self-supervised results and weakly-supervised results. Refer to Section 4.4.3 for details.</div>

![Image](images/fc0c4ae75825854b3ce59b38a1cb4ae55aa5d5520bc5c844439173ae76112593.jpg)

<div style="text-align: center;">Figure 6: Failure cases. We show input image, projected joints, and 3D reconstruction. See Section 5 for details.</div>

我们难以用简单的光照模型和粗糙的手部网格来精确模拟复杂的皮肤反光现象。正如表4的最后一行所示，纹理建模并不能给形状重建带来显著的提升，在[^35]中也是如此。这可能是因为手部模型[^36]的细节不够丰富，导致皮肤反光模拟不够准确。

### 6. 结论

我们提出了一种自监督的3D手部重建网络，该网络可以利用无标签的手部图像集合进行训练。该网络将输入图像编码为一组有意义的语义参数，分别用于描述手部姿态、形状、纹理、光照以及相机视角。这些参数可以被解码为带纹理的3D手部网格以及一组3D关节点，进而这些3D网格和关节点可被投影到2D图像空间，这使得我们的网络能够实现端到端学习。该网络在来自2D手部关键点检测的噪声监督源下仍能表现良好，并且能够从单视图手部图像中获取精确的3D手部重建结果。实验结果表明，我们的方法与最先进的完全监督方法相比具有可比的性能。在未来的研究中，有可能将参数化手部网格扩展到其他表示形式（例如有符号距离函数），以实现更精细的手部表面表示。我们也相信，更精确的皮肤反光建模有助于实现保真度更高的手部重建。

致谢：本研究得到了中央高校基本科研业务费项目No.2042020KF0016的支持，同时也部分得到了美国国家科学基金会项目CNS-1951952的资助。

---

## 参考文献

[^1]: Anil Armagan, Guillermo Garcia-Hernando, Seungryul Baek, Shreyas Hampali, Mahdi Rad, Zhaohui Zhang, Shipeng Xie, MingXiu Chen, Boshen Zhang, Fu Xiong, et al. Measuring generalisation to unseen viewpoints, articulations, shapes and objects for 3d hand pose estimation under hand-object interaction. In European Conference on Computer Vision, 2020. 1, 2

[^2]: Vassilis Athitsos and Stan Sclaroff. Estimating 3d hand pose from a cluttered image. In Conference on Computer Vision and Pattern Recognition, 2003. 1

[^3]: Seungryul Baek, Kwang In Kim, and Tae-Kyun Kim. Pushing the envelope for rgb-based dense 3d hand pose estimation via neural rendering. In Conference on Computer Vision and Pattern Recognition, 2019. 2, 3

[^4]: Seungryul Baek, Kwang In Kim, and Tae-Kyun Kim. Weakly-supervised domain adaptation via gan and mesh model for estimating 3d hand poses interacting objects. In Conference on Computer Vision and Pattern Recognition, 2020. 2, 3

[^5]: Luca Ballan, Aparna Taneja, Jürgen Gall, Luc Van Gool, and Marc Pollefeys. Motion capture of hands in action using discriminative salient points. In European Conference on Computer Vision, 2012. 2

[^6]: Volker Blanz and Thomas Vetter. A morphable model for the synthesis of 3d faces. In Proceedings of the 26th annual conference on Computer graphics and interactive techniques, pages 187–194, 1999. 3

[^7]: Adnane Boukhayma, Rodrigo de Bem, and Philip HS Torr. 3d hand shape and pose from images in the wild. In Conference on Computer Vision and Pattern Recognition, pages 10843–10852, 2019. 2, 3, 6, 7

[^8]: Yujun Cai, Liuhao Ge, Jianfei Cai, and Junsong Yuan. Weakly-supervised 3d hand pose estimation from monocular rgb images. In European Conference on Computer Vision, 2018. 1,2,3

[^9]: Zhe Cao, Tomas Simon, Shih-En Wei, and Yaser Sheikh. Openpose: Realtime multi-person 2d pose estimation using part affinity fields. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2019. 2, 5, 7

[^10]: Yujin Chen, Zhigang Tu, Liuhao Ge, Dejun Zhang, Ruizhi Chen, and Junsong Yuan. So-handnet: Self-organizing network for 3d hand pose estimation with semi-supervised learning. In International Conference on Computer Vision, 2019. 1

[^11]: Yujin Chen, Zhigang Tu, Di Kang, Ruizhi Chen, Linchao Bao, Zhengyou Zhang, and Junsong Yuan. Joint hand-object 3d reconstruction from a single image with cross-branch feature fusion. arXiv preprint arXiv:2006.15561, 2020. 2

[^12]: Yajing Chen, Fanzi Wu, Zeyu Wang, Yibing Song, Yonggen Ling, and Linchao Bao. Self-supervised learning of detailed 3d face reconstruction. IEEE Transactions on Image Processing, 29:8696–8705, 2020. 3

[^13]: Martin de La Gorce, David J Fleet, and Nikos Paragios. Model-based 3d hand pose estimation from monocular video. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2011. 3

[^14]: Martin de La Gorce, Nikos Paragios, and David J Fleet. Model-based hand tracking with texture, shading and self-occlusions. In Conference on Computer Vision and Pattern Recognition, 2008. 3

[^15]: Liuhao Ge, Hui Liang, Junsong Yuan, and Daniel Thalmann. Robust 3d hand pose estimation in single depth images: from single-view cnn to multi-view cnns. In Conference on Computer Vision and Pattern Recognition, 2016. 1

[^16]: Liuhao Ge, Zhou Ren, Yuncheng Li, Zehao Xue, Yingying Wang, Jianfei Cai, and Junsong Yuan. 3d hand shape and pose estimation from a single rgb image. In Conference on Computer Vision and Pattern Recognition, 2019. 1,2

[^17]: Shubham Goel, Angjoo Kanazawa, and Jitendra Malik. Shape and viewpoint without keypoints. In European Conference on Computer Vision, 2020. 3

[^18]: Shreyas Hampali, Mahdi Rad, Markus Oberweger, and Vincent Lepetit. Honnotate: A method for 3d annotation of hand and object poses. In Conference on Computer Vision and Pattern Recognition, 2020. 6,7

[^19]: Yana Hasson, Bugra Tekin, Federica Bogo, Ivan Laptev, Marc Pollefeys, and Cordelia Schmid. Leveraging photometric consistency over time for sparsely supervised hand-object reconstruction. In Conference on Computer Vision and Pattern Recognition, 2020. 1, 3, 7

[^20]: Yana Hasson, Gul Varol, Dimitrios Tzionas, Igor Kalevatykh, Michael J Black, Ivan Laptev, and Cordelia Schmid. Learning joint reconstruction of hands and manipulated objects. In Conference on Computer Vision and Pattern Recognition, 2019. 1, 2, 3, 6, 7, 11

[^21]: Markus Höll, Markus Oberweger, Clemens Arth, and Vincent Lepetit. Efficient physics-based implementation for realistic hand-object interaction in virtual reality. In IEEE Conference on Virtual Reality and 3D User Interfaces, 2018. 1

[^22]: Lin Huang, Jianchao Tan, Ji Liu, and Junsong Yuan. Hand-transformer: Non-autoregressive structured modeling for 3d hand pose estimation. In European Conference on Computer Vision, 2020. 1

[^23]: Peter J Huber. Robust estimation of a location parameter. In Breakthroughs in statistics, pages 492–518. Springer, 1992. 5

[^24]: Umar Iqbal, Pavlo Molchanov, Thomas Breuel Juergen Gall, and Jan Kautz. Hand pose estimation via latent 2.5 d heatmap regression. In European Conference on Computer Vision, 2018. 1, 2

[^25]: Hiroharu Kato, Yoshitaka Ushiku, and Tatsuya Harada. Neural 3d mesh renderer. In Conference on Computer Vision and Pattern Recognition, 2018. 4

[^26]: Sameh Khamis, Jonathan Taylor, Jamie Shotton, Cem Keskin, Shahram Izadi, and Andrew Fitzgibbon. Learning an efficient model of hand shape variation from depth images. In Conference on Computer Vision and Pattern Recognition, 2015. 2

[^27]: Diederik P Kingma and Jimmy Ba. Adam: A method for stochastic optimization. In International Conference for Learning Representations, 2014. 6

## [^28]: Arno Knapitsch, Jaesik Park, Qian-Yi Zhou, and Vladlen Koltun. Tanks and temples: Benchmarking large-scale scene reconstruction. ACM Transactions on Graphics, 2017. 6

---

[^29]: Dominik Kulon, Riza Alp Guler, Iasonas Kokkinos, Michael M. Bronstein, and Stefanos Zafeiriou. Weakly-supervised mesh-convolutional hand reconstruction in the wild. In Conference on Computer Vision and Pattern Recognition, 2020. 1, 2, 3

[^30]: Gyeongsik Moon and Kyoung Mu Lee. I2l-meshnet: Image-to-pixel prediction network for accurate 3d human pose and mesh estimation from a single RGB image. In European Conference on Computer Vision, 2020. 2, 6

[^31]: Alejandro Newell, Kaiyu Yang, and Jia Deng. Stacked hour-glass networks for human pose estimation. In European Conference on Computer Vision, 2016. 4

[^32]: Paschalis Panteleris, Iason Oikonomidis, and Antonis Argyros. Using a single rgb frame for real time 3d hand pose estimation in the wild. In Winter Conference on Applications of Computer Vision, 2018. 3

[^33]: Maria Parelli, Katerina Papadimitriou, Gerasimos Potamianos, Georgios Pavlakos, and Petros Maragos. Exploiting 3d hand pose estimation in deep learning-based sign language recognition from RGB videos. In European Conference on Computer Vision. Springer, 2020. 1

[^34]: Adam Paszke, Sam Gross, Soumith Chintala, Gregory Chanan, Edward Yang, Zachary DeVito, Zeming Lin, Alban Desmaison, Luca Antiga, and Adam Lerer. Automatic differentiation in pytorch. In Neural Information Processing Systems Workshops, 2017. 6

[^35]: Neng Qian, Jiayi Wang, Franziska Mueller, Florian Bernard, Vladislav Golyanik, and Christian Theobalt. Parametric hand texture model for 3d hand reconstruction and personalization. In European Conference on Computer Vision. Springer, 2020. 1, 2, 3, 6, 7, 8

[^36]: Javier Romero, Dimitrios Tzionas, and Michael J Black. Embodied hands: Modeling and capturing hands and bodies together. ACM Transactions on Graphics, 2017. 2, 4, 8

[^37]: Adrian Spurr, Umar Iqbal, Pavlo Molchanov, Otmar Hilliges, and Jan Kautz. Weakly supervised 3d hand pose estimation via biomechanical constraints. In European Conference on Computer Vision, 2020. 1, 2, 3, 6, 7

[^38]: Xiao Sun, Bin Xiao, Fangyin Wei, Shuang Liang, and Yichen Wei. Integral human pose regression. In European Conference on Computer Vision, 2018. 4

[^39]: Mingxing Tan and Quoc V Le. Efficientnet: Rethinking model scaling for convolutional neural networks. In International Conference on Machine Learning, 2019. 4, 6, 12

[^40]: Ayush Tewari, Michael Zollhöfer, Pablo Garrido, Florian Bernard, Hyeongwoo Kim, Patrick Pérez, and Christian Theobalt. Self-supervised multi-level face model learning for monocular reconstruction at over 250 Hz. In Conference on Computer Vision and Pattern Recognition, 2018. 3

[^41]: Ayush Tewari, Michael Zollhofer, Hyeongwoo Kim, Pablo Garrido, Florian Bernard, Patrick Perez, and Christian Theobalt. Mofa: Model-based deep convolutional face autoencoder for unsupervised monocular reconstruction. In International Conference on Computer Vision Workshops, 2017. 3

[^42]: Anastasia Tkach, Mark Pauly, and Andrea Tagliasacchi. Sphere-meshes for real-time hand modeling and tracking. ACM Transactions on Graphics, 2016. 2

[^43]: Zhigang Tu, Hongyan Li, Dejun Zhang, Justin Dauwels, Baoxin Li, and Junsong Yuan. Action-stage emphasized spatiotemporal vlad for video action recognition. IEEE Transactions on Image Processing, 28(6):2799–2812, 2019. 1

[^44]: Chengde Wan, Thomas Probst, Luc Van Gool, and Angela Yao. Self-supervised 3d hand pose estimation through training by fitting. In Conference on Computer Vision and Pattern Recognition, 2019. 3

[^45]: Jiayi Wang, Franziska Mueller, Florian Bernard, Suzanne Sorli, Oleksandr Sotnychenko, Neng Qian, Miguel A. Otaduy, Dan Casas, and Christian Theobalt. RGB2Hands: Real-Time Tracking of 3D Hand Interactions from Monocular RGB Video. ACM Transactions on Graphics (Proceedings of SIGGRAPH Asia), 2020. 3

[^46]: Zhou Wang, Alan C Bovik, Hamid R Sheikh, and Eero P Simoncelli. Image quality assessment: from error visibility to structural similarity. IEEE Transactions on Image Processing, 2004. 5

[^47]: Shangzhe Wu, Christian Rupprecht, and Andrea Vedaldi. Unsupervised learning of probably symmetric deformable 3d objects from images in the wild. In Conference on Computer Vision and Pattern Recognition, 2020. 3

[^48]: John Yang, Hyung Jin Chang, Seungeui Lee, and Nojun Kwak. Seqhand: RGB-sequence-based 3d hand pose and shape estimation. In European Conference on Computer Vision, 2020. 2

[^49]: Shanxin Yuan, Guillermo Garcia-Hernando, Björn Stenger, Gyeongsik Moon, Ju Yong Chang, Kyoung Mu Lee, Pavlo Molchanov, Jan Kautz, Sina Honari, Liuhao Ge, et al. Depth-based 3d hand pose estimation: From current achievements to future goals. In Conference on Computer Vision and Pattern Recognition, 2018. 1

[^50]: Xiong Zhang, Qiang Li, Hong Mo, Wenbo Zhang, and Wen Zheng. End-to-end hand mesh recovery from a monocular rgb image. In International Conference on Computer Vision, 2019. 2

[^51]: Yuxiao Zhou, Marc Habermann, Weipeng Xu, Ikhsanul Habibie, Christian Theobalt, and Feng Xu. Monocular real-time hand shape and motion capture using multi-modal data. In Conference on Computer Vision and Pattern Recognition, 2020. 2, 3

[^52]: Christian Zimmermann and Thomas Brox. Learning to estimate 3d hand pose from single rgb images. In International Conference on Computer Vision, 2017. 1, 2, 7

### [^53]: Christian Zimmermann, Duygu Ceylan, Jimei Yang, Bryan Russell, Max Argus, and Thomas Brox. Freihand: A dataset for markerless capture of hand pose and shape from single rgb images. In International Conference on Computer Vision, 2019. 2, 3, 6, 7

---

### 附录

这是正文的附录。我们首先提供了关于所提出的统计正则化项的详细信息（A节），以及实现方式和网络架构的相关说明（B节）。接着在C节中，我们将相机坐标系下的结果与完全监督设置下的结果进行了比较。最后，在E节中展示了更多的可视化结果。

### A. 统计正则化

我们引入了三种正则化项，包括纹理正则化、尺度正则化和骨骼正则化（见正文中的3.4.1节），以使输出的3D手部模型更加合理。具体细节如下。

纹理正则化。由于手部肤色通常较为均匀，我们提出了一种纹理正则化项$E_{C}$来对异常的RGB值进行惩罚，其中$f^{C}(c)$用于计算逐顶点颜色损失：

 $$ E_{C}=\frac{con_{sum}}{n}\sum_{i=1}^{n}f^{C}(c_{i}) $$

 $$f^{C}(c)=\begin{cases}0,&if\bar{c}-2\sigma_{c}<c<\bar{c}+2\sigma_{c},\\\left\|c-\bar{c}\right\|_{2}^{2},&else,\end{cases}$$

这里，$\bar{c} \in \mathbb{R}^3$是所有顶点的平均RGB值，而$\sigma_c \in \mathbb{R}^3$是三个颜色通道的标准差。

尺度正则化。尺度正则化项用于约束手骨的长度，以便为这种单目三维重建任务中的尺度不确定性提供参考。对于每个数据集，我们定义中指近节指骨的平均骨长 $\bar{l}$（即正文图3A中第9个关节与第10个关节之间的骨 $\overrightarrow{910}$）。尺度正则化项定义为 $E_s = \| l - \bar{l} \|^2$，旨在促使估计出的手部模型中指近节指骨的长度 l 接近平均长度 $\bar{l} \in \mathbb{R}^1$。我们通过经验将其设为 $\bar{l} = 2.82$厘米。

骨骼正则化。骨骼正则化项用于惩罚无效的手部姿态。我们并未对姿态参数 $\theta$ 施加正则化以使其接近平均姿态 [^20]（我们称之为平均姿态先验），而是认为距离平均姿态不同但可行的姿态应被同等对待，无需施加任何惩罚。因此，我们为每个旋转角度 $[\text{min}_i, \text{max}_i]$（如正文图3B所示）定义了可行范围 $a_i$（表6），然后对超出该阈值的情况予以惩罚：

 $$ E_{J}=\frac{1}{15}\sum_{i=1}^{15}f_{i}^{J}(a_{i}) $$

![Image](images/893804c60fdc39ece4000833c51b67b4f11600d9b2acdffebb6b5e0aac678bc6.jpg)

<div style="text-align: center;">Figure 7: Qualitative comparison of the average pose prior [^20] and ours pose prior. We give two samples with the input image, projected output keypoints, and 3D mesh in two viewpoints.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Bone</td><td style='text-align: center; word-wrap: break-word;'>Azimuth</td><td style='text-align: center; word-wrap: break-word;'>Pitch</td><td style='text-align: center; word-wrap: break-word;'>Roll</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$\frac{{1}}{{2}}$</td><td style='text-align: center; word-wrap: break-word;'>(-22.5,33.75)</td><td style='text-align: center; word-wrap: break-word;'>(-22.5,22.5)</td><td style='text-align: center; word-wrap: break-word;'>(0,90)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$\frac{{2}}{{3}}$</td><td style='text-align: center; word-wrap: break-word;'>(-5,5)</td><td style='text-align: center; word-wrap: break-word;'>(-22.5,22.5)</td><td style='text-align: center; word-wrap: break-word;'>(-5,5)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$\frac{{3}}{{4}}$</td><td style='text-align: center; word-wrap: break-word;'>(-5,5)</td><td style='text-align: center; word-wrap: break-word;'>(-100,20)</td><td style='text-align: center; word-wrap: break-word;'>(-5,5)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$\frac{{5}}{{6}}$</td><td style='text-align: center; word-wrap: break-word;'>(-10,10)</td><td style='text-align: center; word-wrap: break-word;'>(-100,10)</td><td style='text-align: center; word-wrap: break-word;'>(-5,5)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$\frac{{7}}{{8}}$</td><td style='text-align: center; word-wrap: break-word;'>(-5,5)</td><td style='text-align: center; word-wrap: break-word;'>(-100,10)</td><td style='text-align: center; word-wrap: break-word;'>(-5,5)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$\frac{{9}}{{10}}$</td><td style='text-align: center; word-wrap: break-word;'>(-5,5)</td><td style='text-align: center; word-wrap: break-word;'>(-100,10)</td><td style='text-align: center; word-wrap: break-word;'>(-5,5)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$\frac{{10}}{{11}}$</td><td style='text-align: center; word-wrap: break-word;'>(-5,5)</td><td style='text-align: center; word-wrap: break-word;'>(-100,10)</td><td style='text-align: center; word-wrap: break-word;'>(-5,5)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$\frac{{11}}{{12}}$</td><td style='text-align: center; word-wrap: break-word;'>(-5,5)</td><td style='text-align: center; word-wrap: break-word;'>(-100,10)</td><td style='text-align: center; word-wrap: break-word;'>(-5,5)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$\frac{{13}}{{14}}$</td><td style='text-align: center; word-wrap: break-word;'>(-10,10)</td><td style='text-align: center; word-wrap: break-word;'>(-100,10)</td><td style='text-align: center; word-wrap: break-word;'>(-5,5)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$\frac{{14}}{{15}}$</td><td style='text-align: center; word-wrap: break-word;'>(-5,5)</td><td style='text-align: center; word-wrap: break-word;'>(-100,10)</td><td style='text-align: center; word-wrap: break-word;'>(-5,5)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$\frac{{15}}{{16}}$</td><td style='text-align: center; word-wrap: break-word;'>(-5,5)</td><td style='text-align: center; word-wrap: break-word;'>(-100,10)</td><td style='text-align: center; word-wrap: break-word;'>(-5,5)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$\frac{{17}}{{18}}$</td><td style='text-align: center; word-wrap: break-word;'>(-10,20)</td><td style='text-align: center; word-wrap: break-word;'>(-100,10)</td><td style='text-align: center; word-wrap: break-word;'>(-20,5)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$\frac{{18}}{{19}}$</td><td style='text-align: center; word-wrap: break-word;'>(-5,5)</td><td style='text-align: center; word-wrap: break-word;'>(-100,10)</td><td style='text-align: center; word-wrap: break-word;'>(-5,5)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$\frac{{19}}{{20}}$</td><td style='text-align: center; word-wrap: break-word;'>(-5,5)</td><td style='text-align: center; word-wrap: break-word;'>(-100,10)</td><td style='text-align: center; word-wrap: break-word;'>(-5,5)</td></tr></table>

<div style="text-align: center;">Table 6: The minimum and maximum values in degrees of the joint angle parameters used in our proposed skeleton regularization term.</div>

 $$ f_{i}^{J}(a)=\begin{cases}min_{i}-a,&if a\leq min_{i},\\0,&if min_{i}\leq a\leq max_{i},\\a-max_{i},&if a\geq max_{i},\end{cases} $$

如图7所示，我们展示了使用平均姿态先验和我们的姿态先验的一些样本。使用平均姿态先验时，投影输出的关节位置可能看似合理，但三维形状下的手部结构却无效。我们认为这是因为平均姿态先验根据姿态与平均姿态的距离对所有姿态施加惩罚，无法区分有效的和无效的手部结构。而我们仅惩罚无效的手部姿态，且根据偏差程度来确定该惩罚项的强度，从而取得了更好的性能。

---

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Stage</td><td style='text-align: center; word-wrap: break-word;'>Operator</td><td style='text-align: center; word-wrap: break-word;'>Output</td></tr><tr><td rowspan="2">$f_{base}$</td><td style='text-align: center; word-wrap: break-word;'>Linear(1536,1024),BN,ReLU</td><td style='text-align: center; word-wrap: break-word;'>$1 \times 10^{24}$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Linear(1024,512),BN,ReLU</td><td style='text-align: center; word-wrap: break-word;'>$1 \times 512$</td></tr><tr><td rowspan="2">$f_{pose}$</td><td style='text-align: center; word-wrap: break-word;'>Linear(512,128),ReLU</td><td style='text-align: center; word-wrap: break-word;'>$1 \times 128$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Linear(128,30)</td><td style='text-align: center; word-wrap: break-word;'>$1 \times 30$</td></tr><tr><td rowspan="2">$f_{shape}$</td><td style='text-align: center; word-wrap: break-word;'>Linear(512,128),ReLU</td><td style='text-align: center; word-wrap: break-word;'>$1 \times 128$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Linear(128,10)</td><td style='text-align: center; word-wrap: break-word;'>$1 \times 10$</td></tr><tr><td rowspan="3">$f_{trans}$</td><td style='text-align: center; word-wrap: break-word;'>Linear(512,128),ReLU</td><td style='text-align: center; word-wrap: break-word;'>$1 \times 128$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Linear(128,32)</td><td style='text-align: center; word-wrap: break-word;'>$1 \times 32$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Linear(128,3)</td><td style='text-align: center; word-wrap: break-word;'>$1 \times 3$</td></tr><tr><td rowspan="3">$f_{rot}$</td><td style='text-align: center; word-wrap: break-word;'>Linear(512,128),ReLU</td><td style='text-align: center; word-wrap: break-word;'>$1 \times 128$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Linear(128,32)</td><td style='text-align: center; word-wrap: break-word;'>$1 \times 32$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Linear(128,3)</td><td style='text-align: center; word-wrap: break-word;'>$1 \times 3$</td></tr><tr><td rowspan="3">$f_{scale}$</td><td style='text-align: center; word-wrap: break-word;'>Linear(512,128),ReLU</td><td style='text-align: center; word-wrap: break-word;'>$1 \times 128$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Linear(128,32)</td><td style='text-align: center; word-wrap: break-word;'>$1 \times 32$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Linear(128,1)</td><td style='text-align: center; word-wrap: break-word;'>$1 \times 1$</td></tr></table>

<div style="text-align: center;">Table 7: The hand regressor architecture. Linear transformation layers are given as Linear (in_size, out_size).</div>

### B. 实现与架构细节

对于正文中3.4节所述的权重系数，我们设定为 $w_{3d}=1$、$w_{2d}=0.001$、$w_{con}=0.0002$、$w_{geo}=0.001$、$w_{photo}=0.005$、$w_{regu}=0.01$、$w_{ori}=100$、$w_{SSIM}=0.2$、$w_{C}=0.5$、$w_{s}=10000$ 和 $w_{J}=10$。针对HO-3D数据集，我们利用2D关键点信息从原始图像中裁剪出手区域，然后将裁剪后的图像缩放为 $224 \times 224$ 作为训练样本，并依靠提供的2D边界框来裁剪测试帧。对于FreiHAND数据集，我们不应用任何数据增强操作。

三维重建网络采用编码器-解码器架构。EfficientNet-b0 [^39] 将输入图像 $I \in \mathbb{R}^{224 \times 224 \times 3}$ 编码为潜在特征图 $m_h \in \mathbb{R}^{7 \times 7 \times 1536}$，同时我们也会提取中间特征图 $m_l \in \mathbb{R}^{56 \times 56 \times 32}$。通过最大池化操作从 $v_h \in \mathbb{R}^{1536}$ 中获取向量 $m_h$，随后将其传入一系列全连接层 $f_{base}$。接着，多个头（$f_{pose}$、$f_{shape}$、$f_{trans}$、$f_{rot}$、$f_{scale}$）用于估计姿态 $\theta$、形状 $\beta$、平移量T、旋转量R以及尺度s（表7）。我们还使用一系列2D卷积层 $f_{conv}$ 和两个头 $f_{tex}$、$f_{light}$，将高分辨率特征 $m_l$ 编码为手部纹理C和场景光照L（表8）。

### C. 与使用真实三维数据作为监督的比较

在我们所有的实验中，均未使用尺度信息（由FreiHAND测试集提供）或深度信息（由HO-3D测试集提供）。通常，评估三维手部姿态和形状估计时会采用以手为中心的坐标系（例如通过Procrustes对齐），但准确输出具有精确位置和尺度的三维手部模型同样重要。为此，我们

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Stage</td><td style='text-align: center; word-wrap: break-word;'>Operator</td><td style='text-align: center; word-wrap: break-word;'>Output</td></tr><tr><td rowspan="5">$f_{conv}$</td><td style='text-align: center; word-wrap: break-word;'>Conv2d(32,48,10,4,1), ReLU</td><td style='text-align: center; word-wrap: break-word;'>$13 \times 13 \times 48$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>MaxPool(3,2)</td><td style='text-align: center; word-wrap: break-word;'>$6 \times 6 \times 48$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Conv2d(48,64,3,1,0), ReLU</td><td style='text-align: center; word-wrap: break-word;'>$4 \times 4 \times 64$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>MaxPool(2,2)</td><td style='text-align: center; word-wrap: break-word;'>$2 \times 2 \times 64$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Flatten</td><td style='text-align: center; word-wrap: break-word;'>$1 \times 256$</td></tr><tr><td rowspan="2">$f_{tex}$</td><td style='text-align: center; word-wrap: break-word;'>Linear(256,64),ReLU</td><td style='text-align: center; word-wrap: break-word;'>$1 \times 64$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Linear(64,2334)</td><td style='text-align: center; word-wrap: break-word;'>$1 \times 2334$</td></tr><tr><td rowspan="2">$f_{light}$</td><td style='text-align: center; word-wrap: break-word;'>Linear(256,64),ReLU</td><td style='text-align: center; word-wrap: break-word;'>$1 \times 64$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Linear(64,11)</td><td style='text-align: center; word-wrap: break-word;'>$1 \times 11$</td></tr></table>

<div style="text-align: center;">Table 8: The texture and lighting regressor architecture. Convolution parameters are given as Conv2d (in_channels, out_channels, kernel_size, stride, padding). The 2D max pooling is given as MaxPool (kernel_size, stride). The linear transformation layer is given as Linear (in_size, out_size).</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td rowspan="2">Method
Supervision</td><td colspan="2">MANO-CNN</td><td colspan="2">Ours</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>MPJP $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>MPVPE $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>MPJPE $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>MPVPE $\downarrow$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>FSL</td><td style='text-align: center; word-wrap: break-word;'>8.72</td><td style='text-align: center; word-wrap: break-word;'>8.84</td><td style='text-align: center; word-wrap: break-word;'>8.66</td><td style='text-align: center; word-wrap: break-word;'>8.77</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>SSL</td><td style='text-align: center; word-wrap: break-word;'>12.75</td><td style='text-align: center; word-wrap: break-word;'>12.81</td><td style='text-align: center; word-wrap: break-word;'>10.57</td><td style='text-align: center; word-wrap: break-word;'>10.60</td></tr></table>

<div style="text-align: center;">Table 9: Comparison of unaligned results of MANO-CNN and Ours under fully-supervision (FSL) or self-supervision (SSL) on the FreiHAND testing set.</div>

在相机坐标系下展示了所提出的自监督学习（SSL）方法以及全监督学习（FSL）方案的结果。请注意，本节报告的是未经Procrustes对齐的原始输出结果。对于FSL，我们使用了二维关键点标注的真值数据，这些关键点的置信度被设定为相同值，同时额外引入了三维关节损失以提供真实的三维监督。三维关节损失会强制使输出关节 $k = 21$ 与真值关节 $J = \{j_i \in \mathbb{R}^3 | 1 \leq i \leq k\}$ 的 $J^{gt} = \{j_i^{gt} \in \mathbb{R}^3 | 1 \leq i \leq k\}$ 保持一致。我们通过权重因子 $E_{3dj}$ 将 $w_{3dj} = 100$ 加入到E中。

 $$ E_{3d j}=\frac{1}{k}\sum_{i=1}^{k}\parallel j_{i}-j_{i}^{g t}\parallel_{2}^{2} $$

使用三维标注的一大优势在于它有助于网络学习输出手部的深度值。在表9中，我们比较了在FSL和SSL设置下，我们的方法与MANO-CNN未经对齐的结果。两种方法在FSL下的性能都明显优于SSL，而我们的方法在FSL和SSL下均优于MANO-CNN（FSL下的MPJPE降低了0.06厘米，SSL下的MPJPE降低了2.18厘米）。我们进一步发现，当监督强度从FSL降至SSL时，我们的方法性能下降幅度小于MANO-CNN：我们的方法MPJPE仅增加了22.1%，而MANO-CNN则增加了46.2%。我们认为这是因为我们的方法相比MANO-CNN更能适应自监督学习环境。

---

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td rowspan="2">Evaluation Matrix\Keypoint Set</td><td rowspan="2">OpenPose</td><td colspan="2">Predicted</td><td colspan="2">Projected</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>w/o 2D-3D</td><td style='text-align: center; word-wrap: break-word;'>w/ 2D-3D</td><td style='text-align: center; word-wrap: break-word;'>w/o 2D-3D</td><td style='text-align: center; word-wrap: break-word;'>w/ 2D-3D</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Per Joint</td><td style='text-align: center; word-wrap: break-word;'>0.807</td><td style='text-align: center; word-wrap: break-word;'>0.820</td><td style='text-align: center; word-wrap: break-word;'>0.828</td><td style='text-align: center; word-wrap: break-word;'>0.808</td><td style='text-align: center; word-wrap: break-word;'>0.825</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Per Frame Mean</td><td style='text-align: center; word-wrap: break-word;'>0.799</td><td style='text-align: center; word-wrap: break-word;'>0.815</td><td style='text-align: center; word-wrap: break-word;'>0.825</td><td style='text-align: center; word-wrap: break-word;'>0.805</td><td style='text-align: center; word-wrap: break-word;'>0.823</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Per Frame Max</td><td style='text-align: center; word-wrap: break-word;'>0.466</td><td style='text-align: center; word-wrap: break-word;'>0.517</td><td style='text-align: center; word-wrap: break-word;'>0.545</td><td style='text-align: center; word-wrap: break-word;'>0.543</td><td style='text-align: center; word-wrap: break-word;'>0.577</td></tr></table>

<div style="text-align: center;">Table 10: Comparison of the AUC (higher is better) of 2D keypoint sets used or outputted at the training stage on FreiHAND in different evaluation matrix, where the 2D error value is from 0 to 50 pixel.</div>

### D. 不同二维关键点集的更多比较

在正文的4.4.2节和图4中，我们比较了“逐关节”二维误差的比例。此处，我们在图8中进一步可视化了“每帧最大值”二维误差的比例，即二维MPJPE最大值不超过特定像素数的帧数比例。表10展示了二维数据中“逐关节”误差、“每帧平均值”误差以及“每帧最大值”误差的AUC（0~50像素）。

如图8和表10所示，二维-三维一致性损失 $E_{con}$ 提升了二维分支（从未使用二维-三维一致性损失的预测结果到使用了该损失后的预测结果）和三维分支（从未使用二维-三维一致性损失的投影结果到使用了该损失后的投影结果）的AUC值。二维和三维分支的所有结果均优于用作关键点监督源的OpenPose。

如表10所示，就“逐关节”和“每帧平均值”而言，二维分支的预测结果优于三维分支的投影结果，因为二维分支专为二维关键点估计而设计，而三维分支的结果是基于三维输出投影得到的。但在“每帧最大值”方面，我们发现投影结果优于预测结果。我们认为这是由于MANO模型中包含的约束条件，使得投影结果能够消除异常的二维结果。因此，对异常值更为敏感的“每帧最大值”的AUC值，由于 $E_{con}$ 的作用以及网络训练的强大正则化特性（见正文4.4.2节），从OpenPose到预测并投影的结果有了显著提升。

### E. 定性结果

我们提供了更高质量的单视图3D手部重建结果。图9和图10展示了来自FreiHAND测试集的样本的定性结果。图11显示了来自HO-3D测试集的样本的定性结果。需要注意的是，HO-3D中的手部存在更严重的遮挡现象，这导致在自监督纹理学习过程中，掩码前景区域中会出现更多物体或背景像素，因此HO-3D上的纹理估计精度较低。

由于HO-3D测试集中提供了视频序列，我们在图12中可视化了序列帧的结果。尽管训练时我们并未利用时序信息，且仅使用单张图像进行推理，但我们的模型仍能针对每个视频序列输出形状与纹理均一致且精确的三维模型。

![Image](images/f7935b91d318205fd7bafe15579ceee4c32d415d6836fbf6563454bfcf28d4a4.jpg)

<div style="text-align: center;">Figure 8: A comparison of 2D keypoint sets used or outputted at the training stage on FreiHAND. The fraction of frames within maximum joint distance is plotted.</div>

图12展示了HO-3D测试集上的结果。尽管我们在训练过程中未利用时序信息，且仅用单张图像进行推理，但我们的模型仍能输出形状准确、且各视频序列间形状和纹理一致的结果。

---

![Image](images/d759b9b11ab55c19ac2c1e59cc7112e131585e0e8b8d65f58623f6c770ef4f72.jpg)

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

![Image](images/9e771aa71e930daa1b270bbbe318b9cc1083197529492c7cba2f7d3bd9bd0633.jpg)

![Image](images/d8198b39853d86c63c3f17dfc5454a5722577a6d6668d99be7770609e6de6dab.jpg)

![Image](images/9fcee11a89ee2b7a6cfee04c266342e96c8385fba9888ae99673a7b9d85dc1cf.jpg)

![Image](images/776d0eae2abe3eaaa6546c7dc4321837376220f527bdc6187213c291b3070d5d.jpg)

![Image](images/53785186e50c4d246745454bffc55f3fdc202f4b8716df32b82799416cf1ccd5.jpg)

![Image](images/2767902c96d60e06925f2b6ef0fdb91b4b363ab65948f15ecb02a719f94a1fc9.jpg)

![Image](images/80bf15335c347db692ecac5e84f3abe690c9dc5e96443436e74d83b958765e08.jpg)

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

输入图像

输出结果

关节位置

3D重建结果

<div style="text-align: center;">Figure 9: Qualitative visualization of our method on the FreiHAND testing set (Part 1). From left to right: input image, output 3D joints projected to image space, output 3D mesh projected to image space, 3D mesh from different views (4th-10th column).</div>

---

![Image](images/d451fb2424d7a1c2bcbe27918278c88d3119ff6518e2f785cd537a3177e37e6d.jpg)

![Image](images/c4481f935bf2542bfff082eaef40c2e48ffa9d30ee86d831bad26cb795fb4fd7.jpg)

![Image](images/3e90e94b0d6256f9c8f37e0c8de68eca18e5a5e4bbabebf858c79158b479f1e8.jpg)

![Image](images/40dc3744fb61a3c2c1a99f674fc3ec8674d465a76f60d90ff33f741f75ae5198.jpg)

![Image](images/57b17e3402481399642ece158c3ff526de67789ecc635cc11059ec5ebac16f72.jpg)

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

![Image](images/0155a6f4d97d23872066aaf8463aaf8f84f51a13c566d66ea684287befd7fc08.jpg)

![Image](images/282deb2ce579fa8a1643221cc00393f19b68a624f0a1ef5097ce18701901f3d8.jpg)

![Image](images/741f82a1ab226e8f1b22184b5c8250076241914c9afda066971b1f8b67b0c3ac.jpg)

![Image](images/163552d3d9caf0fad124a658d223e7c0cdbbbb54447c278f4af8ce8814fbed01.jpg)

输入输出

图像与关节位置

3D重建结果

<div style="text-align: center;">Figure 10: Qualitative visualization of our method on the FreiHAND testing set (Part 2). From left to right: input image, output 3D joints projected to image space, output 3D mesh projected to image space, 3D mesh from different views (4th-10th column).</div>

---

![Image](images/35cf9f2060b1f4b23633693d7ed4a534bef14141b469a28b5e690ef2559a991d.jpg)

![Image](images/05fa3163b4e76a074974265a57861ccd0c7fe5929dc041685f31d2c28249667f.jpg)

![Image](images/ab300f97048c59b69c8c6638d3346de117556751acd49d17a206118695f76953.jpg)

![Image](images/5268281552c94d47d046ed04ef6f15d444082a262dd9839d3379b81b62c5d589.jpg)

![Image](images/763d48c77edb7058bd2e4b2ffc7c57d818b6651ee6c82d40ace3718791f94023.jpg)

![Image](images/5011e339b5c9c1e878e9fffeeda80061438305c8c11b77a42cab201dc30bf52e.jpg)

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

![Image](images/7612c1896a5ab5e515334102a5630586eb3a82de8754dc1ff50164675b71017e.jpg)

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

![Image](images/18a9adf79594eea9b8d9020da06eb91aa557f2daf09ab3546278561133a7e782.jpg)

输入输出、图像与关节位置

3D重建结果

<div style="text-align: center;">Figure 11: Qualitative visualization of our method on the HO-3D testing set. From left to right: input image, output 3D joints projected to image space, output 3D mesh projected to image space, 3D mesh from different views (4th-10th column).</div>

---

![Image](images/dcbd1a79337d11f331d55396998b94742edc462ec413e519e13a57cc1955437e.jpg)

<div style="text-align: center;">Figure 12: Qualitative visualization of our method on the HO-3D testing set. We give hand reconstruction results for four sequences. Eight samples are shown in each sequence, and we visualize the input image, projected output joints, and output mesh for each sample.</div>
