IPAdapter+再进化,可同时学习多个任务!Unity开源新思路:图像条件结合指令提示
文章链接:https://arxiv.org/pdf/2408.03209
git链接:https://unity-research.github.io/IP-Adapter-Instruct.github.io/
demo链接:https://huggingface.co/spaces/unity/IP-Adapter-Instruct
亮点直击
- 提出IPAdapter-Instruct模型:结合自然图像条件与文本指令,灵活切换多种解释方式(如风格迁移、物体提取),简化任务处理。
- 增强生成控制:改进传统图像条件方法,通过指令提示在同一条件图像下处理多种解释,提高生成控制精度。
- 高效学习与灵活性:模型能够同时学习多种任务,性能接近专门模型,但显著减少训练时间和成本。
- 改进训练与推理:通过多种条件解释(如完全复制、风格迁移等),提高了训练和推理效率及质量。
扩散模型不断推动图像生成的技术边界,但其生成过程难以精细控制:实践表明,文本提示不足以准确描述图像风格或细节(如面部特征)。ControlNet 和 IPAdapter 通过将生成过程基于图像条件进行调整,解决了这一问题,但每个模型实例仅能模拟单一的条件后验分布。在实际应用中,需要在同一工作流程中使用多个不同的后验分布,而训练和使用多个适配器显得繁琐。为此,本文提出了 IPAdapter-Instruct,它结合了自然图像条件和“指令”提示,能够在同一条件图像下切换不同的解释:风格迁移、对象提取、或两者兼有,甚至其他任务。与专门的单任务模型相比,IPAdapter-Instruct 能有效学习多项任务,同时在质量上损失最小。
方法
基于指令引导的图像条件生成
现有的基于图像条件的技术并没有提供一种明确的方法来控制条件对输出的影响,尤其是在处理自然图像条件时,没有一种统一的方式来整合其信息和内容。相反,通过额外的“指令”提示 让用户明确意图,将其称为指令或指令提示,以区别于文本提示 。这意味着现在建模的是概率分布 。可以将原始的IPAdapter视为此模型的一种实例,其中 从这张图像中再现所有内容——本文的方法建模了一个更广泛的后验分布,而IPAdapter只是其中的一个边缘分布。
本文论了针对联合IPAdapter-Instruct模型的五种不同生成任务:
- 复制:生成条件图像的不同变体(类似于IPAdapter),
- 风格:生成与条件图像风格一致的图像,
- 结构:生成与条件图像结构相同的图像,
- 对象:生成包含条件图像中的对象的图像,
- 面部:生成包含条件图像中人物面部的图像。
在有适当数据集和训练流程的前提下,五个独立的IPAdapter实例可以分别处理这些任务,但这种工作流程在训练和推理时都显得繁琐。相反,IPAdapter-Instruct同时针对所有任务进行训练,使得整个任务集的训练更加高效,并且推理过程也更加实用。此外,多任务学习在许多情况下已被证明是有益的。
模型架构
本文的模型架构基于IPAdapter+的变换投影模型。首先讨论原始的IPAdapter+架构,然后介绍本文的修改。
在IPAdapter+中,每次对文本提示 进行交叉注意力操作后,都会在条件图像的投影编码上添加一个交叉注意力层,如下图2所示。
条件图像首先被编码到CLIP域,然后通过单个线性层投影到IPAdapter+特定的空间中,之后再通过一个小型的变换模型,如下图3所示。
引入指令。 对于IPAdapter-Instruct,修改了投影变换模型,在每次迭代时引入了一个额外的注意力层,该层还会关注指令的CLIP嵌入,如图3所示。通过这种方式,模型能够从条件嵌入中提取与指令相关的信息。
编码指令 选择使用文本embedding模型对指令进行编码,将其嵌入到与原始IPAdapter(+)模型将条件图像embedding的相同空间中。鉴于任务集的离散性,也可以为每个任务学习特定的任务embedding,并使用这些embeddings代替。然而,通过利用强大的预训练ViT-H/14模型,能够从CLIP嵌入空间的语义丰富性中获益,并且将指令和条件都表示在同一个空间中。虽然在这项工作中没有对此进行详细研究,但坐着的直觉认为,这种方法能够实现更灵活和稳健的指令理解,并为未来的额外任务提供更好的起点。
任务和数据集生成
研究者们为每个不同的任务构建了一个专用数据集,详细内容如下所述。对于指令提示,使用大型语言模型(LLM)为每个任务生成示例指令提示,并在训练过程中随机抽取这些提示。为了确保每个任务在CLIP空间中能够清晰辨识,为每个任务分配了一个关键词,并删除了任何包含其他任务关键词的指令。下图4展示了每个任务指令嵌入的t-SNE可视化(以及在消融研究中使用的“平均”指令)。
下图5展示了所有这些数据集的示例条目。
图像复制
与IPAdapter的训练过程类似,该任务的目标是创建输入图像的细微变化。由于此模式复现了IPAdapter的原始行为,期望能够将这种指令模式应用于其他任务。为了创建训练数据集,使用了JourneyDB数据集,收集了42,000个随机样本及其原始文本提示。指令提示则通过询问ChatGPT-4 生成,要求其“生成不同长度的描述方式,以表达从一张图像中获取所有内容,但不要使用‘构图’、‘风格’、‘面部’或‘对象’这些词”。
风格保留
在风格保留任务中,用户希望仅提取条件图像的风格并将其应用于新的图像——尽管这个概念并不十分明确,但它通常包含色彩方案和一般的艺术风格。身份、布局和构图不应渗透到生成图像中。为了创建风格训练数据集,从ehristoforu/midjourney-images 风格数据集和一个大规模的艺术数据集 开始。条件图像从风格数据集中采样,而目标图像则通过InstantStyle生成,使用艺术数据集中的提示,并将条件图像作为风格源。换句话说,这种模式通过监督生成类似于InstantStyle生成的图像。指令提示通过询问ChatGPT-4生成,要求其“生成不同长度的描述方式,以表达从一张图像中获取风格,但不要使用‘构图’、‘对象’、‘面部’或‘所有内容’这些词”。由于InstantStyle计算成本高且速度较慢,该数据集仅包含20,000个样本。
对象提取
在对象提取任务中,目标是将条件图像中的对象置于一个新的场景中,并尽可能保留其身份特征,这与MagicInsert类似。基于COCO数据集生成此数据集:对于35,000张图像,将相关对象裁剪出来作为条件图像,并在必要时使用随机颜色填充。目标图像则是原始数据集中的图像,并由GPT-4o提供相应的文本提示。指令提示通过询问ChatGPT-4生成,要求其“生成不同长度的描述方式,以表达从一张图像中提取对象,但不要使用‘构图’、‘风格’、‘面部’或‘所有内容’这些词”。为了向图像投影层(如前面图3所示)提供更多语义信息(通常用户会访问到这些信息),在指令中将‘对象’关键词替换为该对象的具体名称。
结构保留
最后,研究者们还创建了一个用于结构保留的数据库。该任务旨在模仿scribble ControlNet模型的行为,生成具有与条件图像相似的Canny边缘轮廓的图像,而无需先生成这些边缘图像。对于scribble数据集,使用CommonCanvas数据集,并使用lllyasviel/sd-controlnet-scribble ControlNet模型通过其Canny边缘图和原始提示生成新的目标图像——原始图像本身则作为条件图像。指令提示通过询问ChatGPT-4生成,要求其“生成不同长度的描述方式,以表达从一张图像中获取构图,但不要使用‘风格’、‘对象’、‘面部’或‘所有内容’这些词”。
身份保留
由于人类对面部特征极为敏感,还使用CelebA数据集为面部保留创建了一个专用数据集。采集了40,000对匹配的图像对,并由GPT-4o提供文本提示。为了更加突出面部特征,其中一半的条件图像被放大以专注于面部。指令提示通过询问ChatGPT-4生成,要求其“生成不同长度的描述方式,以表达从一张图像中获取面部或身份特征,但不要使用‘构图’、‘风格’、‘所有内容’或‘对象’这些词”。
训练过程
本文的训练过程遵循IPAdapter的训练步骤,并使用前面讨论的数据集。选择Stable Diffusion 1.5 作为基础模型,因为它在输出多样性、可控性和可访问性方面表现出色——因此它仍然是社区中的主要模型。基础模型保持完全冻结状态,使用IPAdapter+的权重初始化SD1.5 的原始IPAdapter元素。大多数新残差层用白噪声(σ = )初始化。最终激活层则被零初始化,以便复制基础IPAdapter的初始行为。
对于主要模型,使用了512的批次大小和的学习率,共进行了100,000步的训练。为了控制消融研究的成本,使用了64的批次大小和的学习率,同样训练100,000步——从视觉效果来看,结果已经收敛,进一步的训练不太可能影响消融研究的结论。类似于IPAdapter,发现对于用户推理而言,IPAdapter的残差连接影响需要缩减20%-40%,以避免压过文本的交叉注意力。
实验与结果
数据集与评估指标
对于每个任务数据集,保留了1,000张图像作为验证集,用于定量和定性评估。使用以下指标来评估每个任务的效果:
- CLIP-I:生成图像与条件图像之间的余弦相似度,用于指示从条件图像传递到生成图像的信息量。
- CLIP-T:生成图像与条件图像原始标题之间的ClipScore,用于指示复制任务的成功程度。
- CLIP-P:生成图像与用户文本提示之间的ClipScore,用于指示在非复制任务中,生成图像与文本提示的契合程度。
- CLIP风格评分 (CLIP-S):计算生成图像的CLIP嵌入减去其文本提示的CLIP嵌入,与条件图像的CLIP嵌入减去其已知文本提示嵌入之间的余弦相似度,灵感来自于InstantStyle的表现,用于指示风格迁移的成功程度。
与任务特定模型的比较
将本文的模型与专门训练的任务特定模型进行比较。请参阅下图6中的不同模型的定性示例,并参考下表1中的定量概述。
研究者们发现,本文提出的模型在性能上与单任务模型持平或略优,同时将所有任务压缩到一个模型中。如下图7所示,该模型的训练速度与单任务模型相当,但能够同时处理所有任务。这大大减少了整个任务集的总训练时间和成本,同时简化了推理代码的处理。
与固定指令集的比较
研究者们对生成随机提示而不是为每个任务使用单一硬编码指令提示的选择进行了消融研究。在后者的情况下,上面表1显示随机提示比固定提示更有效——作者认为这是因为当不同任务的各种表述在提示嵌入空间中彼此接近时,模型被迫在一定程度上利用各任务之间的相似性。此外,如下图8所示,对于给定任务,变化指令的效果仅有微小但明显的影响,从而允许对输出进行细微探索。
主模型的定性结果
最后,本文提供了本文锁提出的方法在各种设置下的定性结果。下图9展示了Instruct方案在控制条件解释方面的灵活性;在所有情况下,都将其与IPAdapter+在相同用例下的表现进行了比较。发现很难将IPAdapter+引导到特定的用例中,而本文的模型通过指令可以轻松地进行控制。主观上,发现构图任务的表现最差:虽然模型通常能够很好地遵循条件的结构,但其表现并不比其他任务更好,并且往往会将风格渗透到生成结果中。这并不完全意外:构图任务(基于Canny边缘图和scribble ControlNet,即像素精确的指导)可以说更适合ControlNet工作流,尽管发现通过IPAdapter变体能够提取出大量结构信息仍然很有趣。
最后,类似于IPAdapter,本文保持了与ControlNet和LoRA模型的兼容性,如下图10所示。本文的模型在生成过程中成功地进行了条件控制,同时ControlNets提供了像素级精确指导。
结论、局限性与未来工作
本文引入了IPAdapter-Instruct,以澄清在对图像扩散模型进行输入图像条件控制时用户的意图:通过引入指定用户意图的指令提示,这个联合模型能够高效地进行训练而不会失去性能。它将多个适配器压缩到一个单一的提示和图像组合中,同时保留了原始IPAdapter工作流的优点,例如保持基础扩散模型的完整性,并保持与LoRAs的兼容性。
主要的局限性在于训练数据集的创建:这是一项耗时且受到源数据可用性限制的工作,但对任务性能有显著影响。数据集的创建还明显对条件模型施加了偏见:风格迁移偏向于MidJourney,面部提取在真实照片上效果最佳,而最显著的是,物体提取从彩色填充中显著受益。
然而,像素级精确的指导任务不适合压缩到CLIP空间中。希望最终能够将这两种指导(像素级精确和语义)结合到一个单一的条件模型中,使用指令提示来传达用户意图。
本文转自 AI生成未来 ,作者:Unity