DreamID: High-Fidelity and Fast diffusion-based Face Swapping via Triplet ID Group Learning
ByteDance
一句话总结
DreamID 通过构造 Triplet ID Group 数据为换脸任务建立显式监督,并借助单步扩散模型 SD Turbo 实现高效的像素级端到端训练,在 \(512\times512\) 分辨率下仅需 0.6 秒即可生成高保真、高身份相似度且属性保持良好的换脸结果。
研究背景
换脸任务的目标是把源图像的身份信息迁移到目标图像上,同时保留目标图像的属性信息(背景、光照、表情、头部姿态、妆容等)。这一任务长期面临两条技术路线的困境:
- 基于 GAN 的方法训练不稳定、需要大量超参搜索,且在大角度、面部边缘等场景容易产生低保真伪影。
- 基于扩散模型的方法虽然提升了生成质量,但换脸任务的核心难点是缺乏真实的 Ground Truth——对于给定的 源图像与目标图像 组合,很难找到一张”真实”的换脸结果图。
因此以往工作大多依赖隐式监督:当源与目标为不同身份时用源图像算 ID 损失,当源与目标相同时用目标图像算重建损失。这种隐式监督存在偏差、容易收敛到不理想状态,难以同时获得高身份相似度和细粒度属性(光照、妆容)保持。DreamID 正是针对”缺乏显式监督”这一根因提出解决方案。
方法
整体框架
DreamID 由两大部分构成:一是 Triplet ID Group 显式监督训练框架,二是包含 SwapNet、FaceNet、ID Adapter 三个模块的改进型扩散模型架构。核心思路是:用一个 GAN 换脸代理模型伪造出”配对数据”,从而把无监督的换脸问题转化为有明确 Ground Truth 的端到端监督问题,再借助单步扩散模型 SD Turbo 让像素级损失得以高效计算。
flowchart TD
A1["源 A1(身份 A)"] --> Proxy
A2["目标 A2(身份 A,同 A1 同人)"] --> Proxy
B["图像 B(身份 B)"] --> Proxy["GAN 换脸代理模型"]
Proxy --> PT["伪目标 B̃(B 的身份 + A2 的属性)"]
A1 --> Swap["SwapNet(单步 SD Turbo)"]
PT --> Swap
A1 --> Face["FaceNet:像素级 ID 特征"]
A1 --> Adapter["ID Adapter:语义级 ID 特征"]
Face --> Swap
Adapter --> Swap
Swap --> Gen["生成图 Ã"]
Gen --> IDLoss["ID 损失 与 A1 对比"]
Gen --> RecLoss["重建损失 与 A2 对比(GT)"]
关键设计
-
Triplet ID Group 构造:取同一身份的两张图 \(A_1\)、\(A_2\) 和另一身份图 \(B\),用 GAN 代理模型把 \(B\) 的身份换到 \(A_2\) 上得到伪目标 \(\tilde{B}\)(身份来自 \(B\),属性来自 \(A_2\))。于是三元组 \((A_1, \tilde{B}, A_2)\) 中,当 \(A_1\) 作源、\(\tilde{B}\) 作目标时,理论 Ground Truth 恰好是真实图 \(A_2\)。学习目标是真实图 \(A_2\) 而非代理伪造的 \(\tilde{B}\),因此监督信号的上界很高。
-
单步扩散 + 像素级损失:扩散模型的迭代去噪特性使得 ID 损失、重建损失需要跨多步累积梯度,代价高昂。作者用蒸馏得到的 SD Turbo 把推理压缩到单步(训练时 \(t=999\)),从而可以高效施加图像空间损失。总损失为 \(\mathcal{L}=\lambda_{id}\mathcal{L}_{id}+\lambda_{DM}\mathcal{L}_{DM}+\lambda_{rec}\mathcal{L}_{rec}\),其中 ID 损失用余弦距离 \(\mathcal{L}_{id}=1-\cos(e_{A_1}, e_{\tilde{A}})\),重建损失用 L2 距离。
-
三模块架构:SwapNet 是从 SD Turbo 初始化的基础 UNet,输入拼接了由 3DMM 重组得到的面部关键点(源的身份系数 + 目标的表情姿态系数)与目标图 latent,负责主换脸流程;FaceNet 继承 SwapNet 权重,从源图像直接抽取像素级 ID 特征,通过自注意力与 SwapNet 特征拼接融合;ID Adapter 用人脸 ID 编码器抽取语义级 ID 特征,经线性层映射后通过交叉注意力注入 SwapNet。FaceNet 擅长像素级特征但易出现”复制粘贴”伪影,ID Adapter 特征弱但更本质,两者互补。
-
特征级可控扩展:通过显式修改 Triplet ID Group 数据即可微调保留特定属性。例如筛选 \(A_1\)、\(A_2\) 眼镜一致的数据并用后处理模型去掉伪目标眼镜,可强制模型保留用户眼镜;类似地用脸型后处理模型可实现脸型迁移。
实验结果
在 FFHQ 测试集(1000 组源/目标)上与多种 SOTA 方法的定量对比如下,DreamID 在所有指标上均领先:
| Model | FID↓ | ID Similarity↑ | ID Retrieval (Top-1/Top-5)↑ | Pose↓ | Expression↓ |
|---|---|---|---|---|---|
| Inswapper | 8.03 | 0.65 | 99.20% / 99.90% | 2.74 | 1.51 |
| SimSwap | 19.77 | 0.55 | 95.24% / 97.09% | 3.21 | 1.742 |
| CSCS | 10.17 | 0.68 | 99.10% / 99.80% | 3.81 | 1.493 |
| FaceDancer | 4.91 | 0.48 | 92.70% / 97.20% | 2.32 | 0.854 |
| DiffFace | 8.66 | 0.51 | 93.40% / 97.60% | 3.78 | 1.280 |
| DiffSwap | 8.65 | 0.32 | 66.50% / 46.17% | 2.84 | 1.084 |
| FaceAdapter | 9.39 | 0.52 | 93.50% / 97.60% | 4.15 | 1.188 |
| REFace | 5.58 | 0.57 | 96.50% / 99.20% | 3.77 | 1.040 |
| DreamID | 4.69 | 0.71 | 99.9% / 100% | 2.20 | 0.789 |
推理速度方面,DreamID 单次仅需 0.6 秒,远快于其他扩散类方法(DiffFace 25.8 秒、DiffSwap 7.82 秒、FaceAdapter 3.42 秒、REFace 3.75 秒)。消融实验显示:去掉 FaceNet 会显著降低身份相似度(0.71→0.63),去掉 ID 损失会使相似度崩塌(0.71→0.32),去掉重建损失则会因扩散模型的复制粘贴倾向而产生不合理输出,说明各模块与各损失彼此互补、缺一不可。
亮点与局限
亮点:
- 用 Triplet ID Group 把无 Ground Truth 的换脸问题转化为有显式配对监督的问题,是一个简单而有效的新范式,以真实图作 GT 甚至能突破代理模型的属性保持上界(DreamID 的 Pose/Expression 2.20/0.789 优于代理模型 FaceDancer 的 2.32/0.854)。
- 借助 SD Turbo 单步推理,在获得像素级损失训练能力的同时把速度提升到 0.6 秒,兼顾质量与效率。
- 在妆容保持、大角度、风格化、复杂光照、遮挡等挑战场景表现突出,甚至能泛化到素描、油画、水彩等非真人域。
局限:
- 方法依赖 GAN 换脸代理模型来构造伪目标,代理模型的属性保持能力会影响训练数据质量(作者发现需选属性保持好的代理,最终选 FaceDancer)。
- 特征级可控(眼镜、脸型)依赖额外的后处理模型和针对性的数据筛选与微调,并非端到端自动完成。
- 论文未深入讨论换脸技术潜在的伪造滥用风险与相应防范。
延伸思考
DreamID 最值得借鉴的是”用代理模型伪造配对数据以获得显式监督”这一思路——它把一个本质上没有真值的生成任务,通过巧妙的数据构造转化为可端到端监督的回归问题,这种范式或可迁移到其他缺乏 Ground Truth 的图像编辑任务(如重打光、表情迁移、虚拟试妆)。另一方面,单步扩散模型让像素级损失重新变得可用,这提示在追求可控生成时,加速采样不仅是推理优化手段,更能反过来改变训练目标的设计空间。同时,换脸技术的高保真与易用也带来更强的伪造滥用隐忧,配套的检测与溯源机制值得同步研究。