跳转至

Attribute-Preserving Pseudo-Labeling for Diffusion-Based Face Swapping

会议: CVPR 2026
论文: CVF Open Access
代码: https://cvlab-kaist.github.io/APPLE (项目页)
领域: 扩散模型 / 换脸
关键词: 换脸, 扩散模型, 教师-学生, 属性保持, 伪标签

一句话总结

APPLE 用一个"先训好教师、再用教师造高质量伪标签喂学生"的纯扩散教师-学生框架做换脸:教师靠条件去模糊(而非给整张脸打掩码)保住目标的肤色/光照/姿态,再用属性感知反演把目标的细粒度属性(妆容、眼镜)锚进噪声里,造出干净的伪标签;学生只看这些干净伪标签学习,最终在属性保持上达到 SOTA(FFHQ FID 2.18、Pose 1.85),同时 ID 相似度仍有竞争力。

研究背景与动机

领域现状:换脸的目标是把源图的身份换到目标图上,同时保留目标的姿态、表情、光照、肤色、妆容、配饰等属性。早期方法以 GAN 为主(SimSwap、HiFiFace 等),近年扩散模型凭借高保真和训练稳定性成为主流替代。

现有痛点:换脸没有真实 ground truth(同一个人不可能同时有"换前/换后"配对),所以监督训练本质上不可行。主流扩散换脸(FaceAdapter、DiffSwap、REFace)把任务建模成条件 inpainting——把目标脸部区域整个掩掉,让模型在源身份条件下重建。掩码确实能阻止目标身份"泄漏",但它把光照、肤色、妆容、配饰这些关键外观线索一起抹掉了。结果模型只能"脑补",即便额外喂 3DMM landmark 或 CLIP 特征,换出来的脸属性往往和目标对不上。

核心矛盾:身份迁移和属性保持本身就是一对 trade-off——掩码越狠越能压住目标身份(利于身份迁移),但也越保不住属性。inpainting 把这对矛盾"硬切"到了不利于属性的一端。

本文目标:在不依赖真实配对、不掩掉属性线索的前提下,让模型既能可靠换身份、又能高保真保住目标属性(尤其妆容、眼镜这类细粒度细节)。

切入角度:与其让学生直接在"被破坏的掩码输入"上学,不如先把教师练成能造出属性对齐的高质量伪标签的模型,再让学生在这些干净伪标签上学。伪标签质量是整个框架的命门:若伪标签在姿态/光照上和目标冲突,学生收到的是矛盾信号,反而更差。

核心 idea:用"条件去模糊 + 属性感知反演"造出属性对齐的干净伪标签,让学生在干净输入(而非掩码退化输入)上学换脸——伪标签越干净,学生越能学到忠实的属性保持。

方法详解

整体框架

APPLE 是建立在 rectified-flow 扩散主干(FLUX.1-Krea[dev])上的纯扩散教师-学生框架,身份用 PuLID 编码、属性走 OminiControl 分支(LoRA rank 64)。整条管线分三段串行:(a) 教师用条件去模糊训练(b) 教师用属性感知反演造伪标签(c) 学生在伪三元组上学习。前两段都是为了让教师产出属性对齐的伪标签,第三段才是真正部署用的学生模型,且学生最终反超教师。

基础公式沿用 rectified flow:噪声 \(\omega\) 和真图 \(x_0\) 在时刻 \(t\) 线性插值 \(z_t=(1-t)x_0+t\omega\),模型学速度场 \(v_t\),flow-matching 损失 \(L_{flow}=\mathbb{E}\big[\lVert(\omega-I_{tgt})-v_t(z_t, id_{src}, att_{tgt})\rVert^2\big]\),并配身份损失 \(L_{id}=1-\cos\!\big(F_{id}(\hat{x}_0), F_{id}(I_{src})\big)\),总损失 \(L_{total}=L_{flow}+\lambda_{id}L_{id}\)。训练时源/目标同身份,推理时换成不同身份。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["源图 + 目标图<br/>(同身份训练)"] --> B["条件去模糊<br/>模糊目标脸代替掩码<br/>保住低频属性线索"]
    B --> C["属性感知反演<br/>仅用属性条件反演目标<br/>把妆容/眼镜锚进噪声"]
    C --> D["学生伪三元组学习<br/>干净伪标签当属性条件<br/>重建原目标"]
    D --> E["换脸输出<br/>推理无需属性预处理"]

关键设计

1. 条件去模糊:用模糊代替掩码,把属性线索留在条件里

针对"inpainting 掩掉整张脸 → 光照/肤色/妆容线索全丢"这个痛点,作者把教师的训练目标从条件 inpainting 改成条件去模糊。掩码的初衷只是压住目标身份(否则模型会重建目标身份而不学源身份迁移),但它连属性一起抹了。去模糊的做法是:把目标脸区域下采样到 8×8 再上采样回原分辨率——这一步抹掉的是高频的身份细节,但低频的色调、光照、姿态轮廓被保留下来;模糊只通过 face parsing 掩码作用在脸部区域,背景和上下文不动。这样模型在训练时仍能"看到"目标的属性上下文,去模糊本质上是个比 inpainting 信息量更大的代理任务。Table 1 显示,光是从 inpainting 换成 deblurring,FID 就从 11.00 砸到 4.20,Pose 3.37→2.58、Expr 1.01→0.79。

此外作者富化语义条件补结构一致性:标准 3DMM landmark 之外,把 gaze estimator 给出的眼部 landmark 和 face parsing 给出的眼镜分割掩码一起叠到模糊条件上。这是因为扩散模型用 gaze loss 当采样引导时常出现眼周伪影,直接把眼部/眼镜结构当条件喂进去,能更稳地保住注视方向和配饰。

2. 属性感知反演:故意利用反演噪声的"残留语义"锚住细粒度属性

去模糊保住了低频属性,但妆容、配饰这类高频细节因为在模糊输入里被抹掉了,教师只能隐式脑补,仍有提升空间。作者在推理造伪标签时引入属性感知反演。背景观察是:扩散反演(rectified flow 下按 \(z_{t+\Delta t}=z_t+\Delta t\cdot v_t(z_t)\) 迭代加噪)得到的噪声并不是理想高斯,而是残留了输入的语义信息(结构、外观)。以往编辑工作把这种残留当成损害可编辑性的东西想压掉;APPLE 反其道而行——换脸恰恰要"改身份、留属性",把属性信息留在噪声里正中下怀。

关键在于用什么条件去反演。作者对比了四种配置 \((F_{id}(I),F_{att}(I))\)\((\varnothing,F_{att}(I))\)\((F_{id}(I),\varnothing)\)\((\varnothing,\varnothing)\)(全条件 / 仅属性 / 仅身份 / 无条件)。PCA 可视化显示:无条件和仅身份的反演噪声几乎和随机噪声一样没有语义结构;含属性条件的噪声则呈现清晰的人脸语义。而仅属性条件 \((\varnothing,F_{att}(I))\) 是最优解:它既把属性线索编进噪声,又不带目标身份偏置。全条件虽然也能保妆容,但残留的身份信息会限制可编辑性、干扰身份替换,导致伪影。Table 2 印证:仅属性把 FID 拉到 3.68(基线 4.20),而全条件反而恶化到 10.51。注意反演噪声因为非高斯,只能在推理用、不能进训练。

3. 学生伪三元组学习:只看干净伪标签,反超教师

有了能造高保真伪标签的教师,第三步构造伪三元组训练学生。具体地,用教师把身份为 A 的目标图 \(I^A_{tgt}\) 和另一主体 B 做换脸,得到伪标签 \(\hat{I}^{A\to B}_{tgt}\),组成三元组 \((I^A_{src}, \hat{I}^{A\to B}_{tgt}, I^A_{tgt})\)。学生从源图 \(I^A_{src}\) 取身份特征、从伪标签 \(\hat{I}^{A\to B}_{tgt}\) 取属性特征,学习重建原始目标 \(I^A_{tgt}\)——这是个显式的图像编辑目标,而非 inpainting 那种"从掩码版重建"。

这个设计带来两个收益:训练时学生吃的是干净、未掩码的高保真伪标签,而不是被破坏的掩码图,所以能更有效地学到属性保持;推理时学生直接拿原始图片格式当属性条件,不再需要任何辅助网络或复杂的属性预处理流水线,部署友好。最反直觉的是:学生(FFHQ FID 2.18)最终超过了教会它的教师(FID 3.68)——因为学生学的是"在干净条件下把属性搬过来",而不是去模仿教师被模糊/反演约束的中间过程。

损失函数 / 训练策略

教师先训 15K iter(不开身份损失),再开身份损失续训 50K iter;学生从教师权重恢复后再训 15K iter。数据用 VGGFace2-HQ(AES 阈值 5.1 过滤高质量人脸),源图按 REFace 做法先掩码再喂身份编码器。4×A6000,单卡 batch 1、梯度累积 4,等效 batch 16,分辨率 512×512。

实验关键数据

主实验

FFHQ 上各取 1000 源/目标脸生成 1000 张换脸结果。FID 衡量真实度,Pose(HopeNet)/ Expr(Deep3DFaceRecon)的 L2 距离衡量属性保持,ID Sim / ID Retrieval(ArcFace)衡量身份迁移。

模型 FID↓ ID Sim↑ ID Retr.(Top-1/5)↑ Pose↓ Expr↓
SimSwap (GAN) 18.54 0.55 94.1 / 99.0 3.11 1.73
FaceDancer (GAN) 3.80 0.51 89.7 / 96.5 2.23 0.74
DiffSwap 6.84 0.34 41.9 / 63.1 2.63 1.20
FaceAdapter 13.03 0.52 87.0 / 93.2 5.12 1.38
REFace 7.22 0.60 97.6 / 99.4 3.67 1.08
APPLE (Teacher) 3.68 0.54 90.4 / 96.7 2.07 0.70
APPLE (Student) 2.18 0.54 90.5 / 97.0 1.85 0.64

APPLE-Student 拿下全场最低 FID 和最优 Pose/Expr。CSCS(0.65)和 REFace(0.60)的 ID Sim 更高,但代价是属性保持崩坏(Pose/Expr 明显更差、肉眼可见 copy-paste 伪影)——作者论点是身份和属性本就 trade-off,过度偏向身份匹配对换脸是不可取的,APPLE 取得了更均衡的折中。

消融实验

配置 FID↓ ID Sim↑ Pose↓ Expr↓ 说明
Inpainting(基线) 11.00 0.54 3.37 1.01 传统掩码条件
+ Deblurring 4.20 0.53 2.58 0.79 换成条件去模糊
+ Deblurring + Inversion 3.68 0.54 2.07 0.70 再加属性感知反演
反演条件配置 FID↓ ID Sim↑ Pose↓ Expr↓ 说明
Baseline(不反演) 4.20 0.53 2.58 0.79 仅去模糊
+ None 6.20 0.52 2.03 0.74 无条件反演
+ Identity-only 10.02 0.53 2.57 0.83 仅身份条件
+ Attribute-only 3.68 0.54 2.07 0.70 仅属性(采用)
+ Full 10.51 0.53 3.13 0.99 全条件,残留身份致伪影

伪标签质量对比(学生用不同教师造的伪数据训练,教师指标):FaceDancer 当教师 FID 2.47 / Pose 2.07 / Expr 0.65;APPLE 当教师 FID 1.98 / Pose 1.77 / Expr 0.62——自家扩散教师造的伪三元组比直接拿现成 GAN 换脸器更好。

关键发现

  • 去模糊是最大功臣:单换 inpainting→deblurring,FID 直接从 11.00 降到 4.20,说明"保住属性线索"比"掩干净防泄漏"对换脸更重要。
  • 反演条件不是越多越好:仅属性条件最优(FID 3.68),全条件反而最差(10.51)——残留身份信息会限制可编辑性、干扰身份替换并引入伪影。这是个很反直觉的点:给的条件更全,结果更糟。
  • 学生反超教师:学生 FID 2.18 < 教师 3.68,证明"在干净伪标签上学显式编辑"比教师自身受模糊/反演约束的产出更干净。

亮点与洞察

  • 把"反演噪声不纯"从 bug 变 feature:编辑领域一直想压掉反演噪声里的残留语义,APPLE 发现换脸恰好需要"留属性",于是反过来用仅属性条件最大化这种残留——同一现象在不同任务下价值相反,思路可迁移到任何"改 A 留 B"的编辑任务。
  • 去模糊 vs 掩码的取舍很本质:掩码是"全有或全无"地切信息,模糊是"按频段"切——抹高频身份、留低频属性,正好契合换脸"换身份留外观"的需求。这种"用频域选择性破坏构造代理任务"的思路值得借鉴。
  • 教师-学生在这里不是为了蒸馏压缩,而是为了造监督信号:在没有 ground truth 的任务里,先把教师练成"高质量伪标签发生器",再让学生在干净伪标签上学,最终学生反超教师——这是一种解决"无真值监督"的通用范式。

局限与展望

  • 强依赖一串外部模型(PuLID 身份编码、face parsing、gaze estimator、3DMM、眼镜分割)来构造去模糊条件,这些上游模块的误差会传导到伪标签质量上。
  • 属性感知反演只能在推理用(噪声非高斯不能进训练),且需要逐张做反演,造伪数据集的开销不低。⚠️ 论文未给出造伪数据/反演的具体时间成本。
  • ID Sim(0.54)相比偏向身份的 REFace(0.60)/CSCS(0.65)仍有差距——虽然作者论证这是更健康的 trade-off,但对"身份必须极致还原"的场景未必够。
  • 评测主要在 FFHQ 正脸高质量人脸上,极端姿态、遮挡、低质量输入下的鲁棒性未充分验证。

相关工作与启发

  • vs 条件 inpainting(FaceAdapter / DiffSwap / REFace):它们掩掉整张脸防身份泄漏,但连属性线索一起丢;APPLE 用模糊代替掩码保住低频属性,FID 从 11 级降到个位数。
  • vs DreamID:DreamID 也用伪数据集,但靠现成 GAN 换脸器(FaceDancer)造伪三元组,对"如何造高质量伪三元组、尤其属性保持"探索有限;APPLE 把重心放在改进扩散教师本身,伪标签质量(教师 FID 1.98 vs FaceDancer 2.47)更高。
  • vs GAN 换脸(SimSwap / HiFiFace):GAN 因为自监督时能看到完整目标图,属性保持本来不差,但对抗训练带来伪影、色彩不一致和不自然纹理;APPLE 在保住属性的同时输出更干净写实(FID 2.18 远低于 SimSwap 18.54)。

评分

  • 新颖性: ⭐⭐⭐⭐ 用"去模糊代替掩码"+"反向利用反演残留语义"两个反直觉切入点解决属性保持,构思新颖。
  • 实验充分度: ⭐⭐⭐⭐ 11 个 baseline 对比 + 三组消融把每个组件的贡献拆得很清楚,但缺造伪数据的开销分析与极端场景验证。
  • 写作质量: ⭐⭐⭐⭐ 动机—设计—消融逻辑环环相扣,公式与图示清晰。
  • 价值: ⭐⭐⭐⭐ 学生推理无需属性预处理、部署友好,且"造高质量伪标签解决无真值监督"的范式可迁移。