3. 方法
在本节中,我们首先介绍一些文本到图像扩散模型的基础知识。然后,我们将详细描述所提出的IP-Adapter的动机和设计。
3.1 基础知识
扩散模型是一类生成模型,包括两个过程:扩散过程(也称为前向过程),它使用固定的T步马尔可夫链逐渐将数据添加高斯噪声;以及去噪过程,它使用可学习模型从高斯噪声中生成样本。扩散模型也可以基于其他输入进行条件化,例如文本到图像扩散模型中的文本。通常,扩散模型的训练目标,记作E0,它预测噪声,被定义为变分界限的简化变体:
[
]
其中,c表示带有额外条件c的真实数据,t ∈ [0, T]表示扩散过程的时间步,
是t步的噪声数据,(\alpha_t)和(\bar{\alpha}_t)是确定扩散过程的t的预定义函数。
一旦模型被训练完成,就可以通过迭代的方式从随机噪声中生成图像。通常,在推理阶段采用快速采样器,如DDIM [21]、PNDM [36]和DPM-Solver [37, 38],以加速生成过程。
对于条件扩散模型,分类器引导[23]是一种直接的技术,用于通过利用单独训练的分类器的梯度来平衡图像保真度和样本多样性。为了消除训练额外分类器的需要,
在独立分类器之外,无分类器指导[39]经常被用作一种替代方法。在这种方法中,条件扩散模型和无条件扩散模型通过在训练过程中随机丢弃条件c来联合训练。在采样阶段,预测的噪声是基于条件模型Eθ(ct, C, t)和无条件模型Eθ(ct, t)的预测来计算的:
[
]
这里,w,通常被称为指导尺度或指导权重,是一个标量值,用于调整与条件c的对齐程度。对于文本到图像的扩散模型,无分类器指导在增强生成样本的图像-文本对齐方面起着至关重要的作用。在我们的研究中,我们利用开源的SD模型作为我们的基础模型示例来实现IP-Adapter。SD是一个基于从冻结的CLIP文本编码器中提取的文本特征的条件潜在扩散模型。扩散模型的架构是基于带有注意力层的UNet[40]。与像Imagen这样的基于像素的扩散模型相比,SD更高效,因为它构建在来自预训练自编码器模型的潜在空间上。
3.2 图像提示适配器
在本文中,图像提示适配器旨在使预训练的文本到图像扩散模型能够利用图像提示生成图像。如前几节所述,当前的适配器难以匹配经过微调的图像提示模型或从头训练的模型的性能。主要原因是图像特征无法有效地嵌入到预训练模型中。大多数方法简单地将连接的特征输入到冻结的交叉注意力层中,使得扩散模型无法捕捉图像提示中的细粒度特征。为解决这个问题,我们提出了一种解耦的交叉注意力策略,其中图像特征通过新增的交叉注意力层进行嵌入。我们提出的IP-Adapter的整体架构如图2所示。IP-Adapter由两部分组成:一个用于从图像提示中提取图像特征的图像编码器,以及带有解耦交叉注意力的适配模块,用于将图像特征嵌入到预训练的文本到图像扩散模型中。
3.2.1 图像编码器
与大多数方法一样,我们使用预训练的CLIP图像编码器模型从图像提示中提取图像特征。CLIP模型是一个在包含图像-文本对的大型数据集上通过对比学习训练的多模态模型。我们利用CLIP图像编码器的全局图像嵌入,它与图像说明很好地对齐,可以表示图像的丰富内容和风格。在训练阶段,CLIP图像编码器是冻结的。为了有效地分解全局图像嵌入,我们使用一个小型可训练的投影网络将图像嵌入投影到长度为N的特征序列中(在本研究中我们使用N = 4),图像特征的维度与预训练扩散模型中文本特征的维度相同。我们在本研究中使用的投影网络由一个线性层和一个层归一化[41]组成。
3.2.2 解耦交叉注意力
预训练的UNet模型通过带有解耦交叉注意力的适应模块将图像特征集成进来。在原始的SD模型中,CLIP文本编码器的文本特征通过馈入交叉注意力层被插入到UNet模型中。给定查询特征Z和文本特征Ct,交叉注意力层的输出Z可以通过以下方程定义:
[
]
其中,Q = ZWq, K = CtWk, V = CtWv 分别是注意力操作的查询、键和值矩阵,Wq, Wk, Wv 是可训练线性投影层的权重矩阵。
一种直接插入图像特征的方法是将图像特征和文本特征拼接起来,然后将它们馈入交叉注意力层。然而,我们发现这种方法效果不足。相反,我们提出了一种解耦交叉注意力机制,其中文本特征和图像特征的交叉注意力层是分开的。
具体来说,我们在原始UNet模型的每个交叉注意力层中添加一个新的交叉注意力层来插入图像特征。给定图像特征Ci,新的交叉注意力层的输出Z'计算如下:
[
]
其中,Q' = ZWq, K' = CiWk', V' = CiWv' 是从图像特征得到的查询、键和值矩阵,Wk' 和 Wv' 是对应的权重矩阵。需要注意的是,我们对图像交叉注意力和文本交叉注意力使用相同的查询。因此,我们只需要为每个交叉注意力层添加两个参数Wk' 和 Wv'。为了加快收敛速度,Wk' 和 Wv' 分别从Wk 和 Wv 初始化。然后,我们简单地将图像交叉注意力的输出加到文本交叉注意力的输出上。
因此,解耦交叉注意力的最终形式定义如下:
[
]
其中,Q = ZWq, K = CtWk, V = CtWv, K' = CiWk', V' = CiWv'。由于我们冻结了原始的UNet模型,因此在上述解耦交叉注意力中,只有Wk' 和 Wv' 是可训练的。