Geo-PIFu 精读:当 PIFu 补上「几何对齐」——用隐体素特征约束单图穿衣人体重建
Tong He, John Collomosse, Hailin Jin, Stefano Soatto. Geo-PIFu: Geometry and Pixel Aligned Implicit Functions for Single-view Human Reconstruction, NeurIPS 2020.
PIFu 最对症下药的续作之一。PIFu 用像素对齐(pixel-aligned)特征喂 2D 细节给隐式函数,却留下两个洞:同一相机射线上前后两点拿到几乎相同的 2D 特征(feature ambiguity),以及缺全局形状约束、复杂姿态易畸形。Geo-PIFu 再并联一路"几何对齐"三维特征——把图像"提升"成低分辨率隐体素(latent voxel),三线性插值给每个查询点编码,并当作粗糙人体形状代理做全局正则。在比 PIFu 大 10 倍、相机可自由旋转的公开数据上,Chamfer/PSD 降 42.7%、法线误差降 19.4%。
一句话结论
在像素对齐特征之外并联一路几何对齐的三维隐体素特征:它由 structure-aware 3D U-Net 生成、用粗糙占据体损失监督,负责全局形状/姿态规整;像素特征负责高频表面细节;两者拼接后送进隐式函数预测占据值。代价是体素分辨率极低($8\times32\times48\times32$),因此参数量只有 PIFuHD 的约 1/12。
一、要解决什么问题
单视图穿衣人体重建天生欠约束(under-constrained):要补全背面和自遮挡,必须在隐式函数设计里"注入假设"。论文把前人做法分两类并点出死穴:
| 路线 | 代表 | 死穴 |
|---|---|---|
| 全局特征 + 隐式函数 | Occupancy Networks、DeepSDF、LIF、DIST | 无查询点专属编码,关节部件与细节表达力不足 |
| 像素对齐特征 + 隐式函数 | PIFu、DISN | 细节强,但有 feature ambiguity、缺全局形状鲁棒性 |
| 参数化 + 体素/网格混合 | DeepHuman、Tex2Shape | 需 SMPL 配准等重标注;估计错误误差传播;体素分辨率限制细节 |
| 纯显式表示 | BodyNet/VRN、Atlas-Net、Pixel2Mesh | 分辨率受限 / 非水密 / 过度平滑 |
| 体素输入式隐式函数 | IF-Net | 输入是 partial/noisy 体素,有"免费"3D 线索;Geo-PIFu 只有单张彩图,是真正的 2D→3D 病态问题 |
feature ambiguity:查询点 $P_1,P_2$ 同在一条相机射线上、却一在正面一在背面,经(弱)透视投影 $\pi$ 落到几乎相同的像素坐标,插值拿到的 2D 特征几乎一样——网络分不清正/背面;几何对齐特征在 3D 空间里天然把两点分开,正好补盲区。
贡献三条:几何+像素对齐特征融合(解决局部歧义)、全局形状代理(减少手脚形变)、评测规模(首次在 DeepHuman 数据集上基准,5436 训练 / 1359 测试网格,规模是 PIFu 私有数据的 10 倍)。
二、核心方法
连续占据场把每点映射为占据值 $\sigma\in\mathbb{R}$:网格内 $\sigma>0$、网格外 $\sigma<0$,曲面落在 $\sigma:=0$ 的决策边界,最后用 Marching Cubes 提取网格。目标是学深度隐函数 $f(\cdot)$,输入单视图彩图 $I$ 与任意查询点 $P\in\mathbb{R}^3$,输出 $\sigma$($f\mid(I,P)\mapsto\sigma$);训练数据是 ${I,\sigma(P)}$ 对——网格上稠密采样查询点、再用高斯噪声扰动增广。
2.1 整体公式
$$f_\theta\big(T(\xi_\omega(I),P),\; B(\psi_\mu(I),\pi(P)),\; Z(P)\big):=\sigma \tag{1}$$
$f_\theta(\cdot)$ 是 MLP;每个查询点的输入分三部分:几何对齐 3D 特征 $T(\xi_\omega(I),P)$、像素对齐 2D 特征 $B(\psi_\mu(I),\pi(P))$、深度 $Z(P)\in\mathbb{R}$。
2.2 几何对齐特征(上支路)
$\xi_\omega(\cdot)$ 是一组 3D U-Net,把图像提升成 3D 潜在体素特征。要提取某个 $P$ 的几何对齐特征,就按 $P$ 的 xyz 坐标做多尺度三线性插值 $T$(思路受 DeepVoxels、IF-Net 启发),在围绕 $P$ 的点集 $\Omega$ 上插值并拼接:
$$\Omega:={P+n_i \mid n_i\in d\cdot{(0,0,0)^T,(1,0,0)^T,(0,1,0)^T,(0,0,1)^T\dots}} \tag{2}$$
$n_i\in\mathbb{R}^3$ 是沿坐标轴、步长 $d$ 的平移向量。关键点:体素特征在 3D 空间与人体网格天然对齐,能按坐标直接插值出专属编码——既不像全局特征"一对全"、也不像像素特征"射线撞车",故能解决歧义。且"体素≠贵":隐体素特征仅 C-8、D-32、H-48、W-32(393,216),像素特征为 C-256、H-128、W-128(4,194,304),前者总量只有后者约 1/10.7。
2.3 像素对齐特征(下支路)
$B(\psi_\mu(I),\pi(P))$:$\pi$ 是查询点到图像平面的(弱)透视投影,再按投影像素坐标用双线性插值 $B$ 从潜在像素特征取特征;$\psi_\mu(\cdot)$ 由 2D U-Net 实现。分工:几何对齐特征主要承载粗糙人体形状,像素对齐特征专注抽高频形状信息(如衣物褶皱)——该假设在 4.3 消融中被证实。
2.4 训练损失
(a)粗糙占据体损失:为让隐体素特征 $\xi_\omega(I)$ 学到粗糙形状,用 3D 卷积解码器 + sigmoid 估计低分辨率占据体 $\hat V(I)\in\mathbb{R}^{1\times d\times h\times w}$,用扩展交叉熵:
$$\mathcal{L}{geo}=-\frac{1}{|\hat V|}\sum$$}\gamma V_{i,j,k}\log\hat V_{i,j,k}+(1-\gamma)(1-V_{i,j,k})\log(1-\hat V_{i,j,k}),\quad \hat V(I)=\nu_\rho(\xi_\omega(I)) \tag{3
真值 $V$ 由高分辨率穿衣网格体素化得到,$\gamma$ 平衡内外损失。解码器只在训练时需要,推理只留隐体素特征做插值。该任务比直接学稠密连续场更容易,学到的特征既能稳健估计可见侧形姿,又能臆造(hallucinate)自遮挡背面合理的形状与姿态——复杂姿态/大自遮挡时尤为关键。
(b)高分辨率查询点损失:隐式函数用稀疏查询点采样训练,每步用一组稀疏点(PIFu 与 Geo-PIFu 都 5000 个),用 MSE:
$$\mathcal{L}{query}=\frac{1}{Q}\sum$$}^{Q}(\sigma_q-\hat\sigma_q)^2 \tag{4
总损失 $\mathcal{L}=\mathcal{L}{geo}+\mathcal{L}$,并遵循 [22,27] 分阶段训练:$\mathcal{L}{geo}$ 解离散化粗糙形状,$\mathcal{L}$ 用连续 xyz 的稀疏样本学高分辨率连续场。消融显示 query point loss 是高频形状信息的来源。
三、网络结构与训练/实现细节
- 框架:PyTorch,优化器 RMSprop,两损失学习率均 $1\times10^{-3}$;
- 时长:3D 解码器训 30 epoch 后停,隐函数训 45 epoch;
- 硬件:AWS V100 × 6 GPU;第 8、23、40 epoch 各把学习率降为 1/10;
- batch:分别 30(解码器)与 36(隐函数)张单视图;每图采 $Q=5000$ 点算 $\mathcal{L}_{query}$;
- 多尺度插值:步长 $d=0.0722$,特征收集到 2× 长度处停;$\mathcal{L}_{geo}$ 的 $\gamma=0.7$。
一句话分工:粗体素管全局、细像素管细节,在隐函数输入处拼接;参数量 30,616,954,只有 PIFuHD 约 1/12。
四、实验与结果
数据集:DeepHuman,5436 训练 / 1359 测试穿衣人体网格,服饰与姿态多样;PIFu 仅 442/54 且几乎全直立。两点额外差异:(1) 数据公开、由廉价 RGB-D 传感器重建(PIFu 用私有商业数据、艺术家精修),故结果可复现、易扩展到特定领域(如篮球运动员);(2) 渲染时相机可自由旋转,PIFu 图像全为零仰角、零平面内旋转。代价:DeepHuman 缺高质量纹理贴图,可能损害野外图像泛化。
指标:CD、PSD 衡量全局拓扑;对输入视角法向量算 Cosine / L2 衡量局部细节(褶皱)。越小越好(CD/PSD 已 ×10000)。
4.1 与 SOTA 对比(同 DeepHuman,Table 1)
| 方法 | CD | PSD | Cosine | L2 |
|---|---|---|---|---|
| DeepHuman | 11.928 | 11.246 | 0.2088 | 0.4647 |
| PIFu | 2.604 | 4.026 | 0.0914 | 0.3009 |
| Geo-PIFu (Ours) | 1.742 | 1.922 | 0.0682 | 0.2603 |
全局指标比 PIFu 平均降 42.7%(手臂、脚等拓扑伪影更少、对齐更准);局部指标比 PIFu 平均降 19.4%(褶皱更清晰)。注意 DeepHuman 比较不完全公平——它额外需要配准好的 SMPL 网格作标注,即便如此仍明显落后。
4.2 与预训练权重对比(Table 2)
因 PIFuHD 未放训练脚本,作者用其官方预训练权重对比:
| 方法 | 参数量 | CD | PSD | Cosine | L2 |
|---|---|---|---|---|---|
| PIFu | 15,604,738 | 10.571 | 9.285 | 0.1422 | 0.4141 |
| PIFuHD | 387,049,625 | 9.489 | 9.349 | 0.1228 | 0.3776 |
| Geo-PIFu | 30,616,954 | — | — | — | — |
相同训练数据下,PIFuHD 相对 PIFu 的增益低于 Geo-PIFu,而其参数量只有 PIFuHD 约 1/12。作者判断 PIFuHD 的两大卖点(滑窗吃高分辨率图、离线前后法向贴图)都是相对 (Geo-)PIFu 的增量插件,互补可叠加但超出本文范围。
4.3 消融:特征类型与融合方式(Table 3)
| 配置 | CD | PSD | Cosine | L2 |
|---|---|---|---|---|
| a. Ours-geometry(仅 3D 几何) | 2.293 | 2.629 | 0.0864 | 0.3164 |
| b. Ours-pixel(仅 2D 像素,≈PIFu) | 2.604 | 4.026 | 0.0914 | 0.3009 |
| c. Ours-late-3D | 1.753 | 1.930 | 0.0675 | 0.2598 |
| d. Ours-late-both | 1.677 | 1.868 | 0.0764 | 0.2767 |
| e. Ours-early-3D(论文主结果) | 1.742 | 1.922 | 0.0682 | 0.2603 |
- exp-b 本质就是 PIFu(只抽像素表示的退化情形);
- exp-a 的 PSD 明显优于 exp-b(3D 几何特征更规整,归功于 structure-aware 3D U-Net 与均匀粗糙占据体损失),但网格过度平滑、缺细节,反证 2D 像素特征主攻高频形状;
- 只有融合(exp-e)同时拿到最好的全局与局部性能;融合架构不敏感(late-3D / late-both / early-3D 差别不大),主结果选 exp-e(直接拼接)。
4.4 失败案例与对抗训练(3D-GAN)
当 2D 特征与 3D 特征各自都失败时,融合也救不回来。作者尝试 3D-GAN:隐函数用稀疏点采样训练,直接对连续占据场加 GAN 监督很难;但隐体素特征本就用粗糙占据体损失训练,天然适配体素式 3D-GAN 损失。其几何重建(plot-d)为 CD 2.464 / PSD 3.372 / Cosine 0.1298 / L2 0.4148:腹部前的"团块(lumps)"消失,却出现新的 "蜂窝状(honeycomb)"结构(体素式 3D-GAN 原论文也观测到);且把这种几何特征与 2D 像素特征融合后,隐函数训练无法收敛。作者留作未来工作。
五、局限与未来工作
- 融合的鲁棒性边界:2D、3D 两路各自都错时,融合无法纠正所有形变,属结构性问题;
- 3D-GAN 蜂窝伪影与不收敛:几何特征与 3D-GAN 联合训练不稳定,融合后隐函数训练失败;
- 数据与互补性:DeepHuman 缺高质量纹理贴图,损害野外泛化;PIFuHD/ARCH 的高分辨率、前后法向、SMPL 蒙皮可叠加但本文未做;姿态/服饰或有长尾偏差。
六、对 3D 人体重建 / 服装重建 / 虚拟试衣方向的意义
- "双流对齐"成为范式:把"局部细节(2D 像素)"与"全局形状(3D 体素代理)"拆成两路并联,这一分工思想被后来许多多分支隐式重建沿用。
- 对服装/宽松衣物重建很对味:像素特征保布料高频细节,体素代理保整体拓扑规整、防手脚崩坏——正好对上虚拟试衣最怕的两种失败(细节糊 + 形变怪);且无模板、不需 SMPL 配准,落地标注成本低。
- 工程友好、易拼装:推理只留低分辨率体素特征 + 隐式函数,参数量约 3060 万;PIFuHD(高分辨率滑窗 + 法向)与 ARCH(SMPL 蒙皮)可叠加;对部件分割方向,可把分割先验注入体素代理这一路以约束全局语义一致性。
- 评测教训:用公开、可复现、支持自由相机旋转、姿态多样的大数据集评测,更能暴露真实鲁棒性。
术语表 / Key Terms
- geometry-aligned feature — 几何对齐特征;按查询点 3D 坐标从隐体素特征三线性插值得到的专属编码(本文核心新增)
- pixel-aligned feature — 像素对齐特征;按查询点投影像素坐标从图像特征双线性插值得到的编码(PIFu 核心)
- latent voxel feature — 隐体素/潜在体素特征;3D U-Net 把图像"提升"到 3D 得到的低分辨率体素特征
- coarse human shape proxy — 粗糙人体形状代理;把隐体素特征当全局形状先验来正则重建
- feature ambiguity — 特征歧义;同一相机射线上前后点投影到相近像素、拿到相近 2D 特征
- occupancy field — 占据场;空间点到"在网格内/外"的连续标量场
- occupancy value σ — 占据值;内为正、外为负,曲面在 σ=0
- Marching Cubes — 行进立方体;从稠密 3D 场提取等值面的经典算法
- structure-aware 3D U-Net — 结构感知三维 U 网;生成隐体素特征、注入形状规律性
- trilinear interpolation — 三线性插值;从体素特征按 3D 坐标取值的插值方式
- multi-scale trilinear interpolation (T) — 多尺度三线性插值;围绕查询点采一组偏移点并拼接
- bilinear interpolation — 双线性插值;从像素特征按连续投影坐标取值
- weak perspective projection π — (弱)透视投影;查询点→图像平面的投影
- deep implicit function fθ — 深度隐函数;本文用 MLP 实现,输入对齐特征、输出占据值
- extended cross-entropy — 扩展交叉熵;粗糙占据体损失,含平衡权重 γ
- coarse occupancy volume loss — 粗糙占据体损失;监督隐体素特征(γ=0.7)
- high-resolution query point loss — 高分辨率查询点损失;稀疏采样点的 MSE
- staged training scheme — 分阶段训练;先学离散粗糙形状、再学连续高分辨率场
- query point sampling — 查询点采样;每步稀疏采 Q=5000 点
- 3D convolution decoder νρ — 3D 卷积解码器;训练期用、推理期丢弃
- hallucinate — 臆造/推断出;对不可见背面生成合理几何
- self-occlusion — 自遮挡;人体背面被自己挡住
- under-constrained / ill-posed — 欠约束 / 病态;单视图重建固有难点
- Chamfer Distance (CD) — 倒角距离;衡量全局拓扑(本文 ×10000 报告)
- Point-to-Surface Distance (PSD) — 点到面距离;衡量全局几何精度
- Cosine / L2 normal distance — 法向余弦 / L2 距离;衡量局部细节(褶皱)
- high-frequency surface detail — 高频表面细节;如衣服褶皱
- feature fusion architecture — 特征融合架构;early/late 拼接方式(本文验证不敏感)
- exp-a / b / c / d / e — 消融配置:仅几何 / 仅像素(≈PIFu)/ late-3D / late-both / early-3D(主结果)
- degenerate case — 退化情形;PIFu 是本文只抽像素特征的退化版
- artifact / distortion — 伪影 / 形变;如扭曲的手脚
- 3D-GAN — 三维生成对抗网络;本文初步尝试,产生蜂窝伪影
- honeycomb structure — 蜂窝状结构;体素式 3D-GAN 的典型伪影
- ablation study — 消融实验;分别验证各路特征与融合方式
- generalization — 泛化能力;对野外自然图像的适应
- RGB-D sensor — RGB-D 传感器;DeepHuman 数据的采集设备
- parametric shape model (SMPL) — 参数化人体模型;需配准标注、易误差传播
浙公网安备 33010602011771号