1 PIFu: Pixel-Aligned Implicit Function for High-Resolution Clothed Human Digitization

1.1 像素对齐的隐式函数 Pixle-Aligned Implicit Function

像素对齐的隐式函数 PIFu 由两个神经网络组合而成:一个全卷积图像编码器 以及一个由多层感知机(Multi-Layer Perceptrons,MLPs)表示的连续隐式函数 ƒ,其数学表达为:

其中 是空间中的一个 3D 点, 是 的 2D 投影点, 是点 在相机坐标空间的深度值, 是图像中 点处的图像特征。所以,PIFu 的功能即为,对于任意一个 3D 点 ,首先根据相机参数投影得到该点的 2D 点位置 以及在该相机下的深度 ,同时找到该 2D 点位置的图像特征向量 ,PIFu 的输出 就表示该点是否在物体表面。

PIFu 能奏效的关键在于输入的像素对齐的图像特征向量 ,这样学习得到的 可以在重建的模型中很好地保留图片中呈现的一些细节。同时,PIFu 这种连续性地本质可以用一种使用较少内存的方式重建任意拓扑结构的几何信息。

img1

1.2 曲面重建 Surface Reconstruction

由于人体的拓扑结构较为复杂,很难找到一个可以用公式表达的隐式函数,当只有一些离散的观测点,比如某个点在人体内部,另外一个点在人体外部,此时在PIFu中使用如下的方式来表达:

可以认为人体曲面即是上面函数的 0.5 等值面, 当 表示该点在物体内部; 表示该点在物体外部。这样处理后,可以很好的将之前 的值转变成了一个 3D 点被物体占用的概率,值越接近 1 表示被占有的概率越大,越接近 0,则是空白区域的几率也越大。在推理过程中,我们密集地在三维空间上采样概率场,并使用 marching cube 算法在阈值 0.5 处提取概率场的等值面,得到重建的人体网格。所以,此时训练的目的即是得到一个函数 ,该函数能够尽量地拟合真实情况

于是,在处理每一个训练样本(2D 图像,3D 模型)时,2D 图像会输入到由全卷积网格组成的图像编码器 ,得到与原 2D 图像对应的深度特征 。对于 3D 模型,可以采样得到 n 个 3D 点 ,同时可以知道其对应的真实函数值 。之后,就可以构建出如下的损失函数了:

这里 是图像编码器 处的图像特征,n 是采样点的数目。

1.3 纹理生成 Texture Inference

只需要将前面用于曲面重建的 PIFu 做一些改变,将其重新定义为一个 RGB 颜色的向量函数,便能够直接预测任意拓扑结构的 3D 几何表面的颜色。但为了能有更好的效果,还需要一些额外的改动。首先即是,为了专注于进行颜色的预测,可以将前面曲面重建中的图像特征 作为纹理预测的图像编码器的先验信息;其次就是为了使颜色的值可以定义在曲面附近的 3D 空间上,可以对采样点沿着法向量增加一个 的随机偏移。经过这样的改动后,损失函数则为:

这里 是曲面点 处的真实纹理(RGB颜色)。

1.4 采样策略

为了避免欠拟合和过拟合的出现,作者使用了一种基于曲面的组合采样法。首先,在几何表面随机采样 3D 点,并增加沿着 轴并服从正太分布 的偏移量来扰动其位置。接着,在曲面网格的空间范围中进行均匀采样,两次采样按16:1的比例进行组合作为最终的采样。

1.5 总结

① 测试时,使用 PIFu 重建对输入图像的视角和相机参数有一定的限制,如果测试图像的视角和相机参数与训练时使用的图像差距较大,重建出的效果不太好。

② 是否可以利用在 NeRF 中使用的位置信息编码,在训练 PIFu 时,以映射到高维的位置编码作为输入,让 PIFu 网格学习到更多信息。

③ 在训练时,可以增加训练数据的多样性,选取不同视角的图像进行训练。

④ 类似在 PIFuHD 中那样,在 PIFu 的输入中,加入人体的正反面法线图,让提取人体的正反面法线图的任务由一个单独的网络完成,减小 PIFu 网格的复杂程度,让 PIFu 更专注于重建人体结构。


2 PIFuHD: Multi-Level Pixel-Aligned Implicit Function for High-Resolution 3D Human Digitization

在 PIFu 的基础上,PIFuHD 实现了精度更高的重建模型,能够利用输入的更高分辨率的图片重建出拥有更多细节的人体结构。

其主要实现思路类似于 NeRF 中的 (coarse to fine)策略,将原来的 PIFu 流程,分成粗、细两个预测阶段。在粗预测阶段,输入是低分辨率的图像,主要作用是预测出模型的大致形状;而细预测阶段,输入则是高分辨率图像以及粗预测阶段提取的特征,最后即能得到较高精度的预测。

2.1 从正面推测反面 Front-to-Back Inference

之前使用 PIFu 直接进行人体模型重建时,PIFu 网格还兼具了对人体背部模型的推断的任务(输入是单目图像,需要预测被遮挡区域),这一定程度上增加了 PIFu 网格的复杂度,也影响了 PIFu 网格的性能。

所以,在 PIFuHD 中,作者提出,可以将这部分预测的任务,单独使用一个感知机完成,再将该预测结果作为输入,传入到后面的用于重建的 PIFu 网格。本文中,直接使用的 pix2pixHD ,从 RGB 彩色图预测出该图的正面和反面的法线图,分别用 表示。

2.2 粗预测阶段 a coarse level

在粗预测阶段,首先对输入的 的高分辨率图像 进行采样,得到对应的 的低分辨率图像 ,于是,该阶段的预测可以表示为:

其中, 分别表示在低分辨率图像 下通过前面的 pix2pixHD 网格预测得到的正反面法线图。 其余的输入都与前面 PIFu 相同。

2.3 细预测阶段 a fine level

细预测阶段与粗预测阶段相仿:

与粗预测阶段不同的是,这里使用的输入图像是高分辨率的,因此对应的正反法线面 也是基于该高分辨率图像预测得到的。此外,在该阶段最主要的区别是, 没有像 那样覆盖输入的整张图像,而是利用卷积网格的特性,通过滑动窗口的方式提取到的整张图像的特征。这样以后,得到的特征不再具有全局性,所以也不像粗预测阶段那样直接使用点 的投影深度 ,而是使用粗预测阶段的全局特征

2.4 损失函数和采样 Loss Function and Surface Sampling

不同于 PIFu 中使用的损失函数,这里作者使用了扩展的 BCE 损失函数:

其中, 表示采样点集合, 表示采样点在人体表面外的比例, 表示真实结果, 表示粗预测阶段和细预测阶段的预测值。

参考:

[1] Shunsuke等.”PIFu: Pixel-Aligned Implicit Function for High-Resolution Clothed Human Digitization”,(2019).

[2] Shunsuke等.”PIFuHD: Multi-Level Pixel-Aligned Implicit Function for High-Resolution 3D Human Digitization”,(2020).

[3] 论文解读 | PIFu: Pixel-Aligned Implicit Function for High-Resolution Clothed Human Digitization - 知乎 (zhihu.com)