动机与贡献
这篇文章是基于他们在2017年ICCV上发表的《learning to estimate 3d hand pose from single RGB images》论文基础上,做的进一步改(guan)进(shui), 两篇论文对比,比较大的区别是2019年的工作在输出手部关节点的3D pose基础上,同时给出了mesh的估计结果,同时改进了2017年的关节点检测方案,摒弃了手部分割子网络。
这篇文章认为的目前业界方案存在的问题:
- 单目RGB方案仅生成手部关键点的3D位置,不生成mesh,不能完整表达手的3D形态。
- 没能解决合成数据训练和真实场景应用之间的domain gap。
工作贡献:
- 利用Graph CNN重构手部表面的完整3D面片。
- 为了实现全监督训练,构建了包含3D meshes和3D poses的大尺度合成数据集。
- 提出利用真实数据深度图的弱监督训练方案,解决合成与真实之间的domain gap问题。
结构设计

Loss设计
Heat-map Loss
LH=j=1∑J∣∣Hj−Hj^∣∣22
J=21, 2D关键点热力图的分辨率为64*64,真值图是由每个2D关节点为中心,4px标准差的2D高斯分布。本质上是MSE Loss。
Mesh Loss
LM=λvLv+λnLn+λeLe+λlLl
Lv是面片顶点的2D/3D loss, Ln是面片的法向Loss, Le是组成面片的边loss,Ll是Lalacian loss.
疑惑:通过渲染得到的合成数据尚能得到此loss,如果对真实场景做调优,很难获取如此完备的真值。
Lv=i=1∑N∣∣vi3D−vi^3D∣∣22+∣∣vi2D−vi2D^∣∣22
Ln=t∑(i,j)∈t∑∣∣⟨vi^3D−vj^3D,nt⟩∣∣22
mesh中第t个三角面片的第i和第j个顶点,这两个顶点构成的向量应与法向量nt正交。
Le=i=1∑E(∣∣ei∣∣22−∣∣ei^∣∣22)2
Ll=i=1∑N∣∣δi−vk∈N(vi)∑δk/Bi∣∣22
δi=vi3D−vi^3D,N(vi)是顶点vi的周围点集合,Bi是集合内的顶点数,Laplacian loss的引入防止相邻顶点有相反的offset,保证面片的局部表面平滑性。
在参数配置上,λv=1, λn=1, λe=1, λl=50。
3D Pose Loss
LJ=j=1∑J∣∣ϕj3D−ϕj^3D∣∣22
ϕj3D和ϕj^3D分别是3D关节点的真值与估计值。
在网络实际设计时,先分别训练stacked hourglasse网络+heat-map loss, 3D pose regressor + 3D pose loss,得到准确的2D/3D关节点。再利用Lfully端到端训练整体网络(stacked hourglass网络 + residual网络+Graph CNN)用以生成面片。
Lfully=λHLH+λMLM+λJLJ
其中,λH=0.5, λM=1, λJ=1
效果
耗时
在1080 GPU上可以跑到19.9ms,大头在backbone上,花了12.6ms,residual network + Graph CNN花了4.7ms,pose regressor花了2.6ms
定量实验结果
3D手部面片重构效果评估

3D手部Pose估计效果评估
