【论文阅读】Face2Diffusion for Fast and Editable Face Personalization

ops/2024/9/23 4:52:53/

code:mapooon/Face2Diffusion: [CVPR 2024] Face2Diffusion for Fast and Editable Face Personalization https://arxiv.org/abs/2403.05094 (github.com)

论文

介绍 

目标:向 T2I 模型不知道的图像中插入特定概念(例如某人的脸),从而催生出诸如 TextualInversion 和 DreamBooth的个性化方法。这两个方法学习每个概念需要几十分钟的微调,基于此提出了Face2Diffusion (F2D),用于高可编辑性面部个性化。核心思想是从训练pipeline中删除与身份无关的信息,防止过拟合并提高编码面部的可编辑性。

特点:平衡了身份保真度和文本保真度。三个组件:1)多尺度身份编码器 (MSID) ,提供了解耦的身份特征,同时保留了多尺度信息,提高了相机姿势的多样性。 2)表情引导,将人脸表情与身份分离,提高人脸表情的可控性,可以通过文本提示和参考图像来控制人脸表情。 3)分类引导去噪正则化(CGDR) ,鼓励模型学习如何对面部进行去噪,从而增强背景的保真度。

图 1.  Face2Diffusion 满足复杂的文本提示,文本包括多个条件,同时保留输入的面部身份,无需单独的测试时间调整。 

方法

先验知识

目标:将输入面部表示为 CLIP 文本空间中的面部嵌入 S*,以生成受 StableDiffusion 上文本提示调节的目标对象。

前提:预训练的图像编码器在将面部身份表示为文本嵌入向量 S* 方面非常有用。对于一个面部编码器 fid 和一个映射网络 fmap,给定输入图像 x 的 S* 计算如下:

然后,S*被用作标记化的词,用于生成注入身份信息的图像,如图 3(b) 所示。fmap通过对每个个体或面部数据集使用重建损失进行优化,以实现即时编码,无需在测试时进行调整。

以前的方法存在三种类型的过拟合:背景、相机角度和面部表情。图2显示了[Multi-concept customization of text-to-image diffusion.]的失败案例。可以看出,由于对输入样本的过拟合,该方法往往会生成相似的背景、角度和面部表情。

图 3 可视化了 F2D。由解决过拟合问题的三个重要组件组成:

  • 3.2节多尺度身份(MSID)编码器,通过从面部识别模型 [Arcface: Additive Angular Margin Loss for Deep Face Recognition] 中移除与身份无关的信息,解耦摄像机角度和面部嵌入。
  • 3.3节表情引导,将面部表情从面部嵌入中解耦,对齐表情与文本,并增加表情的多样性。
  • 3.4节类引导去噪正则化(CGDR),强制面部嵌入的去噪方式遵循其super-class(即“一个人”)的背景去噪方式。

(a) 训练过程中,将人脸图像输入到新型多尺度身份编码器 fid 和现成的 3D 人脸重建模型 fexp 中,分别提取身份和表情特征。连接的特征通过映射网络 fmap 作为词嵌入 S* 投影到文本空间中。输入图像也由VAE的编码器E进行编码,然后添加高斯噪声ε。将去噪后的潜在特征图限制为前景中的原始特征图,并限制为背景中的类引导去噪结果。

(b) 推理过程中,表情特征被替换为无条件向量 ̃ vexp 以使生成图像的面部表情多样化。将人脸嵌入 S* 注入输入文本后,执行 StableDiffusion 的原始去噪循环,以生成由输入人脸身份和文本调节的图像。

Multi-Scale Identity Encoder

首先考虑如何在文本空间中编码面部信息。DreamIdentity 提出从浅层到深层提取多尺度特征,以提高身份相似性。然而这种直接的多尺度方法容易对输入样本过拟合,原因是浅层特征包含了大量与身份无关的低级信息(例如摄像角度、表情和背景)。这使得模型依赖于浅层特征来最小化重建损失(公式 1):从而导致编辑能力下降。图 4(a) 和 (b) 分别可视化了基于 ViT 的 ArcFace 模型在浅层(第 3 层)和最深层(第 12 层)的身份相似性分布。水平轴表示身份相似性,垂直轴表示频率。

图 4.ArcFace 和 MSID 编码器的身份相似度分布。尽管深层特征 (b) 对齐良好,但 ArcFace (a) 的浅层特征未对齐且可辨别性较低。本文的 MSID 编码器成功地从浅层 (c) 和深层 (d) 中删除与身份无关的信息,以防止过度拟合。

从 VGGFace2 数据集中为每个身份均匀采样了一个 {Anchor, Positive(相同), Negative(不同)} 三元组。浅层特征未对齐且不足以区分身份;尽管最深层特征的 AUC 为 99.97%,浅层特征的 AUC 仅为 93.99%。这一结果表明,浅层特征包含了输入图像的特定信息,导致面部个性化中的过拟合。

为解决此问题,本文提出了用于面部个性化的多尺度身份(MSID)编码器。在 ArcFace 面部识别模型的预训练中,不仅鼓励最深层,还鼓励浅层来区分身份。将拼接的多尺度身份向量表示为,给定一个图像及其类别标签 y,将多尺度损失 Lm 表述为原始的 ArcFace 损失:

Wk 是权重矩阵 W 的第 k 列,m 和 s 分别是 ArcFace 中的边距和尺度。如图 4(c) 和 (d) 所示,我编码器生成的多尺度特征在浅层和深层都对齐良好且具有辨别力;浅层特征的 AUC 从 93.99% 提升到 99.46%。解耦的多尺度身份特征在提供强身份信息的同时,防止了过拟合。与之前图像分类任务中的工作 [38] 只关注最深的两层不同,我们训练了多个层级,重点关注的是浅层到深层的多尺度特征解耦,而不是仅仅分类时最深特征的辨别能力。

  • 面部识别模型能够提供有用的身份表示,但浅层特征中包含了与身份无关的信息(如相机姿态、表情、背景),这会导致模型过拟合,依赖这些浅层特征来降低重建误差。
  • 过拟合问题:直接使用浅层特征的多尺度方法虽然能够提取更多的信息,但容易对输入图像的具体信息(如背景)过拟合,导致模型的编辑能力下降,即生成的面部图像缺乏灵活性。

  • 身份相似性分析:实验发现浅层特征的身份相似性不足以区分不同身份,且浅层特征的 AUC 只有 93.99%,而深层特征的 AUC 为 99.97%。这表明浅层特征包含了太多与身份无关的信息,导致过拟合问题的出现。

  • 多尺度身份编码器(MSID):通过结合浅层和深层的特征,在模型的训练过程中对各层的特征进行解耦,以提高模型的泛化性和编辑能力。

  • 多尺度损失:通过改进后的损失函数(公式 3),不仅最深层的特征被用于区分身份,浅层特征也得到了优化,保证在多个层级上提取到有用的身份信息。

  • 结果改进:实验结果表明,改进后的多尺度方法使得浅层特征的 AUC 提升至 99.46%,大幅减少了模型对浅层无关特征的依赖,并且增强了面部个性化中的身份表示能力。

Expression Guidance

尽管 MSID 编码器在保留身份相似性的同时极大地提高了文本保真度,但由于对输入样本的过度拟合,仍然很难控制面部表情。为了解决这个问题提出表情指导,将面部表情与身份分开。我们利用 3D 人脸重建模型 [Accurate 3D Face Reconstruction with Weakly-Supervised Learning: From Single Image to Image Set.](表示为 fexp)来提取表情特征。对于输入人脸图像 x,只需在映射网络 fmap 之前连接 vexp = fexp(x) 和 vid = fid(x) 即可注入表情信息。表达引导特征向量 S* 计算:

以 0.2 的概率丢弃 vexp 并输入一个替代的可学习向量 ̃ vexp 以进行无条件生成。训练后,用学习到的无条件向量~vexp 生成与各种表达相关提示一致的目标主题。

Class-Guided Denoising Regularization

对训练样本的过拟合会导致生成的图像无法与背景中的文本条件保持一致。延迟主体调节(DSC)[60]通过用其超级标识符替换标识符 S* 来解决这个问题在早期的去噪步骤中使用类词(例如“一个人”),并在推理过程中从去噪循环的中间用 S* 切换超类词。然而,由于一些人脸身份出现在早期去噪步骤中,DSC 降低了生成图像与输入人脸的身份相似度。为了在不降低身份的情况下从人脸嵌入中分离出背景信息,提出了类引导去噪正则化(CGDR)。 CGDR 背后的重要观察是,类别词“a person”与特定背景很好地分离,因为图 2 中生成了各种类别词。CGDR 强制面部嵌入的去噪方式遵循背景中类别提示的去噪方式。首先,我们在模型中输入身份注入提示 p =“A photo of S*”和类提示 pc =“A photo of a person”,以预测相同噪声潜在 zt 的噪声:

然后,我们将原始预测噪声 ˆ ε 约束为背景中的 ˆ εc 和前景中实际添加的噪声 ε ,如下所示:

 M 是人脸解析模型 [61] 的分割掩模,用于将身份区域与其他区域分开, ⊙ 表示像素级乘法。通过这个单一目标函数,F2D 学习对人脸身份进行编码,从而大大减轻对输入图像背景的过度拟合。训练策略保持了 T2I 模型的原始权重,因为在 F2D 训练期间仅优化 fmap。因此不会遇到语言漂移和灾难性遗忘。

实验

多尺度身份编码器
我们预训练了包含 12 层 Transformer 编码器的 ViT 模型 [15],并在 MS1M 数据集 [19] 上训练了 30 个 epoch。批次大小设置为 1024,学习率为 10−3。我们选择深度集 {3, 6, 9, 12} 进行多尺度特征提取。

Face2Diffusion
我们采用了两词嵌入方法 [11, 63],其中 S∗=[S1∗,S2∗] 由两个独立的映射网络 fmap1fmap1​ 和 fmap2fmap2​ 预测。每个映射网络 fmapifmapi​ 由两层多层感知器(MLP)组成,每层包含一个线性层、dropout [53] 和 leakyReLU [35],接着是一个额外的线性层,将特征投影到文本空间中。我们在 FFHQ 数据集 [25] 上训练模型,共进行了 100,000 次迭代。需要注意的是,只有 fmap1fmap1​ 和 fmap2fmap2​ 被更新,其他网络被冻结。仅使用水平翻转作为数据增强。批次大小设置为 32,学习率为 10−5。

设置

评估数据
采用了 FaceForensics++ 数据集 [45]。随机选择了 100 个视频,并从每个视频中提取一帧。图像按照 FFHQ 数据集 [25] 的方法对齐和裁剪。我们还收集了 40 个以人为中心的提示词,涵盖了多种场景,如职业、活动、表情和位置。提示词列表包含在补充材料中。我们生成了所有人脸图像和提示词的组合,总共 4000 个场景。按照之前的工作 [9, 46],我们为每个 {图像, 提示词} 组合生成四张图像,以进行稳健的评估,并报告所有样本的平均分数。

对比方法
我们将我们的方法与九种最先进的个性化方法进行比较,包括六种主体驱动方法:Textual Inversion [17]、DreamBooth [46]、CustomDiffusion [30]、Perfusion [54]、E4T [18] 和 CelebBasis [63],以及三种与主体无关的方法:FastComposer [60]、ELITE [59] 和 DreamIdentity [11]。对于包括 Face2Diffusion 在内的所有方法,我们使用 StableDiffusion-v1.4 [43],采用 30 个去噪步骤的 Euler ancestral 离散调度器 [26],以及指导系数为 7.0 的无分类器指导 [22] 进行公平比较。更多细节请参见补充材料。

评估指标

我们考虑了以下三个评估指标:

  1. 身份相似性 表示生成的图像在面部身份方面与输入图像的相似程度。我们采用了 AdaFace [27]、SphereFace [33] 和 FaceNet [48],计算输入图像与生成图像的特征余弦相似度。对于无法检测到面部的图像,我们赋值为 0.0。

  2. 文本相似性 表示生成的图像与除面部身份外的文本提示的一致性。我们采用 CLIP 分数 [20]、方向性 CLIP (dCLIP) 分数 [16] 和 SigLIP [64] 来计算图像与文本的相似性。我们使用参考提示词“一个人的照片”以及由“S∗S∗ 的照片”生成的参考图像来进行 dCLIP 计算。

  3. 因为面部个性化的目标是同时满足“注入面部身份”和“与文本提示对齐”,因此需要同时评估图像在这两方面的性能。为此,我们引入了 Identity × Text 分数,反映面部个性化的总体质量。我们计算了上述六个指标的调和平均 (hMean) 和几何平均 (gMean)。

 

复现


http://www.ppmy.cn/ops/113565.html

相关文章

无法创建新的堆栈防护界面

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&am…

基于STM32MP157与OpenCV的嵌入式Linux人脸识别系统开发设计流程

一、项目概述 1.1 项目目标和用途 本项目旨在基于嵌入式STM32MP157开发板,搭建一个系统软硬件开发平台,以Linux操作系统为基础,研发一个完整的人脸识别系统。该系统可以用于安防监控、考勤管理等应用场景,实现对人脸的实时检测与…

在 Android 中,自定义 View 的绘制流程

目录 1. 测量阶段 (onMeasure()) 2. 布局阶段 (onLayout()) 3. 绘制阶段 (onDraw()) 总体绘制流程 注意事项 示例总结 参考资料 在 Android 中,自定义 View 的绘制流程主要包括测量、布局、绘制三个关键步骤。具体来说,自定义 View 的绘制涉及重写…

C++析构函数为什么要为虚函数?

目录 1.引言 2.原因 3.示例分析 4.总结 1.引言 在C中,将析构函数声明为虚函数(virtual destructor)的主要原因是为了支持多态删除(polymorphism with deletion)。多态允许通过基类指针或引用来操作派生类对象&…

LabVIEW机械产品几何精度质检系统

随着制造业的发展,对产品质量的要求越来越高,机械产品的几何精度成为衡量其品质的重要指标。为了提高检测效率和精度,开发了一套基于LabVIEW的几何精度质检系统,该系统不仅可以自动化地进行几何尺寸的测量,而且能实时分…

【Kubernetes】常见面试题汇总(二十一)

目录 65.简述 Kubernetes 中,如何使用 EFK 实现日志的统一管理? 66.简述 Kubernetes 如何进行优雅的节点关机维护? 67.简述 Kubernetes 集群联邦? 65.简述 Kubernetes 中,如何使用 EFK 实现日志的统一管理&#xff1…

自动登录 RPA 的进阶:滑块验证的巧妙实现

​在RPA的众多应用场景的探索中,自动登录是一个至关重要的环节,它为后续的自动化操作奠定了基础。然而,当我们面对滑块验证这一常见的挑战时,常常会感到困惑和无从下手。本文就来分享自动登录RPA的进阶----滑块验证如何实现。 在…

网站SEO,该如何规范目标网站URL配置!

随着互联网技术的飞速发展,搜索引擎优化(SEO)在网站建设和运营中的重要性日益凸显。优化目标网站的URL配置,作为SEO策略中的关键环节,对于提升网站在搜索引擎中的排名和曝光度具有至关重要的作用。大连蝙蝠侠科技将从U…