SPIN Learning to Reconstruct 3D Human Pose and Shape via Model-fitting in the Loop

SPIN - SMPL oPtimization IN the loop
paper title: Learning to Reconstruct 3D Human Pose and Shape via Model-fitting in the Loop
paper link:https://arxiv.org/pdf/1909.12828.pdf
oral or demo video:https://www.seas.upenn.edu/~nkolot/projects/spin/
project: -
github: https://github.com/nkolot/SPIN
conf & anthor: ICCV 2019, Nikos Kolotouros(UPenn) et al;
arXiv submit v1:2019.09

主要内容

这篇文章主要是将基于迭代优化的方法和基于网络回归的方法进行结合。网络预测的结果作为优化方法的初始值,加快迭代优化的速度和准确性;迭代优化的结果可以作为网络的一个强先验。两种方法相互辅助,使整个方法有一种自我提升的能力,称之为SPIN(SPML oPtimization IN the loop)。

方法流程

1. 方法流程概览
文章的主要流程如下图:
SPIN Learning to Reconstruct 3D Human Pose and Shape via Model-fitting in the Loop
首先图片通过网络后得到人体姿态的描述参数 Θ r e g \Theta_{reg} Θreg(2D关键点检测网络对应的就是关节点的图像坐标),然后作为初始参数输入到迭代优化模块(SMPLify),迭代得到优化后的人体姿态 Θ o p t \Theta_{opt} Θopt。接下来就是"相互促进"的地方,在计算网络的损失时候,不是直接使用groundtruth,而是使用迭代优化模块的输出来计算,得到 ∣ ∣ Θ r e g − θ o p t ∣ ∣ ||\Theta_{reg}-\theta_{opt}|| Θregθopt。这种情况下,迭代优化的效果越好,网络训练的越好;网络训练的越好,迭代初始值越好,优化结果越好,达到self-improving in the loop。
因为使用模型优化的结果作为groundtruth,这样即使训练图片没有3D groundtruth,也可以进行训练。

2. SMPL
关于SMPL的内容可以参见之前的文章SMPL

3. 回归网络
回归网络主要架构与论文End-to-end Recovery of Human Shape and Pose一致,如下图:
SPIN Learning to Reconstruct 3D Human Pose and Shape via Model-fitting in the Loop
网络输出人体姿态的pose θ r e g \theta_{reg} θreg,shape β r e g \beta_{reg} βreg和相机参数 Π r e g \Pi_{reg} Πreg。根据相机参数和模型的关节位置 X X X可以推算关节点的2D位置:
J r e g = Π r e g ( X r e g ) J_{reg} = \Pi_{reg}(X_{reg}) Jreg=Πreg(Xreg)
这里,如果使用训练图片的groundtruth label,那损失函数的形式就是:
L 2 D = ∣ ∣ J r e g − J g t ∣ ∣ L_{2D} = ||J_{reg} - J_{gt}|| L2D=JregJgt

4. 迭代优化
迭代优化主要使用论文SMPLify的流程。SMPLify基于优化的方法,通过最小化拟合误差,将SMPL模型拟合到2D的人体关键点上,目标函数的形式如下:
E J ( β ; θ ; K , J e s t + λ θ E θ ( θ ) + λ α E α ( θ ) + λ β E β ( β ) ) E_{J}(\beta;\theta;K,J_{est} + \lambda_{\theta}E_{\theta}(\theta) + \lambda_{\alpha}E_{\alpha}(\theta) + \lambda_{\beta}E_{\beta}(\beta)) EJ(β;θ;K,Jest+λθEθ(θ)+λαEα(θ)+λβEβ(β))
其中:

  • θ \theta θ b e t a beta beta分别是SMPL模型的pose和shape参数;
  • K K K是摄像机参数;
  • E θ ( θ ) E_{\theta}(\theta) Eθ(θ)是shape拟合的混合高斯先验;
  • E α ( θ ) E_{\alpha}(\theta) Eα(θ)是手肘和膝盖关节的不正常旋转的惩罚;
  • E β ( β ) E_{\beta}(\beta) Eβ(β)是shape系数的二次惩罚项;

SMPLify第一步是保持模型的pose和shape固定,优化相机的平移和人体的朝向;相机的平移估计好之后,通过一个四步的拟合过程最小化上面说的目标函数 E J E_{J} EJ。在这片文章中,因为使用网络的输出作为优化的初始值,只需要一步的优化和较少的迭代次数就可以收敛到一个较好的拟合结果。

5. SPIN
主要内容点就是使用迭代优化的结果来作为groundtruth来计算网络的损失:
L 3 D = ∣ ∣ Θ r e g − Θ o p t ∣ ∣ L_{3D} = ||\Theta_{reg} - \Theta_{opt}|| L3D=ΘregΘopt

L 3 D = ∣ ∣ M r e g − M o p t ∣ ∣ L_{3D} = ||M_{reg} - M_{opt}|| L3D=MregMopt
其中:

  • Θ o p t \Theta_{opt} Θopt是迭代优化得到的姿态结果(pose,shape);
  • M r e g M_{reg} Mreg M o p t M_{opt} Mopt分别是网络输出结果和优化结果得到的模型mesh(mesh可以根据 β \beta β θ \theta θ计算得到);

实验结果

文章在多个数据集上进行了实验,效果还不错。
SPIN Learning to Reconstruct 3D Human Pose and Shape via Model-fitting in the Loop