SMPLR 论文笔记

SMPLR 论文笔记
SMPL是一个参数化的模型,通过输入shape和pose两个参数可以输出一个真实的3D人体模型。但是预估SMPL的两个参数难度很大。即使通过神经网络进行回归也存在着很多劣势。论文中提及了一下3个直接使用神经网络回归shape和pose参数会引发的问题:

  1. SMPL many-to-one property .
  2. noise sensitivity of model.
  3. generate artifacts.

以上的三个问题会导致回归出来的参数在传进SMPL之后出现ill-pose 的情况。直接用2D图片回归最容易理解的问题就是图片的多样性会直接影响回归参数。比如人物在图片中的大小,噪音,例如重叠的关节部位等等。还有一些和预测人体姿势无关的特征,也会被多多少少的考虑到结果的预测过程中。

于是又有学者提出了使用2D关节或者身体的轮廓来回归SMPL的参数,这样做的好处肯定是要优于用整张图片来做预测的,因为给网络的训练数据只包含了必要的特征,但是这样的方式得到的结果仍然是次优的。文中提到了一下的2个原因:

  1. estimating 3D from 2D is an ill-posed problem.
  2. the loss is computed form noisy back-projected 2D estimation.

为什么说从2D预估3D是一个ill-posed 问题。我个人的理解是因为在3D空间中,可能会有多个人体姿势可以与输入的2D关节相匹配,它存在着一定的分歧(ambiguity)。为了解决以上的几个问题,本文的作者提出了一个新的模型,模型的大体结构如下图所示:

在这里插入图片描述
整个模型分为三个部分第一个部分是一个用于提取2D图片中人物关节位置的网络,称之为堆叠沙漏网络,堆叠沙漏网络在这篇笔记当中有一些基本的讲解。之后通过一个去噪网络对堆叠沙漏网络的输出做去噪,并将其从2D 提升至3D。最后使用两个结构基本一致的全连接网络来回归SMPL的两个参数。以上是整个模型的大致思路。而SMPLR指的是最后两个全连接网络组成的板块。下文以Model来表示论文提及的整个模型,即Model = CNN + autoencoder+smplr

论文中提及的SMPLR的优势如下:

  1. trained without the need of constrains on SMPL.
  2. independent to RGB data using millions of generated 3D mocap like data.
  3. end-to-end CNN

Model的训练过程是不会将SMPL包括在内的。所以自然不会被SMPL的条件所约束,但是这是否对模型的性能有益仍值得商榷。虽然说堆叠沙漏网络是端到端的网络,但是Model 并不是端到端,它的每一个板块都需要分开训练。

Model的一些细节:
SMPLR 使用的是MLP网络进行建模。使用两个结构相同的网络分别回归shape和pose参数。因为这两个参数在理论上是相互独立的。两个网络被分别定义为: R = Ω ( N ; ϕ p ) R=\Omega(N;\phi_{p}) R=Ω(N;ϕp) β = Ψ ( B ; ϕ s ) \beta =\Psi(B;\phi_{s}) β=Ψ(B;ϕs) 其中N是normalized relative joints。B是归一化相对距离向量。

SMPLR的输入是:JT 和 landmark
其中J是从T中选取的顶点集合。T是3D模型所有的顶点集合。因为并不是每一个顶点都对参数的回归起到相同的作用。所以作者根据经验挑去了一个顶点几个J,J ⊂ \subset T. J中包含的顶点对SMPL参数的回归更加有利。这样做可以在一定程度上节省计算资源。

在文中也提到了为什么要将landmark也加入到训练数据集中。首先若没有landmark,网络会将收敛至一个平均的body fatness。其次ill-posed的问题还是存在,因为关节的朝向是不稳定不明确的。最后一个原因是landmark很容易从mocap数据集中收集。

根据SMPLR中两个网络的定义和上述描述。作者将N定义成:

在这里插入图片描述
k(i)代表了副关节的索引。
在定义B的时候,有一个假定前提,即 B ∗ B^* B是relative distance computed from template joints 。 J L ∗ JL^* JL 是landmark。这里的template个人理解成pose和shape参数都是0的时候的模型。有了上述假设,B可以定义为:
在这里插入图片描述
在这里插入图片描述
另外,因为SMPL本身也是性别敏感的模型,不同的性别选择对模型输出的准确率也有着极大的影响。所以作者在shape参数上加入了一个针对性别的项。这一项只能是{-1,+1},并且和其他的shape参数一起当做回归问题处理。

SMPLR中的两个网路使用的是相同的损失函数L1。R与 β \beta β网络的损失分别记作 L R L_R LR L β L_\beta Lβ。这里不适用L2的原因是因为L2对噪音的输入的收敛和泛化的表现不如L1。SMPLR的训练也是分开的,两个小网络单独进行训练然后将得到的参数输入给SMPL,然后在SMPL的输出上添加一个L1损失。所以整个SMPLR的损失就 L R L_R LR + L β L_\beta Lβ + L s m p l L_{smpl} Lsmpl

记录完了SMPLR之后,现在可以来看看Denosing autoencoder。首先为什么要用到这个除噪自动编码器。是因为通过CNN 预测的关节会出现一个噪声。比如关节模糊或者看不到,重叠等问题。能看到的关节也存在着一些高斯噪音。除噪编码器的训练也是独立的,且它的训练数据集必须是包含了符合高斯分布的噪音的数据集,用没有噪音的数据集训练出来呢的除噪编码器是没有除噪的能力的。此外这个除噪编码器的结构还可以将2D的预测提升至3D(lift 2D to 3D)

除噪编码器的输入:CNN最初的预测。
除噪编码器的输出: 除噪之后的CNN预测。
损失函数: L1 loss.

一些训练的细节:
CNN使用的是5层堆叠沙漏网络,并将每一个沙漏网络的最后一层扩展。意思是原本的沙漏网络输出是 64 x 64 x 16(设原图像的大小是256 x 256。扩展之后就变成了 64 x 64 x 16 x 41。 41是关节和landmark的总和。网络的损失函数使用的是soft cross entropy loss。优化器用的Adam。学习率的选择也有所不同,对于堆叠沙漏网络而言是选用的0.01,其余的学习率均为0.001。

堆叠沙漏网络使用的是6-10的batchsize,大致在150-250个epoch收敛。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值