单张RGB图估计3D手部姿态与形态

动机与贡献

这篇文章是基于他们在2017年ICCV上发表的《learning to estimate 3d hand pose from single RGB images》论文基础上,做的进一步改(guan)进(shui), 两篇论文对比,比较大的区别是2019年的工作在输出手部关节点的3D pose基础上,同时给出了mesh的估计结果,同时改进了2017年的关节点检测方案,摒弃了手部分割子网络。

这篇文章认为的目前业界方案存在的问题:

  1. 单目RGB方案仅生成手部关键点的3D位置,不生成mesh,不能完整表达手的3D形态。
  2. 没能解决合成数据训练和真实场景应用之间的domain gap。

工作贡献:

  1. 利用Graph CNN重构手部表面的完整3D面片。
  2. 为了实现全监督训练,构建了包含3D meshes3D poses的大尺度合成数据集。
  3. 提出利用真实数据深度图的弱监督训练方案,解决合成与真实之间的domain gap问题。

结构设计

在这里插入图片描述

Loss设计

Heat-map Loss

L H = ∑ j = 1 J ∣ ∣ H j − H j ^ ∣ ∣ 2 2 L_H = \sum_{j=1}^{J} ||H_j - \hat{H_j}||^2_2 LH=j=1JHjHj^22
J=21, 2D关键点热力图的分辨率为64*64,真值图是由每个2D关节点为中心,4px标准差的2D高斯分布。本质上是MSE Loss。

Mesh Loss

L M = λ v L v + λ n L n + λ e L e + λ l L l L_M = \lambda_vL_v + \lambda_nL_n + \lambda_eL_e + \lambda_lL_l LM=λvLv+λnLn+λeLe+λlLl
L v L_v Lv是面片顶点的2D/3D loss, L n L_n Ln是面片的法向Loss, L e L_e Le是组成面片的边loss, L l L_l Ll是Lalacian loss.
疑惑:通过渲染得到的合成数据尚能得到此loss,如果对真实场景做调优,很难获取如此完备的真值。
L v = ∑ i = 1 N ∣ ∣ v i 3 D − v i ^ 3 D ∣ ∣ 2 2 + ∣ ∣ v i 2 D − v i 2 D ^ ∣ ∣ 2 2 L_v = \sum_{i=1}^N ||v_i^{3D} - \hat{v_i}^{3D}||_2^2 + ||v_i^{2D} - \hat{v_i^{2D}}||_2^2 Lv=i=1Nvi3Dvi^3D22+vi2Dvi2D^22

L n = ∑ t ∑ ( i , j ) ∈ t ∣ ∣ ⟨ v i ^ 3 D − v j ^ 3 D , n t ⟩ ∣ ∣ 2 2 L_n = \sum_t\sum_{(i,j)\in t}||\langle\hat{v_i}^{3D} - \hat{v_j}^{3D}, n_t\rangle||_2^2 Ln=t(i,j)tvi^3Dvj^3D,nt22
mesh中第t个三角面片的第i和第j个顶点,这两个顶点构成的向量应与法向量 n t n_t nt正交。
L e = ∑ i = 1 E ( ∣ ∣ e i ∣ ∣ 2 2 − ∣ ∣ e i ^ ∣ ∣ 2 2 ) 2 L_e = \sum_{i=1}^{E}(||e_i||_2^2 - ||\hat{e_i}||_2^2)^2 Le=i=1E(ei22ei^22)2
L l = ∑ i = 1 N ∣ ∣ δ i − ∑ v k ∈ N ( v i ) δ k / B i ∣ ∣ 2 2 L_l=\sum_{i=1}^N||\delta_i -\sum_{v_k\in N(v_i)}\delta_k/B_i||_2^2 Ll=i=1NδivkN(vi)δk/Bi22
δ i = v i 3 D − v i ^ 3 D \delta_i=v_i^{3D} -\hat{v_i}^{3D} δi=vi3Dvi^3D N ( v i ) N(v_i) N(vi)是顶点 v i v_i vi的周围点集合, B i B_i Bi是集合内的顶点数,Laplacian loss的引入防止相邻顶点有相反的offset,保证面片的局部表面平滑性。
在参数配置上, λ v = 1 \lambda_v=1 λv=1, λ n = 1 \lambda_n=1 λn=1, λ e = 1 \lambda_e=1 λe=1, λ l = 50 \lambda_l=50 λl=50

3D Pose Loss

L J = ∑ j = 1 J ∣ ∣ ϕ j 3 D − ϕ j ^ 3 D ∣ ∣ 2 2 L_J = \sum_{j=1}^J||\phi_j^{3D} - \hat{\phi_j}^{3D}||_2^2 LJ=j=1Jϕj3Dϕj^3D22

ϕ j 3 D \phi_j^{3D} ϕj3D ϕ j ^ 3 D \hat{\phi_j}^{3D} ϕj^3D分别是3D关节点的真值与估计值。

在网络实际设计时,先分别训练stacked hourglasse网络+heat-map loss, 3D pose regressor + 3D pose loss,得到准确的2D/3D关节点。再利用 L f u l l y L_{fully} Lfully端到端训练整体网络(stacked hourglass网络 + residual网络+Graph CNN)用以生成面片。
L f u l l y = λ H L H + λ M L M + λ J L J L_{fully} = \lambda_HL_H+\lambda_ML_M+\lambda_JL_J Lfully=λHLH+λMLM+λJLJ
其中, λ H = 0.5 \lambda_H=0.5 λH=0.5, λ M = 1 \lambda_M=1 λM=1, λ J = 1 \lambda_J=1 λJ=1

效果

耗时

在1080 GPU上可以跑到19.9ms,大头在backbone上,花了12.6ms,residual network + Graph CNN花了4.7ms,pose regressor花了2.6ms

定量实验结果

3D手部面片重构效果评估

在这里插入图片描述

3D手部Pose估计效果评估

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值