PIFu 精读:像素对齐隐式函数——从一张照片重建高分辨率穿衣人体

Saito, Huang, Natsume, Morishima, Kanazawa, Li. PIFu: Pixel-Aligned Implicit Function for High-Resolution Clothed Human Digitization, ICCV 2019.

这是单视图穿衣人体重建这条线上绕不开的奠基工作。它提出的 Pixel-Aligned Implicit Function(PIFu),把"逐像素的局部图像特征"和"3D 全局坐标"对齐,第一次让一张照片直接长出带纹理、高分辨率、任意拓扑的完整人体——包括看不见的背面和自遮挡区域。后来的 PIFuHD、Geo-PIFu、ECON、ICON 几乎都站在它肩膀上。

一句话结论

用像素对齐的隐式函数做 3D 表示:给定 3D 点 $X$、它在图上的投影 $x=\pi(X)$、以及沿相机射线的深度 $z$,用一个 MLP 预测该点"在表面内还是外"。因为它把图像的局部细节空间对齐到了 3D 形状上,所以既能保住皱纹、发丝这类高频细节,又能在没见过的区域推理出合理几何;而且省显存、支持任意拓扑、还能自然扩展到任意数量的多视图输入。

一、要解决什么问题

单视图穿衣人体重建,本质是"信息不够、还得猜"的问题。之前的几条路各有死穴:

路线 代表 死穴
参数化人体模型 SMPL 等 只能出不穿衣服的身体,衣服、头发、配件全丢
体素(voxel) BodyNet、VRN 完整但显存爆炸,分辨率上不去,细节糊
全局特征隐式函数 IM-GAN 一张图一个全局向量,无法保证输入图的细节被保留,重建和原图对不齐
多视图立体/视觉凸包 MVS、Visual Hull 需要棚拍、标定,凹区域(腋下、裙摆)处理不了

PIFu 的破题点很明确:在像素级,把局部特征与整个物体的全局 3D 上下文对齐。fully-convolutional 地做,但不像体素那样吃内存;局部特征保证细节,3D 感知的隐式表示保证能从单视图推理出整体。

二、核心:PIFu 的公式

整个方法由一个全卷积图像编码器 $g$ 和一个 MLP 表示的连续隐函数 $f$ 组成。曲面定义为隐函数的等值面:

$$f\big(F(x),\,z(X)\big)=s,\qquad s\in\mathbb{R}$$

  • $X\in\mathbb{R}^3$:空间中任意查询点;
  • $x=\pi(X)$:$X$ 的 2D 投影;
  • $F(x)=g(I(x))$:该像素处的图像特征,用双线性采样取(因为投影坐标是连续的,不落在整像素上);
  • $z(X)$:相机坐标系下的深度。

做表面重建时,$s$ 是"在表面内/外"的概率,真值定义为:

$$f_v^*(X)=1 \ \text{若 } X \text{ 在网格内,否则 } 0$$

损失就是最朴素的 MSE:

$$L_V=\frac{1}{n}\sum_{i=1}^{n}\big|\,f_v(F_V(x_i),z(X_i))-f_v^*(X_i)\,\big|^2$$

推理时在 3D 空间稠密采样,用 Marching Cubes 在 $0.5$ 阈值提取等值面,得到网格。

为什么深度 $z$ 是命门? 论文专门做了个消融:把 $z$ 从输入里拿掉、只保留图像特征融合的那个网络,直接命名为 Huang et al.(视觉凸包式退化)。结果说明——对 3D 坐标的显式条件化(depth conditioning)才是单视图能推出 3D 形状的关键,光靠图像特征聚合不够。

三、采样策略:一个绕不开的工程细节

PIFu 的输出是连续的,不需要预先离散化网格,所以直接用 Embree 做光线求交、在线采点。但这带来一个训练难题:

  • 若纯均匀采样 → 绝大多数点离表面很远,网络学会偷懒,一律预测"外";
  • 若纯表面附近采样 → 太局部,过拟合。

PIFu 的做法是两者混合:

  • 以表面点为中心加正态扰动 $\epsilon\sim\mathcal N(0,\sigma)$,$\sigma = 5.0\,\text{cm}$;
  • 再与包围盒内的均匀采样点按 $16{:}1$ 的比例混在一起。

还有一个前提:采点要求网格是 water-tight(水密/封闭)的,否则光线判内外出错(非封闭网格可用现成方法补)。这两点(water-tight 预处理、$16{:}1$ 采样比)是复现成功与否的关键。

四、纹理推断:Tex-PIFu

把公式里的标量 $s$ 换成 RGB 向量,隐函数就能直接预测表面颜色——任意拓扑、自遮挡区域都能补,不用搞 UV 展开。但有个坑:

  • occupancy 场在整个 3D 空间都有定义,而 RGB 只在表面上才有定义;
  • 如果朴素地训练,$f_c$ 被迫同时学"表面形状"和"颜色",会严重过拟合。

PIFu 用两招解决:

  1. 条件化——把做形状重建时学到的图像特征 $F_V$ 一起喂进纹理编码器,让它专心学颜色,而不是自己也去猜形状;
  2. 沿法线偏移——让颜色在表面附近的 3D 空间也有定义,样本点 $X_i' = X_i + \epsilon\cdot N_i$,$\epsilon\sim\mathcal N(0,d)$,$d=1.0\,\text{cm}$。

纹理损失:

$$L_C=\frac{1}{n}\sum_{i=1}^{n}\big|\,f_c(F_C(x_i'),X_i',z)-C(X_i)\,\big|$$

对比 SiCloPe 的"合成背面视图再拼上去":那种做法会在轮廓附近产生投影畸变和伪影;PIFu 直接在网格表面预测颜色,没有这些问题。

五、多视图:自然扩展

把隐函数拆成 $f := f_2\circ f_1$:

  • $f_1$:逐视角编码,在 3D 世界坐标下产出潜在嵌入 $\Phi_i$;
  • 聚合:对多视角嵌入做平均池化,$\bar\Phi=\operatorname{mean}({\Phi_i})$;
  • $f_2$:从聚合特征 $\bar\Phi$ 输出结果。

因为聚合是加法式的,所以任意数量的视角都能接;单视图就是退化成只平均它自己,不需要改框架。论文训练时用 3 个随机视角,但实测能吃掉更多视角(见图 8:1→3→6→9 视角,几何与纹理持续变好)。

六、实验与结果

网络:表面重建用 stacked hourglass(对真实图片泛化更好);纹理编码器用 CycleGAN 的残差块结构;隐函数 MLP 带来自 $F(x)$ 和 $z$ 的 skip connections,帮助深度信息传递。

数据:RenderPeople、BUFF(有扫描真值),真实图片用 DeepFashion。

三个指标:

  • P2S:重建表面顶点到真值的平均点-面欧氏距离(cm);
  • Chamfer distance:重建与真值表面的双向最近点距离;
  • Normal reprojection error(本文提出):把重建与真值的法线图从输入视角渲染出来,算 L2 误差——专门衡量局部细节的细腻度和与输入图的投影一致性。

单视图(Table 1)

方法 RenderPeople Normal / P2S / Chamfer BUFF Normal / P2S / Chamfer
BodyNet 0.262 / 5.72 / 5.64 0.308 / 4.94 / 4.52
SiCloPe 0.216 / 3.81 / 4.02 0.222 / 4.06 / 3.99
IM-GAN 0.258 / 2.87 / 3.14 0.337 / 5.11 / 5.32
VRN 0.116 / 1.42 / 1.56 0.130 / 2.33 / 2.48
PIFu (Ours) 0.084 / 1.52 / 1.50 0.0928 / 1.15 / 1.14
  • Normal 误差大幅领先(0.084,比 VRN 的 0.116 还好)——说明高频细节保住了;
  • P2S 上 VRN 在 RenderPeople 略低(1.42 vs 1.52),但在 BUFF 上 PIFu 反超(1.15 vs 2.33);
  • 注意 VRN 与 PIFu 用的是同一个图像编码器架构,差别只在表示:隐式表示的表达力 > 体素。

多视图(3 视角,Table 2)

方法 RenderPeople Normal / P2S / Chamfer BUFF Normal / P2S / Chamfer
LSM 0.251 / 4.40 / 3.93 0.272 / 3.58 / 3.30
Deep V-Hull 0.093 / 0.639 / 0.632 0.119 / 0.698 / 0.709
PIFu (Ours) 0.094 / 0.554 / 0.567 0.107 / 0.665 / 0.641

多视图下 PIFu 在 P2S/Chamfer 上稳定优于 Deep V-Hull 和 LSM。论文还做了动态人体(单目视频序列)的重建演示——当时算首次。

七、局限与未来工作

  1. 尺度歧义:重建在像素坐标空间做,scale 靠预处理对齐;单图推断绝对尺度仍是开放问题;
  2. 遮挡 / 局部人体:所有例子都不被其他物体遮挡、身体完整入镜;真实场景常被遮挡或只拍到半身;
  3. 纹理分辨率:可以上 GAN 或更高输入分辨率;
  4. 训练需要 water-tight 网格。

八、为什么值得记住

  • 它把"全卷积的局部对齐"这个 2D 视觉的胜利配方,第一次成功搬到了 3D——这是 PIFu 最大的观念贡献;
  • "pixel-aligned feature + depth"成了后续所有高精度人体重建的默认配置;
  • 它暴露的短板(尺度、遮挡、多视图一致性)正是后面 PIFuHD(多层级高分辨率)、Geo-PIFu(体素引导)、ECON / ICON(法线积分 + 多视图一致)要补的坑;
  • 对服装/宽松衣物重建(裙摆、高跟鞋这类任意拓扑)尤其友好,但无模板意味着缺少语义部件先验——这块正好可以和部件分割类工作结合起来补。

术语表 / Key Terms

  • pixel-aligned implicit function (PIFu) — 像素对齐隐式函数;把逐像素局部特征与 3D 全局上下文对齐的隐式曲面表示
  • implicit function — 隐式函数;把曲面定义为函数的等值面,无需显式存储空间
  • level set — 水平集 / 等值面,如 $f(X)=0$ 或 0.5
  • iso-surface — 等值面,从隐式场中提取出的曲面
  • occupancy field — 占据场;空间点在表面"内/外"的连续概率场
  • inside/outside probability — 内外概率,网络预测的标量输出
  • Marching Cubes — 行进立方体;从稠密 3D 场提取等值面的经典算法
  • bilinear sampling — 双线性采样;连续投影坐标处取特征值的方式
  • weak-perspective camera — 弱透视相机(本文假设,可扩展为透视)
  • depth conditioning — 深度条件化;把 $z(X)$ 显式喂给隐函数(本文关键消融)
  • fully convolutional — 全卷积;保持输入与输出空间对齐的网络结构
  • image encoder — 图像编码器($g$,本文用 stacked hourglass)
  • stacked hourglass — 堆叠沙漏网络,一种多尺度编解码结构
  • multi-layer perceptron (MLP) — 多层感知机,本文隐函数 $f$ 的实现
  • skip connection — 跳连;把浅层信息直连到深层,帮助梯度/信息传递
  • watertight mesh — 水密 / 封闭网格;光线判内外的前提
  • ray tracing — 光线追踪(本文用 Embree 在线采点)
  • adaptive sampling — 自适应采样;表面附近多采、远处少采
  • Chamfer distance — 倒角距离;上采样点集间双向最近点距离,衡量重建质量
  • point-to-surface (P2S) — 点到面距离(cm),衡量几何精度
  • normal reprojection error — 法线重投影误差;本文提出的细节 / 投影一致性指标
  • high-frequency detail — 高频细节(褶皱、发丝等)
  • arbitrary topology — 任意拓扑(对裙、长发、高跟鞋很关键)
  • template-free — 无模板;不依赖 SMPL 等参数化人体模型
  • parametric body model — 参数化人体模型(SMPL/SCAPE 等)
  • multi-view stereo (MVS) — 多视图立体
  • visual hull — 视觉凸包;用多视图轮廓裁剪出的体积
  • voxel / volumetric occupancy — 体素 / 体积占据表示(显存换细节的旧范式)
  • per-vertex color — 逐顶点颜色
  • texture inpainting — 纹理修复 / 补全;推断被遮挡区域的外观
  • UV parameterization — UV 参数化(本文绕开,直接在表面预测颜色)
  • self-occlusion — 自遮挡
  • projection artifact — 投影伪影(视图合成类方法的典型缺陷)
  • latent embedding — 潜在嵌入;多视图聚合用的特征向量
  • average pooling — 平均池化;本文多视图特征聚合方式
  • scale ambiguity — 尺度歧义;单视图固有难题
  • off-the-shelf — 现成的、开箱即用的(指直接用别人训好的模型)
  • generalization — 泛化能力,对未见姿态 / 真实照片的适应
posted @ 2026-09-16 00:10  Quentin_Yws154  阅读(21)  评论(0)    收藏  举报