SIFU 笔记:把 SMPL-X 侧视法线先验搬进「2D→3D 转换」——单图穿衣人体重建的 0.6 cm 突破
Zechuan Zhang, Zongxin Yang†, Yi Yang. SIFU: Side-view Conditioned Implicit Function for Real-world Usable Clothed Human Reconstruction, CVPR 2024.(ReLER, CCAI, 浙江大学;Zongxin Yang 为通讯作者;arXiv:2312.06704v3)
单图穿衣人体重建(PIFu → PaMIR → ICON → ECON/GTA)的病根一致:侧视/背视信息不足,侧后方只能靠"猜",于是侧向塌陷、部件缺失、衣物断裂。SIFU 在 ICON/ECON/GTA 之后一步——把 SMPL-X 侧视法线先验从"两端"搬到最关键的"2D 特征→3D"这一步,用 cross-attention 解耦侧视特征。
一、一句话结论
老方法把"2D 特征→3D"交给简单投影或固定 embedding,浪费了先验。SIFU 用 SMPL-X 侧视(left/back/right)法线图当 cross-attention 的 query,把侧视特征从输入图解耦出来,再在查询点融合四路特征。它在 THuman2.0 把 Chamfer / P2S 首次压到 0.6 cm(0.5961 / 0.6058),SMPL-X 不准时也稳;纹理上用 3D 一致纹理精修 补出背面,PSNR 比 PIFu 高 22.2%,并支持文本驱动编辑。
二、要解决什么问题
(i)2D→3D 的转换阶段缺先验引导。 从 2D 重建 3D 通常分三步:(a) 提取 2D 图像特征 → (b) 转换为 3D 特征 → (c) 生成重建用 3D 特征。现有方法多把几何先验(如 SMPL-X)加在 (a) 与 (c) 两端(法线图预测、SMPL 引导 SDF、体素特征等),而 (b) 这个承上启下的步骤几乎不用先验:要么投影到 3D 点(PIFu/PaMIR 系),要么用固定可学习 embedding(GTA 的 tri-plane)。
(ii)缺纹理先验。 PIFu / ARCH / PaMIR / GTA 直接预测顶点颜色,对不可见视角预测很差;PHORHUM、S3F 拆开 albedo 与光照仍缺其它视角先验;TeCH 用 diffusion 补不可见区域但逐个个体优化极耗时、强依赖精确 SMPL-X。
artifact 在 Fig. 3 挨个点名:PIFu / PaMIR / PIFuHD 根本没有人体形状、ECON 缺身体部件、ICON / D-IF 衣物被"打断"、GTA 缺细节。SIFU 要同时吃下复杂姿态与宽松衣物,并给出可用于真实用途(3D 打印、搭场景)的结果。
三、核心方法
流程:单张图 → Side-view Conditioned Implicit Function(§3.2)重建 mesh 与粗纹理 → 3D Consistent Texture Refinement(§3.3)精修纹理。SIFU 用隐式函数预测占据场并带出颜色场,重建表面为 $S_{IF}={\,x\in\mathbb{R}^3 \mid IF(x)=(o,c)\,}$(1),$o=0.5$(等值面),$c\in\mathbb{R}^3$;几何先验是 SMPL-X(形状 $\beta\in\mathbb{R}^{10}$、姿态 $\theta\in\mathbb{R}^{3\times24}$,mesh $M(\beta,\theta)\mapsto\mathbb{R}^{3\times6890}$,比 SMPL 多了手与脸)。
3.1 侧视解耦 Transformer
作者的观察:侧视(背视/左侧)与可见的正视共享材质、颜色等特征,只是被"混"在正面特征里,需分离并用 SMPL-X 指路。做法:ViT 全局编码器把 $I$ 编成 latent $h$;front-view decoder 对 $h$ 做多头自注意力得 $F_{front}$,side-view decoder 则把 SMPL-X 渲染的侧视法线图 $N_i$($i\in{left,back,right}$) 转成 embedding $z_i$ 当 query,与 $h$(key/value)做 cross-attention:
$$\mathrm{CrossAttn}(z_i,h)=\mathrm{SM}!\left(\frac{(W^Q z_i)(W^K h)^T}{\sqrt{d}}\right)(W^V h)\qquad(2)$$
SM 为 SoftMax,$W^Q,W^K,W^V$ 可学习,$d$ 为缩放系数;每子层后接残差与 LayerNorm;部署三个 side-decoder,得 $F_i\in\mathbb{R}^{H\times W\times C}$。
法线图自带"表面朝哪、从哪个方向看"的几何锚点,而且只是软引导(soft guidance)——SMPL-X 有偏差时只给出不太准的注意力偏好,不会像硬约束那样带崩结果,这就是鲁棒性的来源。论文称这是首次用人体先验从输入图解耦侧视 3D 特征。
3.2 混合先验融合策略
借用 GTA 思路,在查询点处同时利用空间定位与人体先验合并四张特征图 $F_j$($j\in{front,left,back,right}$)。空间查询组把查询点投影到特征图取像素对齐特征 $F^S_j$ 并混合:
$$F^S(x)=F^S_f(x)\ \oplus\ \mathrm{avg}\big(F^S_l(x),\,F^S_b(x),\,F^S_r(x)\big)\qquad(3)$$
($f,l,b,r$ = front/left/back/right,$\oplus$ 为拼接。)先验查询组把 SMPL-X mesh 顶点投影到特征图得 $F^S(v)$,对查询点 $x$ 找最近三角面 $t_x=[v_0,v_1,v_2]$ 做重心坐标插值:
$$F^P(x)=u\,F^S(v_0)+v\,F^S(v_1)+w\,F^S(v_2)\qquad(4)$$
两组拼接后加上到 SMPL-X mesh 的有符号距离 $\mathrm{SDF}(x)$ 与像素对齐法线特征 $F^N(x)$,送进 MLP:
$$(o,c)=\mathrm{MLP}\big(F^S(x),\,F^P(x),\,\mathrm{SDF}(x),\,F^N(x)\big)\qquad(5)$$
训练目标:$G_o$ 按 PIFu 策略采样(管占据),$G_c$ 沿真值 mesh 表面法线轻微扰动后均匀采样(管颜色);$G_o$ 用带符号 BCE $L_o=\frac{1}{|G_o|}\sum_{x\in G_o}\mathrm{BCE}(\hat o_x-o_x)$(6),$G_c$ 用 L1 $L_c=\frac{1}{|G_c|}\sum_{x\in G_c}|\hat c_x-c_x|$(7),总损失为二者之和。提网格用 Marching Cubes,并沿用 ECON 做法把手替换成 SMPL-X,再对 mesh 点做颜色预测得粗纹理。
3.3 3D 一致纹理精修
重建后颜色粗、不可见区域模糊,于是做一条基于 text-to-image diffusion 先验的 coarse-to-fine 管线:可见区域从输入图反投影拿纹理,不可见区域交给 diffusion 脑补,同时保证 3D 一致。
- 用 vision-to-text 模型(GPT-4v)把 $I$ 转成描述 $P$;按 DreamGaussian 做法把 mesh 颜色反投影到 UV 纹理图 $T$;
- 可微渲染不可见区域:$I=\mathcal{I}(T,M,k)$(8);
- 用冻结的 diffusion 模型 $\varepsilon_\theta$、以 $P$ 为条件把 $I$ 精修成 $J$,并施加一致性编辑 $H$ 保持语义布局:$J=H(\varepsilon_\theta,P,I)=H\big(\varepsilon_\theta,P,\mathcal{I}(T,M,k)\big)$(9);
- 用 $J_i$ 与 $I_i$ 的逐像素 MSE 优化 $T$,再加感知损失 $L_{vgg}$、Chamfer 距离损失 $L_{CD}$ 与输入视角 MSE:
$$\min_{T}\ \lambda_1 L_{MSE}+\lambda_2 L_{vgg}+\lambda_3 L_{CD}+\lambda_4 L^f_{MSE}\qquad(10)$$
一致性编辑:逐视角单独扩散会内容不一致,论文借鉴 TokenFlow——对 $I$ 做 DDIM 反演并抽取所有层的自注意力 token 特征 $\varphi(x_i)$;随机选关键视角做联合编辑(Tune-A-Video 式)得外观统一的 $T_{key}$,再最近邻传播到所有视角。最近邻场($p,q$ 为空间位置,$D$ 为余弦距离):$\gamma_{i\pm}[p]=\arg\min_{q}D\big(\varphi(x_i)[p],\,\varphi(x_{i\pm})[q]\big)$(11);随后按位置 $p$ 与视角 $i$ 线性混合($\varphi(J^{i\pm})\in T_{key}$,$w_i\in(0,1)$ 与到相邻关键视角的距离成正比):
$$F_\gamma(T_{key},i,p)=w_i\cdot\varphi(J^{i+})[\gamma_{i+}[p]]+(1-w_i)\cdot\varphi(J^{i-})[\gamma_{i-}[p]]\qquad(12)$$
四、网络结构与训练 / 实现细节
- 编码器:depth=8 的 ViT;输入=图像与正/背面法线图(ECON 那套)拼接;8 头自注意力,输出 1024×256。
- 解码器:front/side 各 depth=3、8 头;front 自注意力,side 以 SMPL-X 法线图为 query 做 cross-attention;输出 $F\in\mathbb{R}^{128\times128\times32}$。
- MLP:两个同构 MLP(层宽 [512, 1024, 512, 256, 128, 1])分预测占据与颜色;输入前加 128×128×6 法线特征(2-stack hourglass 精修)。
- 参数量(Tab. 4):PIFu 24,744,136;GTA 45,060,544;SIFU 37,962,112(更少)。
- 图→文:GPT-4v 生成描述 $A$,前置 "the back side of $A$, realistic, vivid" 拼成 $P$。
- 扩散:Stable Diffusion-v2-1;DDIM 确定性采样 50 步;DDIM inversion(CFG scale = 1、100 步)。
- 训练:THuman2.0(526 扫描:490/15/21),训练用真值 SMPL-X、推理用 PIXIE;每扫描 36 视角、分辨率 512;PyTorch Lightning、10 epoch、lr 1e-4、batch 4、单张 RTX 3090 训 2 天。
- 采样:每对象 2048 占据点 + 2048 颜色点;颜色点沿法线加高斯扰动 $N(0,\sigma)$,$\sigma=0.1$ cm;内/外用 Kaolin 判、真值颜色取自 UV 纹理图。
- 权重:$\lambda_1=1.0,\ \lambda_2=1\times10^{-4},\ \lambda_3=1\times10^{-2},\ \lambda_4=1.0$。
- 耗时:粗纹理 mesh 约 44 秒;精修(150°→210°、每 2°、30 视角、512)约 5 分钟;合计约 6 分钟。
- 运行时间(Tab. 5,CAPE-NFP):ICON 0.36 s、D-IF 0.40 s、SIFU 0.65 s、GTA 0.68 s、ECON 15.07 s。
五、实验与结果
主评测在 CAPE 与 THuman2.0(CAPE 拆成 CAPE-FP / CAPE-NFP)。几何用 Chamfer 与 P2S,还用两 mesh 渲染法线图的 L2 Normal 误差(视角 {0°,90°,180°,270°});纹理用 PSNR。
5.1 几何:与 SOTA 全面对比(Tab. 1)
SMPL-X 先验类方法测试时用真值 SMPL-X;marching cubes 分辨率 256;* 为由 ICON 重实现。
| 方法 | 会议 | CAPE-NFP C↓ | P2S↓ | N↓ | CAPE-FP C↓ | P2S↓ | N↓ | THuman2.0 C↓ | P2S↓ | N↓ |
|---|---|---|---|---|---|---|---|---|---|---|
| PIFu* | ICCV 2019 | 2.5609 | 1.9971 | 0.1023 | 1.8139 | 1.5108 | 0.0798 | 1.5991 | 1.4333 | 0.0843 |
| PIFuHD | CVPR 2020 | 3.7670 | 3.5910 | 0.1230 | 2.3020 | 2.3350 | 0.0900 | – | – | – |
| PaMIR* | TPAMI 2021 | 1.6313 | 1.2666 | 0.0730 | 1.4810 | 1.1631 | 0.0727 | 1.2152 | 1.0582 | 0.0730 |
| ICON | CVPR 2022 | 0.8846 | 0.8569 | 0.0434 | 0.7247 | 0.6979 | 0.0371 | 0.9491 | 0.9846 | 0.0621 |
| ECON | CVPR 2023 | 0.9462 | 0.9334 | 0.0382 | 0.9039 | 0.8938 | 0.0373 | 1.2585 | 1.4184 | 0.0612 |
| D-IF | ICCV 2023 | 0.8237 | 0.8353 | 0.0575 | 0.7625 | 0.7690 | 0.0503 | 1.1696 | 1.2900 | 0.0936 |
| GTA | NeurIPS 2023 | 0.8508 | 0.7920 | 0.0424 | 0.6525 | 0.6084 | 0.0349 | 0.7329 | 0.7297 | 0.0492 |
| SIFU | – | 0.7725 | 0.7354 | 0.0378 | 0.6297 | 0.5980 | 0.0327 | 0.5961 | 0.6058 | 0.0407 |
(单位 cm;C=Chamfer,N=Normal。)SIFU 全指标刷新纪录,THuman2.0 上 Chamfer / P2S ≈ 0.6 cm 前所未有。ECON 的 Normal 在 CAPE 亮眼(0.0382 / 0.0373)到 THuman2.0 却掉到 0.0612(Chamfer 涨到 1.2585),泛化差;SIFU 三个数据集都稳。纹理上 PSNR 比 PIFu 高 22.2%(22.1024 vs 18.0934)。
5.2 对 SMPL-X 的鲁棒性(Tab. 2)
给 THuman2.0 的真值 SMPL-X 的 $\beta$ 与 $\theta$ 加噪声 scale 0.05,用它替换真值来评。
| 方法 | Backbone | Chamfer↓ | P2S↓ | Normal↓ |
|---|---|---|---|---|
| PaMIR | CNN | 1.3224 | 1.1349 | 0.0767 |
| ICON | CNN | 1.2935 | 1.3949 | 0.0781 |
| D-IF | CNN | 1.5262 | 1.7296 | 0.1191 |
| ECON | – | 2.1195 | 1.8074 | 0.1029 |
| GTA | Transformer | 1.0473 | 1.0780 | 0.0649 |
| SIFU | Transformer | 0.9937 | 1.0645 | 0.0599 |
Transformer 路线明显比 CNN 稳,SIFU 又比 GTA 好一档;定性上(Fig. 11)弯腿、手部姿态不准依旧可接受。
5.3 消融实验(Tab. 3,CAPE-NFP + 真值 SMPL-X)
A - 换 backbone:去掉 cross-attention(0.9846 / 0.8672 / 0.0477)、改用可学习 embedding(0.9860 / 0.8538 / 0.0471)、换同容量 CNN hourglass(0.8699 / 0.8221 / 0.0387)都明显更差 → 侧视解耦 transformer 有效。
B - 不同特征平面:
| 设置 | Chamfer↓ | P2S↓ | Normal↓ |
|---|---|---|---|
| 只用 front 面 | 1.1165 | 0.9574 | 0.0558 |
| front + back 两面 | 0.9929 | 0.9189 | 0.0464 |
| 去掉 left 面 | 0.7941 | 0.7576 | 0.0387 |
| 去掉 right 面 | 0.8058 | 0.7671 | 0.0386 |
| 全部四面(SIFU) | 0.7725 | 0.7354 | 0.0378 |
只加 left 或 right 侧视平面提升最显著——Chamfer 约降 0.2 cm(对比 front+back 的 0.9929);四面全用只再多降约 0.03 cm;故最终选四平面平衡方案。C - 查询策略:pixel-aligned(0.8111 / 0.7615 / 0.0400)最差,hybrid prior fusion 全面更优(0.7725 / 0.7354 / 0.0378)。
D - 纹理精修的价值(Tab. 6,THuman2.0,PIXIE 估 SMPL-X):
| 方法 | Diffusion | PSNR↑ | SSIM↑ | LPIPS↓ |
|---|---|---|---|---|
| PIFu | ✗ | 18.0934 | 0.9117 | 0.1372 |
| Impersonator++ | ✗ | 16.4791 | 0.9012 | 0.1468 |
| TEXTure | ✓ | 16.7869 | 0.8740 | 0.1435 |
| Magic123 | ✓ | 14.5013 | 0.8768 | 0.1880 |
| S3F | ✗ | 14.1212 | 0.8840 | 0.1868 |
| HumanSGD | ✓ | 17.3651 | 0.8946 | 0.1300 |
| SIFU w/o refinement | ✗ | 22.0256 | 0.9212 | 0.0849 |
| SIFU(含精修) | ✓ | 22.1024 | 0.9236 | 0.0794 |
精修主要提升 LPIPS(更贴近人眼);而即使不精修 SIFU 也已全面领先。应用上,换文本提示可得 3D 一致新纹理(论文示例:NBA Rockets / NBA Lakers 球衣、Van Gogh、Iron Man、铅笔素描),几何 + 纹理也够 3D 打印与搭场景。
六、局限与未来工作
局限(Fig. 13):A. 姿态不准——SMPL-X 误差拖累精度,是依赖人体先验方法的通病;B. 极端衣物——明显脱离身体时失手;C. 纹理出错——图转文字会丢细节,GPT-4v 可缓解,但 diffusion 不总能完美复现纹理。
未来工作:让 diffusion 同时学形状 + 纹理先验(难点是把图像提示融合进扩散并降低微调耗时);对头发、脸、手分别处理后整合。社会影响:可能引发隐私、deep fake、知识产权问题,需伦理与法律框架。
七、对 3D 人体 / 服装重建 / 虚拟试衣方向的意义
- 先验该加在"转换步骤"。 2D→3D 的中间映射最缺先验;用侧视法线当 query 的 cross-attention 把侧后方特征"拎"出来,精度与鲁棒性同涨,思路可迁移到服装重建、部件分割等"脑补不可见部分"的任务。
- 软先验 > 硬约束。 SMPL-X 是"引导信号"而非"几何锚点",不准时也不崩(Tab. 2 的 0.9937 / 0.0599)。虚拟试衣的真实自拍里姿态几乎不可能准,这一点是刚需。
- 宽松衣物 + 复杂姿态可达 3D 打印级精度(≈ 0.6 cm),正对试衣"输入任意自拍、输出可直接驱动/渲染的服装几何"。
- 纹理侧配方:不可见区域用 diffusion 补全 + TokenFlow 式跨视角一致约束,并把渲染图 MSE 反传到 UV 纹理图 $T$。
- 可切入点:SMPL-X 依赖、"衣物明显脱离身体"仍是软肋;服装-人体解耦、部件级先验、压缩 5 分钟精修都是机会。
八、术语表 / Key Terms
- SIFU — Side-view Conditioned Implicit Function;本文方法名,"侧视条件隐式函数"
- side-view conditioned — 侧视条件化的;用侧视法线作条件/引导
- Side-view Decoupling Transformer — 侧视解耦 Transformer;分离侧视特征的核心模块
- cross-attention — 交叉注意力;query 来自一处、key/value 来自另一处
- self-attention — 自注意力
- query / key / value — 注意力机制里的查询 / 键 / 值
- SMPL — 参数化人体模型(β 体型 + θ 姿态)
- SMPL-X — 在 SMPL 上加手、脸的扩展模型,本文几何先验来源
- normal map — 法线图
- side-view normal — 侧视法线(left/back/right)
- pixel-aligned feature — 像素对齐特征;查询点投影到特征图取到的特征
- hybrid prior fusion — 混合先验融合;空间查询 + 先验查询两路合一
- barycentric interpolation — 重心坐标插值
- SDF (signed distance function) — 有符号距离函数
- occupancy field — 占据场;本文隐式函数的输出之一
- implicit function (IF) — 隐式函数
- Marching Cubes — 从占据场提取三角网格的经典算法
- ViT (Vision Transformer) — 视觉 Transformer;本文全局编码器 backbone
- feature plane — 特征平面(front/left/back/right 四路)
- tri-plane — 三平面特征表示;GTA 的固定可学习 embedding 方案
- hourglass network — 沙漏网络;本文用来精修法线特征
- ablation study — 消融实验
- diffusion model — 扩散模型;本文用 Stable Diffusion-v2-1 做纹理先验
- Stable Diffusion — 潜空间文生图扩散模型(本文 v2-1 checkpoint)
- DDIM inversion — DDIM 反演;把图像反推回噪声轨迹以提取特征
- classifier-free guidance — 无分类器引导;本文反演时 scale 设为 1
- consistent editing — 一致性编辑;跨视角强制扩散特征一致
- TokenFlow — 视频/多视角一致编辑方法;本文一致性编辑的灵感来源
- UV texture map — UV 纹理图;纹理反投影与优化都落在它上面
- perceptual loss (VGG) — 感知损失;用 VGG 特征促细节
- Chamfer distance — 倒角距离;几何指标,越小越好
- P2S (point-to-surface) — 点到面距离;几何指标
- normal error — 法线误差;两 mesh 渲染法线图的 L2
- PSNR / SSIM / LPIPS — 纹理质量指标:峰值信噪比 / 结构相似度 / 学习式感知相似度
- in-the-wild — 真实野外图像
- THuman2.0 — 本文训练的 3D 人体扫描数据集(526 个扫描)
- CAPE — 穿衣人体数据集;本文分 CAPE-FP、CAPE-NFP 两子集
- PIXIE — 单图 SMPL-X 估计器;本文推理时用
- Rembg — 去背景工具;本文推理预处理
浙公网安备 33010602011771号