MENU

【论文阅读】PaMIR: Parametric Model-Conditioned Implicit Representation for Image-based Human Reconstruction

May 27, 2023 • 神经网络

通过单张照片进行人体重建的第三篇文章,作者是清华大学的刘烨斌教授。其在 PIFu 的基础上增加了新的人体先验,从而实现了更好的人体重建效果。项目地址在这里

Motivation

PIFu 已经证明了隐式函数在人体重建方面相较于显式方法效果更好,但依旧存在速度慢 + 姿势鲁棒性差的情况,此外,PIFu 过高的几何表达自由性带来的是很差的稳定性,而这恰恰是另一个 trade-off 问题。一个有效的解决方法就是增加几何先验,将任务转换为给定一个粗糙的人体几何来雕琢细腻的穿衣人体。因此 PaMIR 应运而生,其将另外一个热门的人体重建表示方法 SMPL 作为人体几何先验引入了隐函数重建当中。

相比于刚刚诞生的隐函数人体重建,SMPL 人体重建的工作已经发展了数年的时间,在当时也有了一些不错的成果,比如一些在 SMPL 上加载非参数的体积表示方法 Deephuman。但其大多难以实现高分辨率的重建。另外,我们的任务输入只有一张 RGB 图片,在现有的工作中,我们无法估计出极为准确的 SMPL 模型(训练和测试仍有差距)。

于是一个朴素的想法便出现了:我们能不能在 SMPL 估计的时候使用准确的 ground truth 进行监督,而在后续网络的雕琢过程中使用预测出来的 SMPL 模型进行推理呢?这样做不就可以降低后续网络对 SMPL 模型的依赖了吗?理想是丰满的,现实却是骨感的。由于图像在深度信息上的模糊性,不可能保证预测的 SMPL 和 实际的 SMPL(Ground Truth)在深度上保持一致。因此我们会迫使网络在“错误的条件”下给出“正确的答案”,这对网络来说是灾难性的。

因此,作者结合这些背景提出了以下创新思路:

  1. 加入了参数化的人体模型 SMPL 作为先验信息,使得后续网络专注于表面的雕琢而无需关注更多任务。
  2. 为了避免上述深度模糊的问题,引入了一个新的深度模糊损失函数对网络进行优化。
  3. 提出了一个基于优化(optimization-based)的人体模型优化方法,在提高精度的同时增强了 SMPL 与隐函数输出的一致性。

此外,由于作者使用了不同来源的信息,因此其内部建立了不同域之间的隐式对应关系,使网络更具有拓展性,比如我们可以替换之前的模块 SMPL 来对网络进行训练,从而改变网络的输入等。

Method

pipeline

我们先来看看 PIFu 的隐式函数:

image.png

还是熟悉的配方,还是熟悉的味道:我们通过隐函数 F 通过给定一个采样点 P 的特征来判断该点在不在曲面上,从而实现对人体的重建。在 PIFu 当中,特征的提取有以下公式:

image.png

在这个过程中,有两个基本模块:通过图片提取到的特征 S 和深度信息 Z 。这里对前半部分再次进行解释:Fi 是图像编码器,而 Π(p)则是 p 点在图像上的 2d 投影,网络通过双线性插值 S 对其采样。

我们再来看看 SMPL 的参数化身体模型:

image.png

这是经典的 SMPL 公式,在本文当中,作者使用了当时的 SOTA 模型 GCMR 来提取 SMPL 的人体信息。这个模块是可以被替换的,你可以替换成任意的当前是 SOTA 的 SMPL 估计模型,

接下来便是重头戏了,作者直接在 PIFu 的基础上对重建的函数做出了修改:

image.png

是不是很简单?作者直接将 PIFu 的特征提取模块进行了保留,只把深度信息 Z 替换成了 SMPL 信息。作者认为,SMPL 信息当中已经包含了足够的 3d 信息,不再需要额外的深度信息进行辅助了。在实际操作中,作者将 SMPL 模型转换为了占用体积 V0(可以理解为体素),并通过编码器获取到了公式中的 SMPL 特征 FV,并通过双线性插值采样到了 FV 中 p 点的特征。随后直接怼到隐函数中进行重建。整体的 pipeline 如下:

image.png

深度模糊的重建损失

在实际训练过程中,为了降低对精确 SMPL 模型的依赖,作者也沿用了我们之前提到的思想:在 SMPL 估计的时候使用准确的 ground truth 进行监督,而在后续网络的雕琢过程中使用预测出来的 SMPL 模型进行推理。但面对真实的 SMPL 和推测的 SMPL 的深度不一致问题,传统的使用均方差直接优化预测点和真实点的方法并不够用,因此作者额外提出了深度模糊的重建损失

image.png

简单的均方差,但是作者额外加入了 Δpi 来补偿人体深度的偏移。动机是,我们其实不在乎回归出的人体模型中心的绝对坐标到底在哪,中心可以是 (0,0,0) ,也可以是 (100,100,100) ,这都没有关系。只要人体的几何曲面保持一定,人体的绝对坐标在哪里其实对我们来说都是一样的。因此最后的损失函数可以剥离掉绝对坐标的部分,只考虑模型几何轮廓的差异,作为损失函数就可以了。而在这里,Δpi 为:

image.png

也就是说,其补偿了深度。其中 Δzi 通过在网络训练中利用真实的 SMPL 和预测的 SMPL 的显式关系实时计算得到:

image.png

其中后半部分是 SMPL 顶点的深度值和实际点的预测值之差,Ni 是离采样点 Pi 最近的 SMPL 上的顶点集,其包含了 4 个离 Pi 最近的点。而中间的分数部分上面是其对应的混合权重,下面是对该权重做了归一化:

image.png

整体的损失函数如图所示:

image.png

基于优化的身体参数优化

在获得 SMPL 参数的领域,基于优化(Optimize-Based)的方法一般都要好于基于回归(Regression-Based)的方法。但是遗憾的是,基于优化的方式不可微,所以我们只能在 inference 的时候用用,我们通过优化以下式子来提高对 SMPL 的估计:

image.png

其中后一项是正则化项,惩罚 β和 θ 和初始预测 init 的差异:

image.png

前一项则是通过以下式子意图鼓励最终预测和 SMPL 的预测对齐:

image.png

同样的,ns 为顶点个数,q 则是定义的惩罚 loss:

image.png

在实际应用中,η=5,我们可以看到,对于落在 SPML 表面之外的点,我们会施加一个惩罚,并使用其更新姿势和形状参数。来鼓励最终预测和 SMPL 的预测对齐。特别的,我们对落在表面外侧的点施加了更多的惩罚,这是因为我们有可能会遇到裙子等,我们希望这里的点多收缩点,收缩到人体表面,别把 SMPL 带歪了。

image.png

颜色推理

这部分比较简单,PaMIR 把 PIFu 当中的网络搞成了 RGBα 向量,多了一个预测值,作者称其为混合值,通过 α,我们将从图片中观察到的颜色和预测的颜色做了混合:

image.png

颜色重建损失如下:

image.png

和 PIFu 的相差不多,应该很好理解,值得一提的是,作者在这里使用了 L1 范数,这进一步使得颜色不那么平滑。

image.png