StableSR for Stable Diffusion WebUI
在 S-Lab License 1.0 许可下发布
英语|中文
- StableSR 是由 Jianyi Wang 等人最初提出的一种具有竞争力的超分辨率方法。
- 该仓库是 StableSR 项目向 Automatic1111 WebUI 的迁移。
相关链接
点击查看高质量的官方示例!
如果你觉得这个项目有用,请给我和 Jianyi Wang 点个星星!⭐
重要更新
- 2023.07.01: 我们偶尔发现适当的负面提示词可以显著增强 StableSR 的细节。
- 我们使用 CFG Scale=7,负面提示词如下:3d, 卡通, 动漫, 素描, (最差质量:2), (低质量:2)
- 点击 comparison1 查看负面提示词的强大效果。
- 正面提示词作用不大,但也有帮助。你可以尝试 (杰作:2), (最佳质量:2), (逼真:2), (非常清晰:2)
- 通过上述提示词,我们尽力接近闭源项目 GigaGAN 的质量(尽管我们的效果仍然不如他们的演示)。点击 comparison2 查看我们目前在 128x128->1024x1024 放大方面的能力。
- 2023.06.30: 我们很高兴发布新的 SD 2.1 768 版本的 StableSR!(感谢 Jianyi Wang)
- 它生成的细节量相似,但伪影明显减少且颜色更好。
- 它支持 768 * 768 的分辨率。
- 要享受新模型:
- 使用 SD 2.1 768 基础模型。可以从 HuggingFace 下载
- 对应的 SR 模块 (~400MB):官方资源, 我的百度网盘-提取码8ju9
- 现在你可以在 Tiled Diffusion 中使用更大的平铺大小 (96 * 96,与默认设置相同),速度可能略快。
- 其他设置保持不变。
- Janyi Wang 持续尝试训练更强大的 SR 模块,适用于 AIGC 图像。这些模型将稍后在 SD2.1 768 或 SDXL 上进行调优。
特点
- 高保真详细图像放大:
- 非常详细,同时保持角色的面部识别度。
- 适用于大多数图像(写实或动漫,摄影或 AIGC,SD 1.5 或 Midjourney 图像...)官方示例
- 更少的显存消耗
- 我移除了官方实现中耗费显存的模块。
- 剩余的模型比 ControlNet Tile 模型小得多,所需显存也更少。
- 当与 Tiled Diffusion 和 VAE 结合时,你可以在有限的显存(如 <12GB)下进行 4k 图像超分辨率。
请注意,sdp 可能会因某些未知原因导致 OOM。你可以使用 xformers 替代。
- 小波颜色修正
- 官方 StableSR 会显著改变生成图像的颜色。该问题在平铺放大时会更加突出(已合并到官方仓库)。
- 我实现了一种强大的后处理技术,可以有效地将放大后的图像颜色匹配到原始图像。查看 小波颜色修正示例。
使用方法
1. 安装
⚪ 方法1:官方市场
- 打开 Automatic1111 WebUI -> 点击 "Extensions" 标签 -> 点击 "Available" 标签 -> 找到 "StableSR" -> 点击 "Install"
⚪ 方法2:URL 安装
- 打开 Automatic1111 WebUI -> 点击 "Extensions" 标签 -> 点击 "Install from URL" -> 输入 https://github.com/pkuliyi2015/sd-webui-stablesr.git -> 点击 "Install"
2. 下载主要组件
我们目前有两个版本。它们的细节量相似,但 768 版本的伪影较少。
🆕 SD2.1 768 版本
-
你必须使用 Stable Diffusion V2.1 768 EMA 检查点 (~5.21GB) 来自 StabilityAI
- 可以从 HuggingFace 下载
- 放入 stable-diffusion-webui/models/Stable-Diffusion/
-
下载提取的 StableSR 模块
- 官方资源
- 将 StableSR 模块 (~400MB) 放入 stable-diffusion-webui/extensions/sd-webui-stablesr/models/ 文件夹中
SD2.1 512 版本(更锐利,但伪影更多)
-
你必须使用 Stable Diffusion V2.1 512 EMA 检查点 (~5.21GB) 来自 StabilityAI
- 可以从 HuggingFace 下载
- 放入 stable-diffusion-webui/models/Stable-Diffusion/ 文件夹中
-
下载提取的 StableSR 模块
- 官方资源: HuggingFace (~1.2 G)。注意这是一个包含 StableSR 模块和 VQVAE 的 zip 文件。
- 我的资源: <GoogleDrive> <百度网盘-提取码aguq>
- 将 StableSR 模块 (~400MB) 放入 stable-diffusion-webui/extensions/sd-webui-stablesr/models/ 文件夹中
虽然我们使用 SD2.1 检查点,但你仍然可以放大任何图像(即使是来自 SD1.5 或 NSFW 的图像)。你的图像不会被审查,输出质量也不会受到影响。
3. 可选组件
- 安装 Tiled Diffusion & VAE 插件
- 原版 StableSR 在处理大于 512 的大图时容易出现 OOM(内存不足)问题。
- 为了获得更好的质量和更低的显存占用,推荐使用 Tiled Diffusion & VAE。
- 使用官方 VQGAN VAE
- 官方资源:见上面第 2 点的链接。
- 我的资源:GoogleDrive 百度网盘-提取码83u9
- 将 VQVAE(约 700MB)放入 stable-diffusion-webui/models/VAE 文件夹下
4. 插件使用
- 在 WebUI 顶部,选择你下载的 v2-1_512-ema-pruned 检查点。
- 切换到 img2img 标签页。在页面底部找到 “Scripts” 下拉菜单。
- 选择 StableSR 脚本。
- 点击刷新按钮,选择你下载的 StableSR 检查点。
- 选择一个缩放因子。
- 推荐使用 Euler a 采样器。CFG Scale=7,Steps >= 20。
- 虽然 StableSR 可以在不使用提示词的情况下工作,但我们最近发现负提示词可以显著改善细节。示例负提示词:3d、卡通、动漫、素描、(最差质量:2)、(低质量:2)
- 点击查看 有/无正/负提示词的比较
- 对于输出图像尺寸 > 512,我们推荐使用 Tiled Diffusion & VAE,否则图像质量可能不理想,并且显存占用会非常大。
- 以下是官方推荐的 Tiled Diffusion 设置:
- 方法 = Diffusers 混合
- 对于 StableSR 768 版本,你可以使用 Latent tile size = 96,Latent tile overlap = 48
- 对于 StableSR 512 版本,你可以使用 Latent tile size = 64,Latent tile overlap = 32
- Latent tile 批处理大小设置为尽可能大,直到出现内存不足为止。
- Upscaler 必须为 None(这里不进行放大操作;放大操作在 StableSR 中进行)。
- 方法 = Diffusers 混合
- 下图显示了推荐的 24GB 显存设置。
- 对于 6GB 显存的设备,只需将 Tiled Diffusion Latent tile 批处理大小更改为 1,Tiled VAE 编码器瓦片大小更改为 1024,解码器瓦片大小更改为 128。
- SDP 注意力优化可能导致内存不足。如果出现这种情况,请使用 xformers。
- 除非你有非常深入的理解,否则你不需要更改 Tiled Diffusion & Tiled VAE 中的其他设置。这些参数对于 StableSR 来说几乎是最优的。
5. 选项解释
- 什么是 “纯噪声”?
- 纯噪声指的是从完全随机的噪声张量开始,而不是从你的图像开始。这是 StableSR 论文中的默认行为。
- 启用此选项时,脚本将忽略你的去噪强度,并生成更详细的图像,但也会显著改变颜色和锐度。
- 禁用此选项时,脚本将从你的图像中添加一些噪声开始。即使将去噪强度设置为 1,结果也不会完全详细(但可能在美学上更好)。查看 比较。
- 如果你禁用纯噪声,我们建议将去噪强度设置为 1。
- 什么是 “颜色修复”?
- 这是为了解决 StableSR 和拼接过程中出现的颜色偏移问题。
- AdaIN 只是调整原始图像和结果图像之间的颜色统计数据。这是官方算法,但在许多情况下效果不佳。
- 小波算法将原始图像和结果图像分解为低频和高频部分,然后用原始图像的低频部分(颜色)替换结果图像的低频部分。这在解决不均匀的颜色偏移问题上非常强大。该算法来自 GIMP 和 Krita,每张图像将耗时几秒钟。
- 启用颜色修复时,原始图像也会显示在预览窗口中,但不会自动保存。
6. 重要通知
为什么我的结果与官方示例不同?
- 这不是你的错或我们的错。
- 如果正确安装,该插件将使用与 StableSR 相同的 UNet 模型权重。
- 如果你安装了可选的 VQVAE,整个模型权重将与官方模型在融合权重=0 时相同。
- 但是,你的结果将 不如 官方结果,因为:
- 采样器差异:
- 官方仓库使用 100 或 200 步的传统 DDPM 采样,并使用自定义时间步调度器,且不使用负提示词进行采样。
- 然而,WebUI 不提供此类采样器,必须使用负提示词进行采样。这是主要区别。
- VQVAE 解码器差异:
- 官方 VQVAE 解码器将一些编码器特征作为输入。
- 然而,在实际操作中,我发现这些特征对于大图像来说非常庞大。(即使在 float16 下,4k 图像也可能超过 10GB!)
- 因此,我移除了 VAE 解码器中的 CFW 组件。由于这导致细节保真度下降,我将尝试在以后作为选项重新添加。
- 采样器差异:
许可证
该项目使用以下许可证:
免责声明
- 本插件中的所有代码仅供研究用途。
- 严禁将代码和检查点用于商业用途。
重要的结果图像通知
- 请注意,S-Lab License 1.0 禁止商业使用结果图像。
- 如果你希望加快此过程以用于商业目的,请通过电子邮件联系他:iceclearwjy@gmail.com
引用
如果我们的工作对你的研究有帮助,请考虑引用:
@article{wang2024exploiting,
author = {Wang, Jianyi and Yue, Zongsheng and Zhou, Shangchen and Chan, Kelvin C.K. and Loy, Chen Change},
title = {Exploiting Diffusion Prior for Real-World Image Super-Resolution},
article = {International Journal of Computer Vision},
year = {2024}
}
致谢
我想感谢王建义等人提出了原始的 StableSR 方法。