文章目录
为了提高参考图像生成个性化人像的精度和多样性,众多的定制方法应运而生,满足了用户对高质量定制图像的需求。这些个性化方法根据推理过程中是否发生微调进行分类,从而产生两种不同的类型:fine-tuning和tuning-free。
fine-tuning的方法:此类别包括 Textual Inversion、HyperDreambooth、LoRA、CustomDiffusion等方法。用户可以通过提供一组目标ID图像进行后期训练来实现个性化生成。尽管取得了值得称赞的高保真度结果,但生成的输出的质量取决于手动收集的数据的质量。此外,手动收集定制数据进行微调会带来劳动密集型和耗时的问题,限制了其实用性。
tuning-free的方法:这些模型通过利用图像作为条件输入或操纵图像触发词来增强全局 ID 一致性,无需推理时的微调。
目前tuning-free的方法在以下几个方面取得了一些进展:
- 对肖像的保真度;
- 减少推理的图片,或仅输入单张图片;
- 保持文本的可编辑性,改变风格等;
- 降低推理steps或者时间;
- 防止生成图像与用户上传的照片极度相似,需要去除原始照片中的背景等无关信息。
以下将对近期这种方式下保持ID一致性的8篇代表性论文进行简要介绍。(备注:为了更好地理解架构图,对原文中给出的架构图增加了一些个人的注释)
1. IP-Adapter-FaceID-Protrait
项目链接:https://huggingface.co/h94/IP-Adapter-FaceID
论文链接:IP-Adapter: Text Compatible Image Prompt Adapter for Text-to-Image Diffusion Models
研究目的:文本无法提供充足的信息来表达复杂的场景或概念,在个性化人像任务中,无法仅从文本来获取面部特征,图像能够比文字能表达更多的面部内容。
研究思路:训练预训练扩散模型中交叉注意力层的key 和 value 线性层的权重以适应文本特征。因此,将图像特征和文本特征合并到交叉注意力层中只能完成图像特征与文本特征的对齐,但这可能会丢失一些图像特定的信息。因此,对于unet中的每个交叉注意力层,针对图像特征添加一个额外的交叉注意力层来进行训练。
架构图:
创新点:
1.IP-Adapter在原先的文生图模型的基础上,在U-Net网络的每个注意力块中添加了一个新的交叉注意力层,然后利用一个预训练的图像编码器对输入的图像提示提取图像特征,然后输入到新的交叉注意力层当中,通过论文所提出的解耦交叉注意力机制来实现两个交叉注意力输出的结合。文本特征和图像特征在计算交叉注意力时,所用得查询矩阵 Q 是一致的,因此实际上只需要训练新的交叉注意力层的KV 即可。
2.这里在IP-Adapter的基础上,将原先预训练的图像编码器 CLIP image encoder 增加了 face recognition (FR) model 来提取高水平的face ID embedding。
效果图:
2. DreamIdentity
项目链接:https://dreamidentity.github.io/
论文链接:DreamIdentity: Improved Editability for Efficient Face-identity Preserved Image Generation
研究目的:tuning-free、id保真度、保持文生图模型的可编辑性。
研究思路:仅仅使用CLIP的最后一层特征很难保持身份信息,因为它主要包含高级语义,缺乏详细的面部描述。另一方面,所有并行工作都仅采用普通重建目标来学习text embedding,这损害了输入面部的可编辑性。因此提取多尺度特征来表示face embedding,并增加L2正则化,仅在特征空间中实现高度的身份保留控制,而不会因特征注入而牺牲预训练的 T2I 模型的可编辑性。。
架构图:
创新点:
- M 2 M^2 M2 ID encoder:an ID-aware multi-scale feature with multi-embedding projection,使用大规模人脸识别数据集上预训练的ViT backbone,提取的多尺度特征被投影到multi-word embedding,相当于 S ∗ S* S∗ 与这个人物主体绑定,图像特征转换成文本特征。
- self-augmented editability learning:生成高质量数据集。
效果图:
3. PhotoVerse
项目链接:https://photoverse2d.github.io/
论文链接:PhotoVerse: Tuning-Free Image Customization with Text-to-Image Diffusion Models
研究目的:减少推理时间,减少推理的照片,人像保真度和推理的可编辑性。
研究思路:更加有效的从text embedding和image embedding中提取身份信息,并引入id loss来进一步确保身份一致性。
架构图:
创新点:
1.DreamIdentity 只对图像端做了处理,PhotoVerse 相当于做了扩展,它提出a dual-branch conditioning mechanism来同时对文本和图像做处理,有效地控制了图像生成过程。
2.提出了新的face identity loss,增强了在训练过程中的身份保留。
3.消除了测试时间调优的需要,只需要目标身份的单张面部照片,显著降低了图像生成的资源成本。
实验结果:
4. PhotoMaker
项目链接:PhotoMaker (photo-maker.github.io)
代码链接:GitHub - TencentARC/PhotoMaker: PhotoMaker
研究目标:个性化生成、高效、保真、灵活的文本控制,能够混合输入多个ID。
研究思路:在训练过程中,目标图像和输入ID图像都来自同一图像。训练后的模型很容易记住图像中与ID无关的特征,例如表情和角度,这导致可编辑性较差,而且仅依靠单个ID图像进行定制,容易导致ID保真度不令人满意。因此,本文确保ID image和target image在视点、面部表情等上表现出变化,使得模型不记忆与ID无关的信息; 在推理过程中为模型提供同一ID的多个不同图像,以更全面、准确地表示定制ID的特征。
架构图:
创新点:
1.PhotoMaker在训练过程中,将相同 ID 的多个图像打包为一个批次作为图像编码器的输入后,可以通过单次前向传递获得 stacked ID embedding,与基于调整的方法相比,显着提高了效率。首先将原始text embedding
t
∈
R
L
×
D
t \in \mathbb{R}^{L \times D}
t∈RL×D 中 class word 对应位置的特征向量替换为stacked id embedding
s
∗
∈
R
N
×
D
s^* \in \mathbb{R}^{N\times D}
s∗∈RN×D,得到更新text embedding
t
∗
∈
R
(
L
+
N
−
1
)
×
D
t^* \in \mathbb{R}^{(L+N−1) \times D}
t∗∈R(L+N−1)×D,cross-attention 可以表示为:
{
Q
=
W
Q
⋅
ϕ
(
z
t
)
;
K
=
W
K
⋅
t
∗
;
V
=
W
V
⋅
t
∗
,
A
t
t
e
n
t
i
o
n
(
Q
,
K
,
V
)
=
s
o
f
t
m
a
x
(
Q
K
T
d
)
⋅
V
.
\left\{\begin{matrix} \mathrm{Q} = \mathrm{W}_Q \cdot \phi (z_t); \mathrm{K} = \mathrm{W}_K \cdot t^*; \mathrm{V} = \mathrm{W}_V \cdot t^*, \\ \mathrm{Attention}(\mathrm{Q},\mathrm{K},\mathrm{V}) = \mathrm{softmax}(\frac{\mathrm{Q}\mathrm{K}^T }{\sqrt{d} } )\cdot \mathrm{V} . \end{matrix}\right.
{Q=WQ⋅ϕ(zt);K=WK⋅t∗;V=WV⋅t∗,Attention(Q,K,V)=softmax(dQKT)⋅V.
2.构建了ID-oriented data construction pipeline。
实验结果:
5. Instantid
项目链接:https://instantid.github.io/
代码链接:GitHub - InstantID/InstantID: InstantID : Zero-shot Identity-Preserving Generation in Seconds 🔥
研究目标:只需要一次前向推理,无需微调,单张图像,可插拔,保持文本编辑能力。
架构图:
创新点:
1.可插拔,适用于预训练的文生图模型,很好地弥合保真度和效率之间的差距。
2.CLIP image encoder 在于其对弱对齐数据的训练,这意味着其编码特征主要捕获广泛的、模糊的语义信息。无法满足需要精确ID保持的任务。因此 Instantid 使用了ID embedding作为image prompt。使用类似于ip-adpater的解耦交叉注意力机制,通过额外的交叉注意层嵌入图像特征,同时保持其他参数不变。
给定query features
Z
Z
Z 和 image features
c
i
c_i
ci,
Q
=
Z
W
q
,
K
i
=
c
i
W
k
i
,
V
i
=
c
i
W
v
i
Q = ZW_q, K^i = c_i W_k^i, V^i=c_i W^i_v
Q=ZWq,Ki=ciWki,Vi=ciWvi,只有
W
k
i
W_k^i
Wki 和
W
v
i
W_v^i
Wvi 是可训练的权重。
3.对ControlNet的改进:
- 使用五个面部关键点作为条件输入。过多详细的面部关键点会过度强调冗余的面部信息,无法保持可编辑性,但是没有任何空间限制的情况下,人脸的自由度过大,无法产生令人满意的结果。
- 原先的controlnet是将文本作为交叉注意力层的条件,这里只将ID embedding 作为 ControlNet 中交叉注意力层的条件。从而使网络只关注与身份相关的表示。
4.在训练过程中,只优化 Image Adapter 和 IdentityNet。
实验结果:
6. Face Adapter
项目链接:https://faceadapter.github.io/face-adapter.github.io/
代码链接:https://github.com/FaceAdapter/Face-Adapter?tab=readme-ov-file
研究目的:
1)完全解耦 ID、target 架构、属性控制,实现“one-model-two-tasks”。
2)解决被忽视的问题,比如背景保持、照明等。
3)充分利用pre-trained diffusion model,简单有效,即插即用。
架构图:
创新点:
1.Spatial Condition Generator module (SCG):自动预测3D先验landmarks和变化前景区域的mask。 包含两个子模块:3D Landmark Projector 和 Adapting Area Predictor。
- 3D Landmark Projector:利用3D面部重建方法 D3DFR 来提取source and target faces的 id、expression、pose系数。随后,将source的id系数和target的expression、pose系数重新组合,重建新的3D人脸,并将其投影以获得相应的landmarks。
- Adapting Area Predictor:
- 在训练期间,需要提供空间条件下的源/目标图像的背景来解决生成背景不一致的问题。
- Adapting Area Predictor:轻量的适应区域预测器,自动预测模型需要生成的区域(适应区域),同时保持其余区域不变。
- 训练了一个 mask predictor φ R \varphi_{R} φR 接受 来自3D Landmark projector的源图像 I S I^S IS 和 motion landmarks I l m k I_{lmk} Ilmk 以预测 adapting area mask M r f f g M_{rf}^{fg} Mrffg. Mask ground truth M r e g t M_{re}^{gt} Mregt 是通过将源和目标的头部区域(包括头发、面部和颈部)合并并随后向外扩张而生成的。使用预训练的face parsing model来获得头部区域。
2.Identity Encoder
- 高水平的face embedding能够确保更加鲁棒的身份保护。
- pre-trained face recognition model E i d E_{id} Eid 。
- 采用三层Transformer decoder ϕ d e c \phi_{dec} ϕdec 将 face embedding f i d f_{id} fid 投影到预训练扩散模型的固定文本语义空间中,获得 Identity tokens。 N = 77 N=77 N=77,来确保预训练的扩散模型的UNet不需要任何微调来适应face embedding。
3.Attribute Controller 包含两个子模块:Spatial Control 和 Attribute Template。
-
Spatial Control.unet-controlnet的copy,利用给定的身份和其他缺失的属性内容,遵循所提供的空间控制。
I S p S = I S ∗ ( 1 − M R e f g + I l m k T , f o r f a c e r e e n a c t m e n t , ) I_{Sp}^S = I^S * (1 - M_{Re}^{fg} + I_{lmk}^T, \mathrm{for \ face \ reenactment,}) ISpS=IS∗(1−MRefg+IlmkT,for face reenactment,)
I S p T = I T ∗ ( 1 − M S w f g + I l m k T , f o r f a c e s w a p p i n g . ) I_{Sp}^T = I^T * (1 - M_{Sw}^{fg} + I_{lmk}^T, \mathrm{for \ face \ swapping.}) ISpT=IT∗(1−MSwfg+IlmkT,for face swapping.) -
Attribute Template. 补充了缺失的属性,包括照明、背景的一部分和头发。这两个任务都可以被视为利用提供的身份和缺少的属性内容执行条件修复的过程。
-
两个不同的任务使用不同的Spatial Control和Attribute Template。
效果图:
7. PuLID
论文链接:PuLID: Pure and Lightning ID Customization via Contrastive Alignment
代码链接:https://github.com/ToTheBeginning/PuLID
研究目的:希望 tuning-free + 更高保真度和灵活性的一致性生成模型。重点关注减少 id-embedding 的嵌入对于原始模型的影响。
架构图:
创新点:
1.上半部分ID encoder:
-
传统的扩散训练过程。
-
采用了两个常用的主干网络:人脸识别模型(ArcFace)和CLIP image encoder(ViT),
-
将2个主干网络最后一层的特征向量串联起来(对于CLIP image encoder,使用CLS token的特征),并使用一个多层感知器(MLP)将它们映射成5个 tokens 作为全局ID特征。
-
此外,遵循ELITE的方法,使用MLP将CLIP的多层特征映射到另外5个tokens,作为局部ID特征。值得注意的是,我们的方法并不限制于特定的编码器。
2.下半部分Lighting T2I Branch:
-
Uncontaminated ID Insertion via Contrastive Alignment
- 虽然在传统的扩散训练期间很难确定ID的插入是否扰乱了原始模型的行为,但在测试设置下这种判断相对容易得多。因此文章中提出了一种直观的解决方案,即在常规的扩散去噪训练分支之外引入一个 Lightning T2I 训练分支。与测试设置类似,Lightning T2I分支从纯噪声开始,并通过完整的迭代去噪步骤直到达到x0。并且需要的迭代次数是有限且可控的。
- 具体而言,使用SDXL-Lightning ,搭配4个去噪步骤。在每次训练迭代中,从 prompt 列表中随机选择一个提示语作为Lightning T2I分支的文本条件。然后,我们构造对比路径,这些路径从相同的提示语和初始潜在状态开始。一个路径仅由提示语条件化,而另一个路径则同时采用ID和提示语作为条件。通过在这两条路径上语义地对齐UNET特征,模型将学习如何在不影响原始模型行为的情况下嵌入ID。
- 核心通过构建对齐损失来解决:对齐损失由两个组成部分构成:语义对齐损失semantic alignment loss( L a l i g n − s e m \mathcal{L}_\mathbf{align-sem} Lalign−sem)和 layout alignment loss( L a l i g n − l a y o u t \mathcal{L}_\mathbf{align-layout} Lalign−layout)。
- 语义对齐损失:使用文本特征
K
K
K 来查询UNET特征
Q
Q
Q。对于
K
K
K 中的每个token,它将计算与
Q
Q
Q的相关性,并进一步基于相关性矩阵聚合
Q
Q
Q。这可以被解释为UNET特征对提示的反应:如果ID的嵌入不影响原始模型的行为,那么UNET特征对提示的反应在两条路径上应该是相似的。因此,语义对齐损失
L
a
l
i
g
n
−
s
e
m
\mathcal{L}_\mathbf{align-sem}
Lalign−sem 为:
L a l i g n − s e m = ∥ S o f t m a x ( K Q t i d T d ) Q t i d − S o f t m a x ( K Q t T d ) Q t ∥ 2 . \mathcal{L} _{\mathrm{align-sem} } = \left \| \mathrm{Softmax}(\frac{KQ^T_{tid}}{\sqrt{d} } ) Q_{tid} - \mathrm{Softmax}(\frac{KQ^T_{t}}{\sqrt{d} } ) Q_{t} \right \| _2. Lalign−sem= Softmax(dKQtidT)Qtid−Softmax(dKQtT)Qt 2. - 布局对齐损失:
L
a
l
i
g
n
−
s
e
m
\mathcal{L}_\mathbf{align-sem}
Lalign−sem 的引入显著减轻了ID信息污染模型行为的问题。然而,它不能保证布局的一致性,因此我们增加了一个布局对齐损失
L
a
l
i
g
n
−
l
a
y
o
u
t
\mathcal{L}_\mathbf{align-layout}
Lalign−layout,其定义如下:
L a l i g n − l a y o u t = ∥ Q t i d − Q t ∥ 2 , \mathcal{L} _{\mathrm{align-layout} } = \left \| Q_{tid} - Q_t \right \| _2, Lalign−layout=∥Qtid−Qt∥2, - 完整的对齐损失:
L a l i g n = λ a l i g n − s e m L a l i g n − s e m + λ a l i g n − l a y o u t L a l i g n − l a y o u t . \mathcal{L}_{\mathrm{align} } = \lambda _{\mathrm{align-sem} } \mathcal{L}_{\mathrm{align-sem} } + \lambda _{\mathrm{align-layout} } \mathcal{L}_{\mathrm{align-layout}} . Lalign=λalign−semLalign−sem+λalign−layoutLalign−layout.
-
更准确的ID保真损失函数:
- 确保ID保真度的方法之一是在训练过程中引入ID损失。然而,这些方法直接在扩散训练过程的第 t t t 个时间步预测 x 0 x_0 x0,仅使用单步处理。这将产生一个噪声多且有缺陷的预测 x 0 x_0 x0 ,随后导致ID损失计算的不准确。
- 首先,我们可以在4个步骤内从纯噪声中快速生成一个以ID为条件的准确
x
0
x_0
x0 。因此,在这个非常接近真实世界数据分布的
x
0
x_0
x0 上计算ID损失显然更加精确。其次,在与测试阶段一致的设置中优化ID损失更为直接和有效。ID损失
L
i
d
L_id
Lid 定义为:
L i d = C o s S i m ( ϕ ( C i d ) , ϕ ( L − T 2 I ( x T , C i d , C t x t ) ) ) . \mathcal{L}_{\mathrm{id} } = CosSim(\phi (C_{id}), \phi (\mathrm{L-T2I}(x_T, C_{id}, C_{txt}) )). Lid=CosSim(ϕ(Cid),ϕ(L−T2I(xT,Cid,Ctxt))). - 最终完整的损失函数是:
L i d = L d i f f + L a l i g n + λ i d L i d . \mathcal{L}_{\mathrm{id} } = \mathcal{L}_{\mathrm{diff} } + \mathcal{L}_ {\mathrm{align} }+ \lambda _{\mathrm{id} } \mathcal{L}_{\mathrm{id}} . Lid=Ldiff+Lalign+λidLid. - 在训练过程中,只有新引入的 MLP 和交叉注意力层中的可学习线性层 K i d K_{id} Kid 和 V i d V_{id} Vid 才针对此目标进行优化,其余部分保持冻结。
效果图:
8. ConsistentID
项目链接:https://ssugarwh.github.io/consistentid.github.io/
研究目的:仅仅使用单个面部图像,保持身份一致性,确保保真度,确保 fine-grained 的面部信息。
架构图:
创新点:
1.a multimodal facical prompt generator:包括细粒度多模态特征提取器fine-grained multimodal feature extractor和面部ID特征提取器,能够使用多条件生成更详细的面部ID特征,结合从多模态大语言中提取的面部图像、面部区域及其相应的文本描述模型 LLaVA1.5。利用从初始模块获得的面部 ID 特征。
2.ID-preservation network:设计了一个通过面部注意力定位策略优化的 ID 保存网络,从而实现更准确的 ID 保存和更生动的面部生成。该机制通过防止不同面部区域的 ID 信息混合来确保每个面部区域内 ID 的一致性。
L
n
o
i
s
e
=
E
z
t
,
t
,
C
f
,
C
l
,
ϵ
∼
N
(
0
,
1
)
[
∥
ϵ
−
ϵ
θ
(
z
t
,
t
,
C
f
,
C
i
)
∥
2
2
]
\mathcal{L}_{noise} = \mathbb{E}_{z_t,t,C_f,C_l, \epsilon \sim \mathcal{N} (0,1) } \left [ \left \| \epsilon - \epsilon_{\theta }(z_t, t, C_f, C_i)\right \| ^2_2\right ]
Lnoise=Ezt,t,Cf,Cl,ϵ∼N(0,1)[∥ϵ−ϵθ(zt,t,Cf,Ci)∥22]
L
l
o
c
=
1
N
∑
j
=
1
N
(
m
e
a
n
(
P
i
j
[
1
−
m
j
]
)
−
m
e
a
n
(
P
i
j
[
m
j
]
)
)
\mathcal{L}_{loc} = \frac{1}{N} \sum_{j=1}^{N} (mean(P_{i_j}[1-m_j]) - mean(P_{i_j}[m_j]))
Lloc=N1j=1∑N(mean(Pij[1−mj])−mean(Pij[mj]))
效果图:
总结
文生图个性化人像tunning-free的方法中,主要集中在:1)如何更加准确有效地提取人脸图像中的面部信息,2)如何更加有效地将面部信息传入到文生图网络中,3)使用loss等约束人脸信息对文生图网络的过度影响,保持文本可编辑性和原有的生成能力。