六大诀窍帮你释放扩散模型的创造力 原创

发布于 2025-2-20 10:10
浏览
0收藏

本文将介绍提升扩散模型质量的六种方法,从而帮助终端用户达到画家级的精准作图水平。

简介

Stable Diffusion模型1.5/2.0/2.1/XL 1.0版本、DALL-E模型、Imagen模型……在过去几年中,扩散模型在图像生成方面展现出了惊人的质量。然而,虽然这些模型在通用概念上产生了高质量的图像,但它们却难以为更专业的查询生成高质量的图像,例如生成训练数据集中不常见的特定风格的图像。

我们可以在大量图像上重新训练整个模型,从头开始解释解决问题所需的概念。这听起来并不实用。首先,我们需要大量的图像来实现这个想法;其次,这实在是太昂贵和耗时了。

然而,有一些解决方案,只要有少量图像和一个小时的微调,扩散模型就能在新的概念上产生合理的质量。

接下来,我将介绍Dreambooth、Lora、超网络、文本反转、IP适配器和ControlNets等广泛用于定制和条件扩散模型的方法。

扩散架构

在深入研究有助于调节扩散模型的各种方法之前,让我们首先回顾一下什么是扩散模型。

六大诀窍帮你释放扩散模型的创造力-AI.x社区

扩散过程可视化示意图(图片由作者本人提供)

扩散模型的最初想法是训练一个模型,以便从噪声中重建连贯图像。在训练阶段,我们逐渐添加少量高斯噪声(正向过程),然后通过优化模型来预测噪声,从而迭代地重建图像,减去噪声,最终达到更接近目标图像(反向过程)。

图像损坏(Image Corruption)的原始想法已经演变成一种更实用、更轻量的架构,其中首先将图像压缩到潜在空间,并在低维空间中执行所有添加噪声的操作。

为了将文本信息添加到扩散模型中,我们首先将其通过文本编码器(通常是​CLIP​)以便产生潜在嵌入,然后将其注入具有交叉注意层的模型中。

1.Dreambooth与相关论文和代码实现

六大诀窍帮你释放扩散模型的创造力-AI.x社区

Dreambooth可视化(可训练块用红色标记,图片由作者本人提供)

这个想法是取一个罕见的单词;通常使用{SKS}单词,然后教模型将单词{SKS}映射到我们想要学习的特征。例如,这可能是模型从未见过的风格,如梵高。我们会展示他的十几幅画作,并微调到短语“一幅{SKS}风格的靴子画”。我们可以类似地个性化生成,例如,学习如何在一组自拍照中生成特定人的图像,例如“山中的{SKS}”。

为了保持在预训练阶段学到的信息,Dreambooth通过将原始模型生成的文本图像对添加到微调集,以便鼓励模型不要偏离原始的预训练版本太多。

何时使用,何时不使用

Dreambooth在所有方法中都能产生最佳质量;但是,由于整个模型都已更新,该技术可能会影响已学过的概念。训练计划还限制了模型可以理解的概念数量。这种训练方法比较耗时,差不多需要1-2小时。如果我们决定一次引入几个新概念,那么我们需要存储两个模型检查点(【译者注】模型检查点是指在模型训练过程中定期保存的模型状态快照,包括模型的权重、配置和优化器的状态等信息),这会浪费大量空间。

2.文本反转与相关论文和代码实现

六大诀窍帮你释放扩散模型的创造力-AI.x社区

文本反转可视化(可训练块用红色标记,图片由作者本人提供)

文本反转方法背后的假设是,存储在扩散模型的潜在空间中的知识非常庞大。因此,我们想要用扩散模型重现的风格或条件已经为它所知,但我们没有访问它的符号(token)。因此,我们不是微调模型以便在输入“{SKS}风格”的稀有词时重现所需的输出,而是优化文本嵌入以产生所需的输出。

何时使用,何时不使用

文本反转方法占用的空间非常小,因为只会存储符号。训练速度也相对较快,平均训练时间为20-30分钟。然而,它也有缺点——因为我们正在微调一个引导模型产生特定风格的特定向量,所以它不会超越这种风格。

3.LoRA与相关论文和代码实现

六大诀窍帮你释放扩散模型的创造力-AI.x社区

LoRA可视化(可训练块标记为红色,图片由作者本人提供)

低秩自适应(Low-Rank Adaptions:LoRA)方法是为大型语言模型提出的,并首先​SimoRyu改编为扩散模型​。LoRA的最初想法是,我们可以将一小部分新权重与原始模型混合,这些权重将使用类似的稀有符号(token)方法针对任务进行微调,而不是对整个模型进行微调,这可能相当昂贵。

在扩散模型中,秩分解应用于交叉注意层,负责合并提示和图像信息。这些层中的权重矩阵WO、WQ、WK和WV均应用了LoRA。

何时使用,何时不使用

LoRA方法的训练时间非常短(5-15分钟)——与整个模型相比,我们只更新了少量参数,而且与Dreambooth不同,它们占用的空间要小得多。然而,使用LoRA进行微调的小型模型与DreamBooth相比质量较差。

4.超网络与相关论文和代码实现

六大诀窍帮你释放扩散模型的创造力-AI.x社区

超网络可视化(训练块用红色标记,图片由作者本人提供)

从某种意义上说,超网络方法是LoRA的扩展。我们不是学习会直接改变模型输出的相对较小的嵌入,而是训练一个能够预测这些新注入的嵌入权重的单独网络。

让模型预测特定概念的嵌入,我们可以教超网络几个概念——将同一模型重复用于多个任务。

何时使用和不使用

超网络方法不专注于单一风格,而是能够产生大量内容,通常不会产生像其他方法那样好的质量,并且可能需要大量时间来训练。从优点方面来看,它们可以比其他单概念微调方法存储更多的概念。

5.IP适配器与相关论文和代码实现

六大诀窍帮你释放扩散模型的创造力-AI.x社区

IP适配器可视化(可训练块标记为红色,图片由作者本人提供)

IP适配器方法不是用文本提示来控制图像生成,而是提出了一种使用图像来控制生成的方法,而无需对底层模型进行任何更改。

IP适配器方法背后的核心思想是,使用一种解耦的交叉注意机制,允许将源图像与文本和生成的图像特征相结合。这是通过添加单独的交叉注意层来实现的,允许模型学习特定于图像的特征。

何时使用,何时不使用

IP适配器方法属于轻量级的,适应性强且速度快。然而,它们的性能在很大程度上取决于训练数据的质量和多样性。IP适配器通常更适合提供我们希望在生成的图像中看到的风格属性(例如Mark Chagall的画作图像),但可能无法控制精确的细节,例如姿势。

6.ControlNets与相关论文和代码实现

六大诀窍帮你释放扩散模型的创造力-AI.x社区

ControlNet可视化(可训练块用红色标记,图片由作者本人提供)

ControlNet论文提出了一种将文本到图像模型的输入扩展到任何模态的方法,从而可以对生成的图像进行细粒度控制。

在原始公式中,ControlNet是预训练扩散模型的编码器,它将提示、噪声和控制数据(例如深度图、地标等)作为输入。为了指导生成,ControlNet的中间级别随后被添加到冻结扩散模型的激活中。

注入是通过零卷积实现的,其中1×1卷积的权重和偏差被初始化为零,并在训练过程中逐渐学习有意义的变换。这类似于LoRA的训练方式——以0初始化,从恒等函数开始学习。

何时使用,何时不使用

当我们想要控制输出结构时,例如通过地标、深度图或边缘图,ControlNets方法是首选方案。由于需要更新整个模型权重,训练可能很耗时;但是,这些方法也允许通过刚性控制信号进行最佳的细粒度控制。

总结

  • DreamBooth技术:针对自定义风格的主题对模型进行全面微调,控制水平高;但是,训练需要很长时间,并且仅适用于一种目的。
  • 文本反转技术:基于嵌入的新概念学习,控制水平低,但训练速度快。
  • LoRA技术:针对新风格/角色的轻量级模型微调,控制水平中等,但训练速度快。
  • 超网络技术:单独的模型来预测给定控制请求的LoRA权重。更多风格的控制水平较低,需要时间训练。
  • IP适配器技术:通过参考图像进行柔和的风格/内容指导,中等水平的风格控制,轻量级且高效。
  • ControlNet技术:通过姿势、深度和边缘进行控制非常精确;但是,需要更长的训练时间。
  • 最佳实践推荐:为了获得最佳效果,结合使用IP适配器及其更柔和的风格指导和用于姿势和对象排列的ControlNet方法可产生最佳效果。

译者介绍

朱先忠,51CTO社区编辑,51CTO专家博客、讲师,潍坊一所高校计算机教师,自由编程界老兵一枚。

原文标题:​Six Ways to Control Style and Content in Diffusion Models​,作者:Aliaksei Mikhailiuk

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
收藏
回复
举报
回复
相关推荐