IP-Adapter-随记

733 阅读5分钟

motivation

  • 将图像作为prompt,驱动diffusion model生成图像(文本很难描述图像的具体情况)

image.png CN和T2I-adapt更倾向于structure指导的生成;而另外两个更倾向于学习原图和参考图。

其实训练编码器的代价其实是挺大的。

method

image.png 文本支路的都是frozen的,且两个Encoder都是冻结的。 就是分别处理图像信息和文本信息,特征提取时再融合。

具有解耦交叉注意力策略的IP-Adapter的整体架构。仅训练新添加的模块(红色),而预训练的文本到图像模型被冻结

result

image.png


下面是全文的精简版。因为挺多内容与先前的框架是重复的。

摘要:

效果图:

image.png IP-Adapter应用于不同风格的预训练文本到图像扩散模型上进行图像合成。

  • 右边的例子显示了图像变化、多模态生成和图像提示修复的结果
  • 而左边的例子显示了图像提示和附加结构条件的可控生成的结果

ControlNet和T2I-Adapter已经证明可以在现有的文本到图像扩散模型中有效地插入一个附加网络来指导图像生成。大多数研究都集中在具有附加结构控制的图像生成上,如用户绘制的草图、深度图、语义分割图等。此外,参考图像提供的样式或内容的图像生成也已经通过简单的适配器实现。

为了实现这一点,从CLIP图像编码器中提取的图像特征通过可训练网络映射到新特征,然后与文本特征连接。通过替换原始文本特征,将合并后的特征馈送到扩散模型的UNet中指导图像生成,这些适配器可以看作是具有使用图像提示能力的一种方式,但生成的图像与提示图像只是部分相似,其结果往往比微调后的图像提示模型差。

我们认为,上述方法的主要问题在于文本到图像扩散模型的交叉注意力模块。预训练扩散模型中交叉注意力层的key键和value值投影权重被训练以适应文本特征。因此,将图像特征和文本特征合并到交叉注意力层中只能实现图像特征与文本特征的对齐,但这可能会遗漏一些图像特定的信息,最终导致仅使用参考图像进行粗粒度可控生成(例如图像样式)。

具体来说,IP-Adapter对文本特征和图像特征采用了解耦的交叉注意机制。由于采用的是解耦交叉注意力策略,图像提示与文本提示相兼容,可实现多模态图像生成。对于扩散模型的UNet中的每一个交叉注意层,我们只针对图像特征添加了一个额外的交叉注意层。在训练阶段,只训练新的交叉注意层的参数,而原始的UNet模型保持冻结状态。

方法

在本文中,设计了图像提示适配器,以使得预训练的文本到图像扩散模型能够使用图像提示来生成图像。正如前文所述,当前的适配器难以匹敌微调后的图像提示模型或从头开始训练的模型的性能。其主要原因是图像特征无法有效地嵌入到预训练模型中。大多数方法仅仅将合并后的特征送入冻结的跨注意力层,这阻止了扩散模型从图像提示中捕获细粒度特征

为了解决这个问题,我们提出了一种解耦的交叉注意力策略,其中图像特征通过新增的跨注意力层进行嵌入。我们提出的IP-Adapter的整体架构如图2所示。该IP-Adapter由两部分组成:一个图像编码器,用于从图像提示中提取图像特征;以及带有解耦交叉注意力的适配模块,用于将图像特征嵌入到预训练的文本到图像扩散模型中。 image.png

遵循大多数方法,我们使用预训练的CLIP图像编码器模型从图像提示中提取图像特征。CLIP模型是在包含图像-文本对的大型数据集上通过对比学习训练的多模态模型。我们利用来自CLIP图像编码器的全局图像嵌入,它与图像标题很好地对齐,可以表示图像的丰富内容和风格。

在训练阶段,CLIP图像编码器被冻结。为了有效分解全局图像嵌入,我们使用小型可训练投影网络将图像嵌入投射到长度为N的特征序列中(我们在本研究中使用N=4),图像特征的维度与预训练扩散模型中文本特征的维度相同。我们在这项研究中使用的投影网络由线性的层和规范化的层组成。

-解耦交叉注意力机制

image.png

  • 就是两个cross-attention模块,一个接受文本信息,一个接受图像信息。--分别传入文本特征和图像特征进行注意力计算。
    • 图像分支是可学习的,调整线性层和layernorm,得到图像特征。

训练目标-与原SD一致

image.png

还在训练阶段随机丢弃图像条件,以便在推理阶段启用无分类器指导CFG

image.png

如果图像条件被删除,我们只需将CLIP图像嵌入归零。由于文本交叉注意力和图像交叉注意力被分离,我们还可以在推理阶段调整图像条件的权重

image.png

实验

将IP-Adapter与其他现有的图像提示生成方法进行了比较。我们选择了三种类型的方法:从头开始训练、对文本到图像模型进行微调和使用适配器。

image.png

image-to-image and inpainting with image prompt

image.png

多prompt

image.png