Mixture of Diffusers 用于场景合成和高分辨率图像生成的扩散器混合

 ✒️ @halomaster 📅 11 Mar 2023, 04:00 GMT⋮ 【AI】 

目前的图像生成方法很难将对象放在特定位置。虽然生成的图像反映了提示中的对象,但很难构建特定构图的方式。我们提出了一种新方法,使用多个并行扩散过程来提供更好的图像合成工具。每个过程都有不同的提示和设置,专注于图像的特定区域。这种方法可以防止生成图像中的“接缝”效应,并且在生成非常大的图像时也很实用。因为 GPU 内存要求类似于生成单个图块大小的图像。 https://github.com/albarji/mixture-of-diffusers ------------ 论文:https://arxiv.org/abs/2302.02412 扩散方法已被证明在以文本提示为条件的同时生成图像方面非常有效。然而,虽然生成的图像的质量是前所未有的,但这些方法在尝试生成特定的图像合成时似乎会遇到困难。在本文中,我们介绍了 Diffuses 的混合,这是一种建立在现有扩散模型之上的算法,以提供对组合的更详细控制。通过协调作用于画布不同区域的几个扩散过程,它允许生成更大的图像,其中每个对象和样式的位置由单独的扩散过程控制。 混合模型 已被证明是一种生成合成图像的非常有效的方法,无论是通过遵循特定的训练分布 以无条件的方式,以特定类为条件,通过辅助分类器或使用文本提示作为生成过程的指导。它们也被证明比以前基于生成对抗网络的方法训练和生成更高质量的图像更简单。然而,文本条件扩散模型在将用户意图翻译成忠实的图像表示方面仍有改进的空间。一般来说,虽然场景中描述的元素的语义似乎以合理程度的准确度表示,但两个或多个元素之间的句法关系通常有些模糊地表示。 扩散模型的另一个已知限制是它们对高分辨率图像的可扩展性。在其核心,扩散模型需要根据部分去噪的图像估计某种形式的噪声分布,深度神经网络通常执行的过程,例如 U-Net 使用注意力层改进。虽然有效,但对于 N × N 像素图像,这样的网络以 O(N 2 log N 2) 的顺序施加了计算成本。但更重要的是,相同的要求缩放适用于 GPU RAM 消耗,从而使高分辨率图像的生成直接从扩散过程中不切实际。为了克服这个问题,已经提出了几种技术,例如与另一个扩散模型进行放大或在潜在空间中运行扩散过程,其中像素可以通过解码器恢复。基于 GAN 的图像超分辨率模型也可以应用于。在本文中,我们提出了一种新的方法,我们称之为扩散器的混合,它能够在同一画布上同时运行几个扩散过程,所有这些都使用噪声预测神经网络,并协调它们对共享图像生成任务的贡献。与单个扩散模型获得的结果相比,图像显示出与预期组合更好的对齐。 所提出的 Diffusers 方法的混合引入了几个好处: • 每个扩散模型都可以使用不同的提示作用于画布的不同区域,从而允许在图像的特定位置生成对象,或者在样式之间引入空间的平滑过渡。 • 由于所有扩散过程共享相同的神经网络,因此所提出方法的内存占用与受单个扩散过程影响的最大区域所需的内存基本相同。这允许在低内存 GPU 中生成高分辨率图像。 • Diffusers 的混合与 SDEdit 兼容,从而允许将图像的生成与文本提示一起调节,从而允许“图像到图像”和外绘。 • 所提出的方法可以使用任何预训练的扩散模型。即使在潜在空间中工作的扩散模型也可以使用,只要它们允许定义输入空间中的像素与潜在空间中的位置之间的近似映射。 我们现在介绍我们的方法,混合扩散器,作为控制组合的一种方式,并允许在有限的 GPU RAM 消耗下生成大图像。关键思想是利用 D 个噪声预测模型建立全局噪声预测,每个预测使用不同的文本提示 yi,并作用于像素 xt,ri 的不同(矩形)区域,ri = (ai : bi, ci : di) 行的索引 [ai, bi) 和列 [ci, di)。这样,每个模型对整体噪声估计的贡献采用类似于无分类器指导的形式。 在实践中,出于效率原因,所有模型都使用相同的底层噪声预测网络θ。正因为如此,使用多个模型并不一定会导致更大的内存占用,因为只有一个模型加载到内存中,并且可以按顺序进行模型调用。或者,如果有足够的内存可用,所有对θ的调用都可以批处理在一起,以获得更好的GPU效率。该公式的有用性在于允许生成受几个噪声预测模型影响的单个图像,每个模型都由不同的提示指导。这样,通过相应地调整提示,很容易在图像的特定区域定位对象。当每个模型作用于像素空间中的非重叠区域 ri 时,生成的图像本质上是三个独立的扩散模型的输出的串联,并且清楚地观察到每对模型之间的边界,正如人们可能预期的那样。无论权重 wi 的选择如何,这种情况都会发生。然而,提示之间的平滑过渡可以通过不同模型之间的重叠区域ri来创建。对于图 4 中的中心图像,我们配置每个区域 ri 以使用恒定权重 wi = 1(张量完整)将 256 列像素与每个相邻区域 ri-1 和 ri+1 重叠。因此,我们获得了提示之间的平滑过渡,尽管仍然存在一些伪影。这些伪影背后的原因是使用恒定权重 wi = 1。每当像素位于区域 ri 的边界时,它将具有相邻像素,这些像素不再受相应模型的影响,因此它们的整体噪声预测会有清晰的差异。 在潜在扩散模型中处理像素空间的方法。这些模型在压缩到潜在空间之后执行操作,并具有一个解码器函数,将潜在空间中的样本转换为像素空间中的图像。为了将像素空间特定区域 ri 转换为潜在空间中的区域 rl i,建议使用一个简单但有效的映射函数。该映射假设解码器 D 在潜在空间中的每个位置都会产生像素空间中值的 U × U 区域,U 是解码器的放大因子。因此,将像素空间中的索引除以 U,得到在潜在空间中的对应区域。为了避免分数索引,要求画布索引是 U 的倍数。 实验结果将表明这种映射在实践中效果良好,但我们在这里还提供一些直觉上的原因,说明为什么它是一个很好的近似。在潜在扩散模型中,解码器实现为一个卷积神经网络,类似于U-Net的解码部分:一系列块,大多由卷积、激活和规范化层组成,每个块还包括单个上采样操作。例如,稳定扩散[13]使用3个这样的块,每个块包含一个×2的上采样操作,从而产生总的尺度因子 U = 8。关键的是,由于卷积的局部性,对于潜在空间中足够大的区域 rl i,在对应于像素空间的区域 ri 中,大部分像素的值的确仅取决于包含在 rl i 中的值,除了那些接近 ri 边界的像素,它们的值也受到 rl i 之外的潜在因素的影响。但由于在所提出的方法中,ri 边界上的像素要么在画布的边缘,要么也被另一个重叠的区域 rj 覆盖,所以这个问题被平滑了。我们还注意到,大多数现代的U-Net实现都在某些块中包含自注意层,通过这些层,潜在空间中的任何值都有可能影响像素空间中的任何其他值;事实上,在第一个上采样块之前,稳定扩散就包括这样的自注意层在解码器中。我们提出的近似映射忽略了这一事实。然而,实验结果表明,这在实践中似乎并没有问题。 ![047ec5b1f19a12a9090ad432241e929e_9_Figure_5_-475227887.png](https://s2.loli.net/2023/03/13/ZEeuAh8rBwgOCVL.png)


[1] @halomaster • 11 Mar 2023, 04:00 GMT 
Demo https://huggingface.co/spaces/albarji/mixture-of-diffusers


[2] @halomaster • 11 Mar 2023, 05:37 GMT 
![mix1.png](https://s2.loli.net/2023/03/11/QxlBcFZRCAJbn8O.png)


[3] @halomaster • 13 Mar 2023, 00:07 GMT 
类似的项目: https://borrowastep.net/p/multidiffusion-with-tiled-vae-z8eydjcs2


1 of 1 pages  3 replies