PIFu/PIFuHD
PIFu/PIFuHD
PIFu: Pixel-Aligned Implicit Function for High-Resolution Clothed Human Digitization
PIFuHD: Multi-Level Pixel-Aligned Implicit Function for High-Resolution 3D Human Digitization
Target
从单张或多张RGB图像和图像中对应的人体mask信息,重建出图片或图片组中的人体三维模型和纹理信息。
PIFuHD没有纹理信息,但可以使用PIFu的方式同样生成
Pixel-Aligned Implicit Function
Implicit Function是用于表达物体表面的函数,如
PIFu方法中提出的 PIFu则是讲2D图像中的Pixel也引入进来,所以叫做 Pixel-Aligned,其函数形式如下:
PIFu,就是对于任意一个3D点
论文表示PIFu关键在于输入的Pixel-Aligned图像特征向量
整体流程
单视角重建
PIFu文章使用的表面GT Implicit Function:
$$
f_v^*(x)=\left{
$$
有的训练数据:m个对应的pair,(2D图像,3D模型)。
根据上图中PIFu 表面重建的流程: 对于每一个(2D图像,3D模型),2D图像会先输入到一个由全卷积组成的image encoder
于是论文构建损失函数:
论文使用MLP去拟合上述的方程
颜色重建
将公式(1)中的
损失函数为:
其中
表面顶点的
多视角重建
多视角下,PIFu变成
PIFuHD
由于显卡内存的限制,PIFu的输入图片的大小为
多层PIFu,输入是
Coarse Level
与PIFu相同,输入的图片大小为
,为原图经过下采样后得到的图片( ),输出特征为 。途中输入部分还添加了 图片预测得到的正面、反面法相图 ,此模块为:其中
是3D点 在 图片中2D的投影位置, 为该相机视角下的深度, 是提取图像特征的神经网络, 是MLP,从 的特征和投影深度 判断该3D点是否在需要建模的人体内部Fine Level
这个部分是的主干网络输入是原始的
的图片 ,输出 大小的图像特征,得到大分辨率的特征图是为了能够得到三维模型上的精细细节。同样这个模块也输入了高分辨率的正面、反面法向图 :其中
是3D点 在 图片中2D的投影位置,且 。 和 有着相似的网络结构,主要的不同在于 感受野没有覆盖这个图片,但是由于卷积网络的特性,可以通过滑动窗口的方式提取整张图像的特征。通过这种方式得到的特征就没有全局的信息,所以在 中,没有直接输入投影的深度 ,而是将coarse level中的全局特征 引入,以获取全局的特征信息。
由于Fine Level输入了Coarse Level的3D全局特征,所以经过Fine Level重建出来的结果不会差于Coarse Level单独的输出结果。如果网络设计能够很好利用高分辨率的图像信息,可以生成更好的三维模型。 另外,Fine Level不需要归一化可以让这一部分网络使用图片crop去进行训练,节省了显存。
Front-to-Back推理
在Coarse Level和Fine Level都是用了图片的正面、反面法相图,论文使用pix2pixHD网络将RGB图像预测出图片的正面和反面法相图。
在PIFuHD中使用了扩展BCE损失函数,即
![extbce][./2022/06/25/PIFu-PIFuHD/extbce.png]
在in/out采样数量不同的时候,会给数量较少的一方有更大的权重(类似focal loss)。
- pix2pix
pix2pix理解成image translate,在PIGFuHD中,利用一个Generator
Reference
论文解读 | PIFu: Pixel-Aligned Implicit Function for High-Resolution Clothed Human Digitization
论文解读 | PIFuHD: Multi-Level Pixel-Aligned Implicit Function for High-Resolution 3D Human Digitization