Clarity AI 图像放大器复现

社区文章 发布于 2024 年 7 月 30 日

几个月前,philz1337x 发布了一款名为 Clarity Upscaler 的开源图像放大器/增强器软件。这个创新工具利用 Stable Diffusion 1.5 并采用先进技术取得了令人印象深刻的效果。出于对其能力的兴趣,我们使用 Refiners 库对其进行了复现。我们 (finegrain) 的目标是创建一个更易于使用和更具可定制性的版本,以便集成到各种项目中。

深入探索!

图像放大器还是图像增强器?保真度与质量的权衡

Clarity AI 图像放大器是一个混合工具,兼具放大器和增强器的功能。它利用 Juggernaut 微调模型,通过部分去噪过程重新创建图像细节。这种方法通常被称为“图像到图像”处理,而非“文本到图像”生成,尽管本质上是相同底层过程的一种变体。这种方法有时会引入原始图像中不存在的新细节,这可能对某些应用程序造成问题。在使用此工具时,保真度与质量之间的权衡是一个关键考虑因素。

为了说明每个步骤的效果,我们将使用来自 Kara EadsUnsplash 上的以下图像,我们将其缩放至 768x512 并应用了轻微模糊以模拟低分辨率图像。

Original Image
来源:https://unsplash.com/fr/photos/salon-L7EwHkq1B2s
Low-Resolution Image
原始图像的缩放和模糊版本

此过程中的一个关键参数是 Clarity AI Upscaler 所称的“创意度”,即扩散强度。此参数控制重建现有细节与生成新内容之间的平衡。让我们探讨不同扩散强度如何影响输出。

这是 Clarity 的默认设置,结果与原始图像非常相似,尽管您可以看到一些细节已被更改。

Diffusion Strength of 0.35
扩散强度为 0.35
Diffusion Strength of 0.5
扩散强度为 0.5

在 0.6 的扩散强度下,结果图像与原始图像非常不同,不能被认为是原始图像的忠实再现。

Diffusion Strength of 0.6
扩散强度为 0.6

扩散强度的选择代表了保真度(对原始图像的忠实度)和质量(引入新细节)之间的权衡。找到正确的平衡对于实现最佳结果至关重要。

针对大图像

朴素放大

生成大图像最直接的方法是在应用增强过程之前对低分辨率版本进行上采样。虽然这会初步降低图像质量,但增强器随后会致力于在大图像中重建细节。

Naive Upscaling Enhanced
朴素放大 2 倍,然后增强

但是我们很快就面临模型限制。它并非为处理大图像而设计,并且难以在 2k 图像中重建细节。事实上,Stable Diffusion 1.5 的 Juggernaut 微调模型是在最大分辨率约为 1k 的图像上训练的。此外,所需的内存与图像尺寸呈二次方关系,因此处理 2k 图像所需的内存大约是 1k 图像的 4 倍。

用于更大图像的多重扩散

我们实现了 MultiDiffusion 论文中介绍的平铺扩散过程,以克服处理大图像的限制。这种创新技术包括:

  1. 将图像分割成可管理的图块。
  2. 单独增强每个图块。
  3. 通过在每个去噪步骤中混合重叠区域,将增强后的图块重新合并在一起。

这种方法允许模型专注于每个图块内的细节,同时不失整体结构。Clarity 使用 896x1152 像素的图块,但您可以调整和实验此参数。较小的图块倾向于更积极地增强细节,有时会牺牲整体图像的连贯性,并产生原始图像中不存在的细节幻觉。图块大小参数在 Clarity AI Upscaler 中被称为“分形度”,以反映使用较小图块会使扩散生成更小的复杂细节。

MultiDiffusion Tiles
用于多重扩散的图块
Naive Upscaling Enhanced
朴素放大 4 倍,然后用多重扩散增强

高级放大:增强起点

我们可以使用专门的模型进行初始放大,以进一步改善结果,而不是使用简单的算法。Clarity 管道采用 4x-UltraSharp ESRGAN 模型,该模型经过训练可将图像放大 4 倍,并产生异常清晰的结果。然而,由于许可限制,我们在复现中选择了原始开源 ESRGAN。虽然结果可能略微不那么清晰,但它们仍然显著改进了朴素的放大方法。

ESRGAN Upscaling Enhanced
ESRGAN 放大 4 倍
ESRGAN Upscaling Enhanced
ESRGAN 放大 4 倍,然后用多重扩散增强

对于那些有兴趣比较各种放大模型的人,我们推荐 Philip Hofmann 优秀的 交互式放大模型视觉比较

生成新细节:Tile ControlNet

为了进一步改善我们的结果,我们整合了由著名 Lvmin 开发的 ControlNet Tile。这个强大的工具具有两个关键功能:

  1. 它在忽略图像中现有细节的同时生成新细节。
  2. 它强制执行原始图像的全局结构。

这个 ControlNet 的强度被恰当地命名为“相似度”,因为它决定了输出与原始图像结构的紧密程度。ControlNet 使用参考图像来引导扩散过程;在我们的案例中,我们使用目标图像的预放大版本作为引导。通过将 ControlNet Tile 应用于每个 MultiDiffusion 图块,我们在细节增强和结构完整性之间实现了平衡。

Low-Resolution Image
High-Resolution Image
来源:https://huggingface.co/lllyasviel/control_v11f1e_sd15_tile/tree/main/images

当 MultiDiffusion 输出看起来过于平滑且缺乏纹理时,ControlNet Tile 会为图像添加更清晰、更详细的外观。

Adding ControlNet Tile to 4x upscaling
ControlNet Tile 添加到 4 倍放大
ControlNet Tile Comparison
有 ControlNet Tile(右)和无 ControlNet Tile(左)的 MultiDiffusion 比较

为获得最佳结果进行最终调整

为了进一步提升输出质量,需要 Clarity AI 提供的这些额外技术:

ControlNet 尺度衰减

我们实现了一个类似于 SD-Webui 的“控制模式”选项(设置为“提示更重要”)的功能,该功能应用 0.825 的指数衰减因子,从最后一个块开始向第一个块减少 ControlNet 的影响力。这种细微的调整允许模型创造性地重建细节,同时保持结构引导。

区别很微妙但很明显。没有衰减的 ControlNet Tile 往往会过度处理并产生不必要的细节幻觉,而衰减版本则有助于修复破损的细节并使图像看起来更自然。

ControlNet Tile with no Decay
无衰减的 ControlNet Tile
ControlNet Tile with a 0.825 Decay
衰减系数为 0.825 的 ControlNet Tile
Decay comparison
ControlNet Tile 有无衰减的比较

利用 LoRA 和负向嵌入

我们整合了 Clarity 选择的两个关键 LoRA(低秩适应)来增强我们的基础模型:

  • SDXLrender:这个 LoRA 解决了 Stable Diffusion 1.5 相较于 Stable Diffusion XL 生成模糊图像的倾向。
  • 添加更多细节:这个 LoRA 增强图像细节,确保我们的输出尽可能清晰。

此外,我们使用 Juggernaut 负向嵌入 来进一步完善我们的结果。这项技术优化了添加到负向提示中的新“词”的表示,从而提高了输出质量。

Without LoRAs or Negative Embedding
无 LoRA 或负向嵌入
LoRAs and Negative Embedding Enhanced Image
LoRA 和负向嵌入增强图像

多阶段放大

正如 Clarity 管道所做的那样,我们对大幅放大(例如 4 倍或 8 倍)采用多阶段放大过程。我们不尝试一次性大幅放大,而是执行多次小幅放大(通常每次 2 倍)。这种多阶段过程允许模型在每个阶段专注于细节,同时不失整体结构。此外,每个阶段的扩散强度会降低 20%,以防止在后期阶段产生过多的创造性导致纹理幻觉。

Multi-Stage Upscaling x8
多阶段放大 8 倍

总结

通过仔细复现,我们使用 Refiners 库创建了一个独立的 Clarity AI Upscaler Python 版本,它提供了高质量的结果和更大的灵活性,可集成到各种项目中。通过理解和实施这些先进技术,我们可以突破图像增强和放大的界限,为视觉内容创作和修复开辟新的可能性。

以下是 Clarity AI Upscaler 的 Replicate Space 默认参数输出与我们基于 Refiners 的复现的并排比较。

Clarity AI Upscaler (left) vs Refiners Reproduction (right)
Clarity AI 图像放大器(左)与 Refiners 复现(右)

两个输出之间仍然存在一些差异。以下是一些可能的原因:我们无法复现 Clarity AI Upscaler 的随机状态,因此结果可能会因此略有不同;此外,Clarity AI Upscaler 的输出看起来更清晰,对比度更高,但比我们基于 Refiners 的复现看起来更不自然。

请继续关注关于如何使用和扩展这个新工具的详细指南,我们很快将在 Refiners 的文档中发布。

社区

注册登录 发表评论