跳转至

PercHead: Perceptual Head Model for Single-Image 3D Head Reconstruction & Editing

会议: CVPR 2026
论文: CVF Open Access
代码: https://antoniooroz.github.io/PercHead/ (项目页,含训练/推理代码与交互式 GUI)
领域: 3D视觉
关键词: 单图 3D 头部重建, 感知损失, DINOv2, Gaussian Splatting, 解耦式 3D 编辑

一句话总结

PercHead 用一张图重建出对极端视角都鲁棒的 3D 一致头部:核心是抛弃 L1/LPIPS 这类像素级监督,改用 DINOv2 + SAM 2.1 基础模型的中间特征构造"纯感知损失",配合 ViT 架构(2D 编码器 + FLAME 模板初始化的 3D 解码器 + 高斯泼溅),在 Ava-256 极端视角上 LPIPS、DreamSim、ArcFace 全面领先,并只需换掉编码器就扩展成"分割图控几何 + 文本/参考图控风格"的解耦式 3D 编辑。

研究背景与动机

领域现状:从单张图重建 3D 头部是数字人、虚拟会议、可控肖像等应用的入口。主流路线分几派:基于 3DMM 网格(ROME)几何一致但发型等复杂区域realism差;GAN 派(EG3D、PanoHead、SphereHead)借大规模 2D 数据 + 对抗损失做出高realism,但训练难、重建要先做 latent inversion 损失身份;高斯泼溅派(GAGAvatar、LAM)效率高、正脸效果好;多视角扩散派(LGM)通用但达不到头部所需的高保真。

现有痛点:现有方法几乎都"近输入视角好、相机一动就崩"。原因有二——一是训练数据:头部域真实多视角数据集要么很小(NeRSemble)、要么是合成的(Cafca),能规模化的只有 in-the-wild 单视角数据(FFHQ),缺乏视角多样性;二是监督信号:人对脸部结构和外观极度敏感,但头发等高频区域从单图根本无法做到像素级准确,L1/SSIM/LPIPS 这类低层损失会把"合理但非逐像素对齐"的重建当成错误打压,在高频区给出噪声监督,越训越糊。

核心矛盾:要 3D 一致就需要大规模多视角先验,但头部域大规模多视角数据稀缺;要高保真就要强监督,但像素级损失在不可见区域 / 高频区域恰恰是有害的。两个约束互相打架。

本文目标:(1) 从任意视角输入重建出对极端目标视角都 3D 一致的高realism头部;(2) 让这套通用重建模型能低成本扩展到解耦式 3D 编辑。

切入角度:作者赌的是——既然 DINOv2、SAM 2.1 这类视觉基础模型已经对图像有"深层理解"(不专门训练就能解多种任务),那它们的中间特征就能在"感知/语义层面"而非像素层面比较渲染图与真值,从而在头发这种高频区给出更鲁棒的监督。

核心 idea:用"基础模型特征空间的感知损失"替代像素级损失来监督 3D 重建,配 ViT 架构把 3D 表示与 2D 输入解耦,并通过"多视角 + in-the-wild"混合训练同时拿到 3D 一致性与身份多样性。

方法详解

整体框架

PercHead 是一条"单图 → 2D 编码 → 3D 高斯 → 渲染 → 锐化"的前馈管线,但训练时用的不是渲染图和真值的像素差,而是把两者都喂进冻结的 DINOv2 / SAM 2.1,比较它们的深层特征。具体地:输入图先经双分支 2D 编码器(一个可训练 ViT + 多层 DINOv2 特征,拼接后过 MLP,只保留前景 patch)得到 2D 特征 \(F_{2D}\);解码端从一个 FLAME 模板(上采样到 65k 顶点、每 16 个邻接顶点成一组 patch)初始化 3D 隐表示 \(F^0_{3D}\),经 10 层解码 ViT 反复 cross-attend 到 \(F_{2D}\) 来"补全" 3D 信息(注意全程不用 self-attention);再用 PixelShuffle 把每个 3D patch 展成 16 个高斯隐变量,分别线性映射出位置/尺度/旋转/不透明度/颜色,位置以 FLAME 顶点为锚点做受限偏移;高斯泼溅光栅化出图后,再过一个 SHP-CNN 锐化模块。整条管线由 DINOv2 + SAM 2.1 感知损失监督。编辑时只需把编码器换成"分割图 + CLIP 嵌入",其余权重沿用重建模型微调即可。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["单张输入图<br/>(或 分割图+CLIP)"] --> B["双分支 2D 编码器<br/>ViT + 多层 DINOv2 → MLP"]
    B --> C["FLAME 模板初始化的<br/>3D 解码 ViT<br/>10 层 cross-attn 到 2D 特征"]
    C --> D["PixelShuffle → 高斯属性<br/>位置以 FLAME 顶点为锚"]
    D --> E["高斯泼溅光栅化 + SHP-CNN 锐化"]
    E -->|训练监督| F["纯感知损失<br/>DINOv2 + SAM 2.1 特征比较"]
    E -->|推理输出| G["任意视角 3D 一致头部"]
    A -.只换编码器.-> H["解耦式 3D 编辑<br/>分割图控几何 / 文本·图控风格"]

关键设计

1. 双分支 2D 编码 + 无自注意力的 3D 解码:把 3D 表示和 2D 输入解耦

痛点是高斯泼溅派(GAGAvatar/LAM)把高斯直接从 2D 特征图"抬升"上来,3D 表示和输入视角绑得太死,换视角就崩。PercHead 改成 ViT 架构让 3D 隐表示独立存在、只去"查询" 2D 特征。编码端在 LAM 已验证的"多层 DINOv2 特征"之外,额外加一条可训练 ViT 分支提供任务专用的重建特征,两路 patch 数相同,拼接后过 MLP:\(F_{2D}=\mathrm{MLP}\big(\{F^i_{ViT},F^i_{DINOv2}\}_{i=1}^{|P|}\big)\),只保留前景 patch。解码端从 FLAME 模板初始化 \(F^0_{3D}\),第 \(i\) 层按 \(F^i_{3D}=F^{i-1}_{3D}+\mathrm{MLP}_i\big(F^{i-1}_{3D}+\mathrm{ATTN}_i(F^{i-1}_{3D},F_{2D})\big)\) 逐层更新。关键观察是:每个 3D 隐变量代表一个局部顶点组,配上 2D 特征里的全局上下文,仅靠 cross-attention 就足以重建出连贯的 3D 头,不需要 3D patch 之间互相 self-attention——这既省算力,也强化了"3D 结构由模板+局部组装而来"的归纳偏置。位置预测则锚在 FLAME 顶点上:\(X=X_{FLAME}+\mathrm{Tanh}(\mathrm{Linear}(F_{Gaussian})\cdot s_{init})\cdot s_{max}\)\(s_{init}\) 控制早期移动幅度、\(s_{max}\) 限制高斯偏离锚点的最大距离,避免训练初期高斯乱飞。

2. 纯感知损失:只用 DINOv2 + SAM 2.1 的深层特征监督,丢掉所有像素级损失

这是全文的"心脏"。模型必须重建大量从未直接观测的区域,在头发等高频区追求逐像素准确是不现实的,L1/SSIM/LPIPS 在这里只会给出噪声监督、最终把细节磨平。PercHead 因此完全用基础模型特征空间的余弦距离当损失。DINOv2 项取中间层 \(L=\{8,11\}\) 的 class token 和 patch token,对渲染图 \(I_r\) 与真值 \(I_{gt}\) 比较 L2 归一化后的特征余弦相似度:\(L_D=\frac{1}{|L||T_D|}\sum_{l\in L}\sum_{t\in T_D}\big(1-CD_{l,t}(I_r)\cdot CD_{l,t}(I_{gt})\big)\),其中 \(CD_{l,t}(I)=\mathrm{DINOv2}_l(I)_t/\lVert\mathrm{DINOv2}_l(I)_t\rVert_2\)。不同层作用不同:中层提升锐度,晚层更关注眼镜、头发这类语义概念。SAM 2.1 项则用其中间图像编码(而非分割图本身)比较:\(L_S=\frac{1}{|T_S|}\sum_{t\in T_S}\big(1-\frac{\mathrm{SAM2.1}(I_r)_t\cdot\mathrm{SAM2.1}(I_{gt})_t}{\lVert\mathrm{SAM2.1}(I_r)_t\rVert_2\lVert\mathrm{SAM2.1}(I_{gt})_t\rVert_2}\big)\),让模型把细节"分割对"。总损失就这两项:\(L=\lambda_D L_D+\lambda_S L_S\)\(\lambda_D=\lambda_S=1.0\),重建与编辑两条管线共用。唯一例外是 SHP-CNN 用 DINOv2 第 8 层 class token 监督(实测最锐)。两个基础模型都用蒸馏小版,合计仅 67M 参数。这条损失可作为标准损失的即插即用替换,挑战了"训练 3D 重建必须用 L1/LPIPS"的惯例。

3. 3D 一致性训练任务:多视角数据保一致、in-the-wild 数据保多样

作者要模型对三件事鲁棒:(1) 3D 表示自洽、(2) 对侧脸输入鲁棒、(3) 对多样身份鲁棒。前两点靠多视角数据:NeRSemble 提供 270 个真实身份 × 16 视角,Cafca 提供 1500 个合成人物 × 30 视角(含纯后脑勺视角,用 GAGAvatar Track 的人脸检测剔除);训练时输入视角的多样性逼模型处理侧脸,而对额外三个视角的比较则提升对未见区域的补全。第三点靠 in-the-wild 的 FFHQ——但只取 3k 张(而非全部 70k,并剔除有遮挡的样本),就足以让模型对极端 OOD 输入鲁棒,同时不破坏 3D 一致性。这种"少量真实野外数据点睛"的配比是消融里被验证的关键:纯 2D 数据根本重建不出 3D 头,纯多视角数据又因受控环境光照单一而难保留输入光照,两者混合才最优。

4. 解耦式 3D 编辑:只换编码器,几何与风格的解耦自动涌现

通用重建模型要扩展到编辑,PercHead 只改编码器:把单图输入换成两路——19 通道的 FaRL 分割图(控几何)+ 单个 CLIP 嵌入(控风格),\(F_{Geom+Style}=\mathrm{MLP}\big(\{F^i_{ViT\text{-}Geom},F_{CLIP}\}_{i=1}^{|P|}\big)\),其余管线用重建权重初始化后微调。值得注意的是几何与风格的解耦无需任何额外约束就自然涌现。数据复用训练图(但排除 Cafca 以免生成合成脸),训练时把同一张图同时喂给 CLIP 与 FFHQ。推理时分割图控几何(支持 GUI 里手绘编辑),风格既可用参考图、也可借 CLIP 文本编码器零样本用文本 prompt 控制——尽管训练时只用图像做风格条件,靠 CLIP 视觉-文本对齐的潜空间就能解读文本编辑,既能改低层属性(发色、卷发)也能改高层属性(年龄)。这与 LAM"在 2D 编辑再抬升到 3D"不同,PercHead 直接在 3D 空间 attend 分割图与 CLIP 特征,控制更直接、算力更省。

损失函数 / 训练策略

最终目标即 \(L=\lambda_D L_D+\lambda_S L_S\)\(\lambda_D=\lambda_S=1.0\)),无对抗损失、无扩散、无任何像素级损失。SHP-CNN 单独由 DINOv2 第 8 层 class token 监督。重建与编辑共用同一损失,编辑模型从重建权重微调而来。

实验关键数据

主实验

在完全未见的 Ava-256 上评测,分 novel-view 与 extreme-view(渲染水平对侧视角,考验对大片未见区域的合理推断)两个任务,指标含 PSNR/SSIM(重建)、LPIPS/DreamSim(感知)、ArcFace 距离(身份保持,越小越好)。

任务 方法 PSNR↑ SSIM↑ LPIPS↓ DSim↓ ArcFace↓
Novel PanoHead 14.8 0.687 0.314 0.106 0.358
Novel GAGAvatar 15.9 0.743 0.274 0.114 0.348
Novel LAM 13.8 0.695 0.353 0.143 0.406
Novel Ours 16.4 0.691 0.269 0.092 0.292
Extreme PanoHead 14.2 0.658 0.349 0.131 0.416
Extreme GAGAvatar 13.5 0.694 0.364 0.183 0.523
Extreme LAM 11.4 0.634 0.455 0.219 0.568
Extreme Ours 15.9 0.678 0.291 0.106 0.282

PercHead 在 PSNR、LPIPS、DreamSim、ArcFace 上全面领先;仅 SSIM 略输 GAGAvatar,但其余更贴近人类感知与身份保持的指标全胜。极端视角下差距更明显:最强 baseline PanoHead 从 novel 到 extreme,LPIPS、DreamSim、ArcFace 显著退化,而 PercHead 的 ArcFace 反而保持在 0.282(极端视角甚至略优于自己的 novel-view 0.292),稳健性突出。定性上 PanoHead 有镜像伪影、SphereHead 眼镜/头发/脸型跨视角错乱、GAGAvatar 正转侧丢细节、LAM 高斯 3D 不一致、LGM 幻觉几何并偏蓝,PercHead 在大视角变化下仍保持细节与一致性。

消融实验

在 Ava-256 极端视角上消融数据、损失、锐化三组:

配置 PSNR↑ LPIPS↓ DreamSim↓ ArcFace↓
Data 2D Data 6.5 0.643 0.436 0.752
Data Multi-View 15.6 0.299 0.111 0.308
Data 2D + MV (Ours) 15.9 0.291 0.106 0.282
Loss LPIPS+L1 15.9 0.285 0.115 0.300
Loss DINOv2 15.4 0.383 0.149 0.340
Loss SAM2.1 15.9 0.309 0.107 0.311
Loss DINOv2+SAM2.1 (Ours) 15.9 0.291 0.106 0.282
SHP w/o SHP-CNN 15.9 0.301 0.116 0.282
SHP with SHP-CNN (Ours) 15.9 0.291 0.106 0.282

关键发现

  • 数据混合不可或缺:纯 2D 数据 PSNR 仅 6.5、根本重建不出 3D 头;纯多视角数据虽细节好但难保留输入光照;2D+MV 混合在所有指标上最优。
  • 损失是 trade-off 而非单点最优:LPIPS+L1 的 LPIPS 反而最低(0.285,因它直接优化该指标),但 DreamSim、ArcFace 明显更差,定性上过度平滑、头发脸部丢细节;纯 DINOv2 偏糊但发型保真好;纯 SAM2.1 脸好但头发被切断(分割导向编码对噪声大的头发监督不力)。两者结合在感知质量与身份保持上拿到最佳平衡。
  • SHP-CNN 只管锐度:它改善 LPIPS、DreamSim,但对 PSNR、ArcFace(身份)无影响——定位清晰的轻量锐化器。
  • 额外泛化:虽只在单帧图训练,逐帧应用到 VFHQ 视频能保持跨时间的几何/外观一致(仅未观测区域有轻微闪烁)。

亮点与洞察

  • "感知损失"被推到极致:不是给标准损失加一项感知正则,而是完全用基础模型特征替代所有像素级损失,且只用蒸馏小模型(合计 67M)。这个"少即是多"的结论挑战了 3D 重建必须用 L1/LPIPS 的惯例,可迁移到任何高频/不可见区域监督困难的重建任务。
  • 用 SAM 的中间编码而非分割图本身当监督很巧:绕过了"分割掩膜不可微/太粗"的问题,直接借 SAM 对细节的判别力,且配 DINOv2 互补(一个管语义保真、一个管细节边界)。
  • 架构层面"3D 不做 self-attention"反直觉但有效:3D 隐变量只 cross-attend 2D 特征 + 局部组装,既省算力又强化了模板归纳偏置,是 3D 一致性的来源之一。
  • 编辑能力几乎零成本:只换编码器、解耦自动涌现、还能借 CLIP 文本编码器零样本支持文本编辑——把"通用重建模型"当 foundation 复用的范式很有启发。

局限与展望

  • 作者承认三点:(1) 不支持表情迁移,难做 avatar 动画;(2) 无时序理解,视频逐帧会有未观测区域闪烁;(3) 光照被"烘焙"进重建,难迁移到新环境光照(无 relighting)。
  • 编辑受限于 CLIP 单个嵌入,身份保持有限(虽然编辑过程中重建身份保持一致);几何编辑在大尺度改动上优于 NeRFFaceEditing,但小范围局部编辑不如 NFE。
  • 自己看:评测主要在 Ava-256 单一未见数据集上做主表,泛化广度的证据偏少(NeRSemble 留出身份、VFHQ 视频在补充材料);纯感知损失对头发的优势主要靠定性图说明,缺一个直接量化高频区质量的指标。改进方向:引入轻量时序模块或显式光照分解,或把风格条件从单个 CLIP 嵌入换成更高容量的表示以改善身份保持。

相关工作与启发

  • vs GAGAvatar / LAM(高斯泼溅派):它们把高斯从 2D 特征图直接抬升,3D 与输入视角强绑定,侧脸/极端视角崩;PercHead 用 ViT 解耦 3D 表示 + cross-attention,极端视角 ArcFace 大幅领先(0.282 vs 0.523 / 0.568)。
  • vs PanoHead / SphereHead(3D GAN 派):它们用三平面/球面三平面做 360° 头部生成,但重建要做昂贵的 latent inversion 且常有镜像伪影;PercHead 前馈重建、无 inversion、身份保持更好。
  • vs LGM(多视角扩散派):LGM 通用但达不到头部高保真;PercHead 专注头部域、靠感知损失拿到高realism。
  • vs LAM 编辑:LAM 在 2D 编辑再抬升到 3D,算力大、对 3D 结构控制弱;PercHead 直接在 3D 空间 attend 分割图 + CLIP,控制更直接。
  • vs 既有 DINOv2-based 损失工作:以往多聚焦 2D 任务或忽略中间表示;PercHead 用多层 DINOv2 中间特征 + SAM2.1 编码专门改善 3D 头部的高频一致性。

评分

  • 新颖性: ⭐⭐⭐⭐⭐ 把"纯基础模型感知损失"做成 3D 重建的唯一监督,并验证可替代全部像素级损失,观点鲜明
  • 实验充分度: ⭐⭐⭐⭐ 主表 + 三组消融扎实、结论自洽,但主量化只在单一未见数据集,泛化广度证据偏补充材料
  • 写作质量: ⭐⭐⭐⭐ 动机—方法—消融逻辑清晰,损失与架构公式完整;部分细节(GUI、视频)依赖补充材料
  • 价值: ⭐⭐⭐⭐⭐ 单图 3D 头部重建 SOTA + 低成本解耦编辑,且"感知损失替代像素损失"的洞察可迁移到更广的重建任务