使用预先训练的扩散模型进行图像合成

简介: 使用预先训练的扩散模型进行图像合成

动动发财的小手,点个赞吧!

文本到图像的扩散模型在生成符合自然语言描述提示的逼真图像方面取得了惊人的性能。开源预训练模型(例如稳定扩散)的发布有助于这些技术的民主化。预先训练的扩散模型允许任何人创建令人惊叹的图像,而不需要大量的计算能力或长时间的训练过程。

尽管文本引导图像生成提供了一定程度的控制,但获得具有预定构图的图像通常很棘手,即使有大量提示也是如此。事实上,标准的文本到图像扩散模型几乎无法控制生成图像中描绘的各种元素。

这篇文章中,我将解释基于论文 MultiDiffusion: Fusing Diffusion Paths for Controlled Image Generation 的最新技术。该技术使得可以在将元素放置在由文本引导的扩散模型生成的图像中时获得更大的控制。论文中提出的方法更通用,并且允许其他应用,例如生成全景图像,但我将在这里限制为使用基于区域的文本提示的图像合成的情况。这种方法的主要优点是它可以与开箱即用的预训练扩散模型一起使用,而不需要昂贵的重新训练或微调。

为了用代码补充这篇文章,我准备了一个简单的 Colab 笔记本和一个 GitHub 存储库,其中包含我用来生成本文中图像的代码实现。该代码基于 Hugging Face 扩散器库中包含的稳定扩散管道,但它仅实现了其功能所需的部分,以使其更简单、更易于阅读。

Diffusion 模型

在本节中,我将回顾有关扩散模型的一些基本事实。扩散模型是生成模型,通过反转将数据分布映射到各向同性高斯分布的扩散过程来生成新数据。更具体地说,给定图像,扩散过程由一系列步骤组成,每个步骤都向该图像添加少量高斯噪声。在无限步数的限制下,噪声图像将与从各向同性高斯分布采样的纯噪声无法区分。

扩散模型的目标是通过在给定步骤 t 的噪声图像的扩散过程中尝试猜测步骤 t-1 的噪声图像来反转该过程。例如,这可以通过训练神经网络来预测在该步骤中添加的噪声并从噪声图像中减去它来完成。

一旦我们训练了这样的模型,我们就可以通过从各向同性高斯分布中采样噪声来生成新图像,并使用该模型通过逐渐消除噪声来反转扩散过程。

文本到图像的扩散模型反转扩散过程,试图到达与文本提示的描述相对应的图像。这通常由神经网络完成,该神经网络在每个步骤 t 预测步骤 t-1 的噪声图像,该图像不仅以步骤 t 的噪声图像为条件,而且还以描述其尝试重建的图像的文本提示为条件。

许多图像扩散模型(包括稳定扩散)不在原始图像空间中运行,而是在较小的学习潜在空间中运行。通过这种方式,可以以最小的质量损失减少所需的计算资源。潜在空间通常是通过变分自动编码器学习的。潜在空间中的扩散过程与以前完全相同,允许从高斯噪声生成新的潜在向量。由此,可以使用变分自动编码器的解码器获得新生成的图像。

使用多重扩散进行图像合成

现在让我们来解释如何使用 MultiDiffusion 方法获得可控的图像合成。目标是通过预先训练的文本到图像扩散模型更好地控制图像中生成的元素。更具体地说,给定图像的一般描述(例如,封面图像中的客厅),我们希望通过文本提示指定的一系列元素出现在特定位置(例如,中心的红色沙发,左边是室内植物,右上角是一幅画)。这可以通过提供一组描述所需元素的文本提示和一组基于区域的二进制掩码来指定必须在其中描述元素的位置来实现。例如,下图包含封面图像中图像元素的边界框。

MultiDiffusion可控图像生成的核心思想是将针对不同指定提示的多个扩散过程组合在一起,以获得在预定区域中显示每个提示内容的连贯且平滑的图像。与每个提示关联的区域是通过与图像尺寸相同的二进制掩码指定的。如果必须在该位置描绘提示,则遮罩的像素设置为 1,否则设置为 0。

更具体地说,让我们用 t 表示在潜在空间中运行的扩散过程中的通用步骤。给定时间步 t 处的噪声潜在向量,模型将预测每个指定文本提示的噪声。从这些预测噪声中,我们通过在时间步 t 处从先前的潜在向量中删除每个预测噪声,获得时间步 t-1 处的一组潜在向量(每个提示一个)。为了获得扩散过程中下一个时间步骤的输入,我们需要将这些不同的向量组合在一起。这可以通过将每个潜在向量乘以相应的提示掩码,然后采用掩码加权的每像素平均值来完成。遵循此过程,在特定掩模指定的区域中,潜在向量将遵循相应局部提示引导的扩散过程的轨迹。在预测噪声之前,在每一步将潜在向量组合在一起,确保生成图像的全局内聚性以及不同屏蔽区域之间的平滑过渡。

MultiDiffusion 在扩散过程开始时引入了引导阶段,以更好地粘附紧密掩模。在这些初始步骤期间,对应于不同提示的去噪潜在向量不会组合在一起,而是与对应于恒定颜色背景的一些去噪潜在向量组合。这样,由于布局通常是在扩散过程的早期确定的,因此可以获得与指定蒙版的更好匹配,因为模型最初可以仅关注蒙版区域来描绘提示。

实例

在本节中,我将展示该方法的一些应用。我使用 HuggingFace 托管的预训练稳定扩散 2 模型来创建本文中的所有图像,包括封面图像。

如所讨论的,该方法的直接应用是获取包含在预定义位置中生成的元素的图像。

该方法允许指定要描述的单个元素的样式或一些其他属性。例如,这可用于在模糊背景上获得清晰的图像。

元素的风格也可以非常不同,从而产生令人惊叹的视觉效果。例如,下图是通过将高质量照片风格与梵高风格的绘画混合而获得的。

总结

在这篇文章中,我们探索了一种将不同扩散过程结合在一起的方法,以改善对文本条件扩散模型生成的图像的控制。此方法增强了对生成图像元素的位置的控制,并且还可以无缝组合以不同风格描绘的元素。

所述过程的主要优点之一是它可以与预先训练的文本到图像扩散模型一起使用,而不需要微调,这通常是一个昂贵的过程。另一个优点是,可控图像生成是通过二进制掩模获得的,与更复杂的条件相比,二进制掩模更容易指定和处理。

这项技术的主要缺点是,它需要在每个扩散步骤中为每个提示传递一个神经网络,以便预测相应的噪声。幸运的是,这些可以批量执行以减少推理时间开销,但代价是更大的 GPU 内存利用率。此外,有时一些提示(尤其是仅在图像的一小部分中指定的提示)被忽略,或者它们覆盖的区域比相应蒙版指定的区域更大。虽然可以通过引导步骤来缓解这种情况,但过多的引导步骤会显着降低图像的整体质量,因为可用于将元素协调在一起的步骤较少。

值得一提的是,组合不同扩散过程的想法并不限于本文中描述的内容,它还可以用于进一步的应用,例如全景图像生成,如论文 MultiDiffusion: Fusing Diffusion Paths for Controlled图像生成。

我希望您喜欢这篇文章,如果您想深入了解技术细节,您可以查看此 Colab 笔记本和 GitHub 存储库以及代码实现。

相关文章
|
6月前
|
机器学习/深度学习 人工智能
手动实现一个扩散模型DDPM(下)
手动实现一个扩散模型DDPM(下)
357 2
|
30天前
|
机器学习/深度学习 调度 知识图谱
TimeDART:基于扩散自回归Transformer 的自监督时间序列预测方法
近年来,深度神经网络成为时间序列预测的主流方法。自监督学习通过从未标记数据中学习,能够捕获时间序列的长期依赖和局部特征。TimeDART结合扩散模型和自回归建模,创新性地解决了时间序列预测中的关键挑战,在多个数据集上取得了最优性能,展示了强大的泛化能力。
70 0
TimeDART:基于扩散自回归Transformer 的自监督时间序列预测方法
|
2月前
|
机器学习/深度学习 自然语言处理 并行计算
扩散模型
本文详细介绍了扩散模型(Diffusion Models, DM),一种在计算机视觉和自然语言处理等领域取得显著进展的生成模型。文章分为四部分:基本原理、处理过程、应用和代码实战。首先,阐述了扩散模型的两个核心过程:前向扩散(加噪)和逆向扩散(去噪)。接着,介绍了训练和生成的具体步骤。最后,展示了模型在图像生成、视频生成和自然语言处理等领域的广泛应用,并提供了一个基于Python和PyTorch的代码示例,帮助读者快速入门。
|
2月前
|
人工智能 自动驾驶 数据库
领域大模型的训练需要什么数据?
领域大模型的训练需要什么数据?
118 0
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
基于Mamba架构的,状态空间音频分类模型AUM
【8月更文挑战第7天】随着AI技术的发展,音频分类在诸多领域变得至关重要。传统方法如CNN面临计算成本高的问题。新兴的Mamba架构,基于状态空间模型(SSM),展示出优秀性能。受此启发,研究者开发了Audio Mamba (AUM)模型,首个完全基于SSM且不依赖自注意力机制的音频分类模型。AUM利用SSM的高效性捕捉音频时频特征,大幅降低计算复杂度,尤其适合大规模数据。实验显示,AUM在多个任务上的表现与先进自注意力模型相当甚至更好。尽管如此,AUM在复杂任务及泛化能力方面仍存在讨论空间。[论文](https://arxiv.org/abs/2406.03344)
74 1
|
5月前
|
机器学习/深度学习 人工智能
可解释性研究新突破:OpenAI成功训练1600万个特征的自动编码器
【6月更文挑战第13天】OpenAI团队在可解释性研究上取得进展,训练出拥有1600万特征的自动编码器来解析GPT-4。此模型旨在揭示语言模型的工作原理,提高AI透明度。自动编码器从低维度特征空间重建输入数据,研究通过稀疏特征增强可解释性。虽然规模扩大带来解释性提升,但计算资源需求大,且评估指标的全面性仍受质疑。[论文链接](https://cdn.openai.com/papers/sparse-autoencoders.pdf)
72 1
|
6月前
|
机器学习/深度学习 存储 人工智能
手动实现一个扩散模型DDPM(上)
手动实现一个扩散模型DDPM(上)
315 5
|
6月前
|
数据采集
【大模型】大语言模型训练数据中的偏差概念及其可能的影响?
【5月更文挑战第5天】【大模型】大语言模型训练数据中的偏差概念及其可能的影响?
|
6月前
|
搜索推荐 机器人 开发者
视频扩散模型
视频扩散模型【2月更文挑战第26天】
38 1
|
6月前
|
机器学习/深度学习 算法 Serverless
YoLo_V4模型训练过程
YoLo_V4模型训练过程
93 0