大家好,我是大师兄
1、引言
“高分放大”(有时候也叫“超分放大”或“高清修复”)描述了在确保图像清晰度的前提下提升图片分辨率的过程。例如,将一张512 x 512的图片放大四倍,得到的就是2048 x 2048分辨率的图片,这个过程不仅放大了图片尺寸,也丰富了图像细节以保持图像清晰度。
在SD webui中,直接生成一张2048 x 2048分辨率的图片由于模型底层机制的限制而变得极其困难。这主要有以下3个原因:
1、显存限制: 与512 x 512相比,2048 x 2048的像素点数量增长16倍,生成图片所需的内存也随之增长16倍。基本上,运行SD webui会占用约3G的显存,处理512 x 512分辨率的图像,显存使用将增加约1G。因此,若要直接生成2048x2048的图片,需要约20G的显存,而当前主流显卡通常只配备8G甚至4G的内存,无法支撑生成高分辨率图片。
2、时间限制: 随着显存使用的增加,生成时间也会以指数级别增长,达到正常时间的16倍!
3、模型限制: 用于训练模型的图片分辨率最高为768 x 768,直接生成过高分辨率的图片可能会导致模型产生重复元素的图片,如重复的人物或头部等。
因此,若想获取一张高分辨率的图片,通常需要进行以下步骤:
1、生成一张低分辨率的图片,例如512 x 512、768 x 512、或512 x 768。
2、然后选择合适的方法放大图片。
下面正式开始介绍本期的内容。
2、插件下载和安装
想要使用高分放大功能,需要借助一些插件的帮助。如果你打算按照这个教程进行操作,那么我建议你安装以下插件。每种插件都提供了三种安装方法,请根据需要自行选择。
1、Ultimate SD Upscale 插件安装
Ultimate SD upscale(终极SD放大) 与 SD webui 内置的放大插件类似,只是 Ultimate SD Upscale 插件提供了更多高级选项。
安装该插件的方法有以下3种。
其中第1种和第2种需要魔法,第3种国内网络即可完成
1)通过SD webui 内部安装
① 打开SD webui,点击 extensions(插件),点击 install from URL(从网址安装)
② 在第一行框内输入:https://github.com/Coyote-A/ultimate-upscale-for-automatic1111 (注意需要科学上网)
③ 点击 install(安装)
④ 等待安装完成,然后重启SD webui
⑤ 如果安装成功,你可以在 img2img 标签页的 script(脚本)框的下拉菜单中找到该插件。
2)手动安装
① 下载 Ultimate SD upscale 原文件,下载地址有以下两个,选择其中一个下载:
从 github 下载:https://github.com/Coyote-A/ultimate-upscale-for-automatic1111/archive/refs/heads/master.zip
(如无法下载,请看文末扫描获取)
② 解压文件,并将 ultimate-upscale-for-automatic1111 文件夹转移到 stable-diffusion-webui\extensions 路径下
③ 重启 SD webui,如果安装成功,你可以在 img2img 标签页的 script(脚本)框的下拉菜单中找到该插件。
2、ControlNet 插件安装及模型下载
ControlNet 是 SD webui 中功能非常强大的插件,提供了许多控制图片生成效果的方法。在这个教程中我将利用 ControlNet 对图片进行高分放大。
sd webui 的插件安装基本都是异曲同工的,安装步骤完全相同,因此下面的安装方法将不再配图。
手动安装
① 下载 ControlNet 原文件,下载地址有以下两个,选择其中一个下载:
从 github 下载:https://github.com/Mikubill/sd-webui-controlnet/archive/refs/heads/main.zip (如无法下载,请看文末扫描获取)
② 解压文件,并将 sd-webui-controlnet 文件夹转移到 stable-diffusion-webui\extensions 路径下
③ 重启 SD webui,如果安装成功,你可以在 txt2img 标签页中找到该插件。
ControlNet 模型下载:
不同于其他插件,ControlNet 的运作还需要下载它独有的模型。
① 打开ControlNet 模型下载地址:https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main (如无法获取请看文末扫描获取)
② 此网址包含了所有可下载的 ControlNet模型,你可以下载所有 .pth 结尾的文件,但这个教程只会使用到其中的 tile 模型,该模型下载链接:https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11f1e_sd15_tile.pth,你也可以只下载这个模型,后续有需要再下载其它模型。
③ 将下载的模型放在 stable-diffusion-webui\extensions\sd-webui-controlnet\models 目录下
④ 重启 SD webui,如果安装成功,你应该可以在如下位置找到 tile 模型
生成输入图片
图片的生成参数如下:
模型:ChilloutMix
模型下载链接:
https://huggingface.co/swl-models/chilloutmix/resolve/main/Chilloutmix-non-ema-fp16.safetensors
(如无法下载请看文末扫描获取)
下载的模型移动到 stable-diffusion-webui\models\Stable-diffusion 路径下。
图片生成参数:
Prompt(正向提示词):raw photo, high quality, 1 girl, young, (detailed clear eyes:1.2), radiant skin, white dress, pink short hair, swept bangs, (collorbone:1.1), slim, perfect nose, (pink lip:1.1), highly detailed, flowering land as background, expansive view, upper body, sunlight, side light, (cinematic lighting:1.1), bright color, dramatic, fantasy, stunningly beautiful,8k, uhd,
Negative prompt(反向提示词):nsfw, naked, asymmetric eyes,out of frame, abnormal face, ugly, deformed, distorted, (easynegative:1.2), low contrast, (Pale skin:1.2),open mouth
其它参数:
Sampling method(采样方法):DMP++ 2M Karras
Sampling steps(采样步数):20
Size(尺寸):768 x 512
CFG scale(CFG值):7
Seed(种子):4263532296
Clip skip:2
获得如下图片:
下面的示例都将以此图作为输入进行测试。
高分放大方法
1、Hires. Fix
这个高清修复的方法我简单概述一下这个方法的优缺点:
缺点: 这种方法对显存的占用较高,处理时间较长,且会放大生成的每一张图片。然而,有些图片可能并无需放大,因此这种方法的效率偏低,不是特别推荐使用。(以我的4G显存为例,是无法运行的,高显存请随意)
优点: 有独有的放大算法
接下来,我们将深入探讨另外三种高清修复的方法。
2、AI Upscaler(AI放大法)
AI放大法是 SD webui 中非常基础的一种高分放大方法,操作最简单。这种方法需要使用到AI 放大模型,在 SD webui 中已经内置了几种AI放大模型,如 4xESRGAN、R-ESRGAN 4x+ 和 Lanczos 等等。
更多AI放大模型可以从这个网址下载:https://upscale.wiki/wiki/Model_Database
将下载的模型放在 stable-diffusion-webui/models/ESRGAN 路径下即可。
下面介绍操作步骤。
① 进入 SD webui,点击 Extra(后期处理)标签页
② 拖拽或者上传一张照片到图片框内
③ 改变 Scale by 下的 Resize(调整大小)可以调整放大倍率,默认4倍即可。Scale to 可以放大图片到指定大小
④ 在 Upscaler 1(放大算法1)的下拉菜单中选择 4xESRGAN 4x+,Upscaler 2(放大算法2)选择 4x_CountryRoads_377000_G(这个模型需要自行安装),Upscaler 2 visibility(放大算法2能见度)设置为0.5。由于这张图片的人脸正常,其它设置保持默认
⑤ 点击 Generate(生成),生成图片如下
先来对比一下脸部细节
完全保留了原图的该有的样子,而且清晰度提升非常显著,保留了人脸皮肤的质感。但是会产生一些不太自然的现象,比如眼睛部分,瞳孔模糊,眼角异常。
再来看看其他衣服细节:
可以看出,使用AI放大法对图片进行高分放大后的效果是相当不错的,能够完全保留原图信息,而不做更改。
总结一下AI放大的优缺点
优点: 处理时间非常短,占用内存少,不改变原图的内容
缺点: 有较为明显的人工痕迹,且无法处理瑕疵
使用技巧:
1、多试几个放大算法,选择最合适的
2、如果内置的放大算法不能满足你的要求,那么可以下载新的放大算法。
3、Ultimate SD Upscale(终极SD放大法)
在使用AI放大法的时候,可以观察到,放大后的结果是完全忠于输入的图像的,也就是说当你觉得生成的图片已经足够完美了,你不想有任何一点点改动,那么AI放大法是一个很好的高分放大法。
但是如果生成的图片不是那么完美,你希望在放大的时候对其稍微改善,那么终极SD放大法会是一种很不错的方法。
操作步骤:
① 在 txt2img 标签页,点击send to img2img。如果是存在本地的图片,那么先上传到 PNG info 界面,然后再点击 send to img2img。
② 设置 Denoising strength(重绘幅度)为0.25。此值需要根据实际情况选择数值。如果不想让图片有过多的变化,可以使用0.1-0.2的重绘幅度。重绘幅度越大,图片的变化越大,但不能超过0.5。其它保持默认设置,设置好后的界面如下
③ 在 script(脚本)框内选择 Ultimate SD Upscale,其它设置按照下图方式设置
④ 保持 tile width 为512,tile height 为0,此设置会使图片按512x512的大小分别处理
⑤ 点击 Generate(生成),生成图片如下
先来看看脸部细节
效果还是相当不错的,会去除一些瑕疵,比如人脸上的痣,瞳孔也更正常。不过磨皮效果有点过强了,同时眼角还是有点泛白。
再来看一下衣服细节:
总的来说 Ultimate SD Upscale 插件的效果非常不错。在处理复杂图片信息时,终极SD放大法的效果会更为突出
总结一下优缺点
优点: 能够简单处理瑕疵,与SD放大法相比能够添加更多的细节。
缺点: 处理时间相比AI放大法更长,对瑕疵的处理程度还不够强
4、ControlNet tile upscale(瓦片放大法)
这种高分放大方法为进阶方法,需要 ControlNet 和 Ultimate SD Upscale 两种插件的共同参与。
瓦片放大法具有两个比较突出的优点:1、能给原始图片添加更多的细节;2、显存占用低,因此可以绘制分辨率更高的图。
具体的操作步骤如下:
① 在 txt2img 标签页,点击send to img2img。如果是存在本地的图片,那么先上传到 PNG info 界面,然后再点击 send to img2img。
设置 Sampling steps(迭代步数)为20,如果要添加更多细节,可以适当增加迭代步数
设置 Denoising strength(重绘幅度)为0.4,值越大图片的变化越大,反之亦然
打开 ControlNet 界面,将待处理图片上传上去
② 勾选上 Enable(启用),显存小的显卡勾选 Low VRAM(低显存模式),勾选Pixel perfect(完美像素模式)
③ Preprocessor(预处理器)选择 tile_resample(分块重采样)
④ Model(模型)选择 control_v11f1e_sd15_tile,设置好后的界面如下:
⑤ Script(脚本)选择 Ultimate SD upscale,其它设置如下
⑥ 点击 Generate(生成)
先来看看脸部细节对比
只能说效果相当炸裂!注意下眼皮的纹理,瞳孔的纹理,嘴唇的褶皱,细节完全拉满!
再看一下衣服细节
总结一下优缺点
优点: 给图片添加更多细节,是三种方法中效果最好的
缺点: 处理时间更长,是三种方法中最长的
5、总结
下面综合对比以上三种方法生成的效果
人脸部分:
衣服部分:
以下是我对三种方法的个人打分,相对直观的反应了3种高分放大方法的使用体验。
总的来说,无论是使用 Ultimate SD upscale 还是 ControlNet + Ultimate SD upscale 进行放大,其处理时间都会远远大于AI放大法,相应的效果也会更好。而普通的SD放大能真实的还原图片原本信息,不做修改,而且处理时间很短,但也意味着会放大图片本身存在的下次。
具体应该选择哪种方法,就需要根据个人情况自行选择了。
好啦,本期的内容到这里就结束了!