问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

AI绘画Stable Diffusion 高清放大,多种方法详解

创作时间:
作者:
@小白创作中心

AI绘画Stable Diffusion 高清放大,多种方法详解

引用
CSDN
1.
https://blog.csdn.net/bagell/article/details/140097212

在Stable Diffusion中,想要得到一张高分辨率且具有细节特征的图片时,就需要使用一些图片放大算法来帮助实现。本文将详细介绍在Stable Diffusion中常用的高清修复方法,包括文生图高清修复、后期处理缩放倍数、图生图放大倍数、Upscale脚本、Tiled Diffusion脚本以及Diffusion+StableSR等技术。通过对比这些方法的优缺点,为读者提供实用的推荐方案和工作流。

几种不同高清修复方法

下面几种方法的测试统一是在墨幽v1040,512*512基础分辨率,20步迭代步数,Restart采样方法下进行。提示词如下(适用于真人图片的起手式):

正面:

best quality, masterpiece, (photorealistic:1),ultra high res,highres, illustration. media, delicate,8k wallpaper,soft light,official art, (realistic:1.2),1girl,

负面:

EasyNegative, paintings, sketches, ugly, 3d, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), skin spots, acnes, skin blemishes, age spot, manboobs, backlight,(ugly:1.3), (duplicate:1.3), (morbid:1.2), (mutilated:1.2), (tranny:1.3), mutated hands, (poorly drawn hands:1.3), blurry, (bad anatomy:1.2), (bad proportions:1.3), extra limbs, (disfigured:1.3), (more than 2 nipples:1.3), (more than 1 navel:1.3), (missing arms:1.3), (extra legs:1.3), (fused fingers:1.6), (too many fingers:1.6), (unclear eyes:1.3), bad hands, missing fingers, extra digit, (futa:1.1), bad body, double navel, mutad arms, hused arms, (puffy nipples, dark areolae, dark nipples, rei no himo, inverted nipples, long nipples), NG_DeepNegative_V1_75t, pubic hair, fat rolls, obese, bad-picture-chill-75v,(without clothes)

一、文生图高清修复

在文生图的界面里,可以在一开始就指定将图片进行放大。在打开高清修复后,会看到以下这些参数。关于这里的放大算法,推荐使用以下一种,(其中Anime6B一般用于二次元风格)

以下是这几种放大算法跑出来的效果图,可以看出来其实差距都很小,对于不同风格的结果会有所区别,对于细节把握比较强的用户可以试试使用xyz脚本(还不知道这个脚本使用的见相关文章)跑出最合适你的参数。

二、后期处理缩放倍数

这个功能说实话使用较少,经过测试对于图片细节的处理不是太理想。不过可以通过其他方法先将图片修复到一定程度后再使用该功能,因为后期处理速度很快,然后扩大无上限。

比如下图,未经过处理和经过处理后的结果:

处理前:

处理后:

那后期处理这块是不是没有用了呢?也不尽然,这里一般可以用来处理照片的裁剪或老照片修复。

三、图生图放大倍数和几个Upscale脚本

方法一:放大倍数

来到图生图界面,缩放模式选择仅调整大小,这里可以修改重绘尺寸或者直接指定重绘尺寸倍数。需要注意的是,因为是基于原图进行处理,所以这里需要固定好seed值以及降低重绘幅度。

刚刚那张照片的处理结果如下:

方法二:使用Sd upscale

打开脚本选择 upscale:

打开以后看到以下几个参数选项,upscale是将一张图片分为多个区块然后进行分别放大,最后再组合起来。这里的分块重叠像素宽度是用来避免最终成像会有明显的接缝,因为是分块绘制嘛,最后还需要拼接的。一般维持默认即可。 不要忘了选择放大算法,否则不会生效。

这个方法使用较少,现在基本也被淘汰了,因为可能出现一些未知的情况。比如下图。为什么会出现这种情况呢,因为它是分区块进行放大的,每个区块就可能按照AI自己的想法加入一些奇奇怪怪的玩意~。结果就不可控了,虽然可以减少区块的大小,但最终的结果可能还是难以预料的。

方法三:使用Ultimate SD upsale

该方法是 Sd upscale 的升级版,也需要额外下载,在扩展中搜索Ultimate就可以看到,安装后记得重启UI界面。

来到图生图界面,使用的还是之前的照片参数,降低重绘幅度和固定种子。然后在脚本中找到 Ultimate SD upsale。

放大前:

放大后:

可以看到效果还不错,在这个脚本里涉及一些参数,有时候需要根据图片的最终成像来进行调整,根据官方的界面,具体说明如下:

  1. 「Target size type」: 定义最终图像的大小来源。
  • 「From img2img settings」: 使用默认的「img2img」宽和高设置。
  • 「Custom size」: 自定义宽高设置,最大值是8192。
  • 「Scale from image size」: 以初始图像大小为基础进行缩放。(大多情况下直接使用这个)
  1. 「Redraw」: 图像重新绘制的设置。
  • 「Linear」: 所有小块逐个、逐行逐列地处理。
  • 「Chess」: 所有小块按棋盘模式处理,这样可以减少接缝产生的几率。(常用选项)
  • 「None」: 禁用重新绘制。如果你看到明显的重叠或接缝上的瑕疵,就使用这个模式。
  • 「Upscaler」: 在重新绘制之前放大图像。推荐使用ESRGAN来增强现实感的图像,对于其他的图像推荐使用R-ESRGAN 4x+。也可以使用4x-ultrasharp
  • 「Type」:
  • 「Tile width/height」: 要处理的小块的宽和高。对于2k图像,512px通常就够了。
  • 「Padding」: 在处理一个小块时,会考虑多少像素的邻近小块。
  • 「Mask blur」: 用于小块蒙版的模糊程度。如果看到接缝,可以适当调整这个值。
  1. 「Seams fix」: 对于结果图像中可见的网格,通常不需要使用它,因为它只是另一种重新绘制方法。
  • 「Bands pass」: 主要处理接缝(行和列),需要的时间比较短。
  • 「Half tile offset pass」: 与重新绘制相似,但有一半的小块偏移。
  • 「Half tile offset + intersections pass」: 先运行Half tile offset pass,然后对交叉点进行额外的处理。
  • 「None」: 禁用接缝修复。
  • 「Type」:
  1. 「Save options」: 保存图像的选项。
  • 「Upscaled」: 默认启用。从Redraw保存图像。
  • 「Seams fix」: 默认禁用。在Seams fix之后保存图像。

这个脚本也可以搭配controlnet的tiled进行使用。细节会更丰富些。

四、Tiled Diffusion脚本

该脚本需要另外下载,一般搭配Tiled Vae一起使用,秋叶启动包自带了。如果没有下载的用户可直接在扩展中搜索下载。 下载后可在文生图和图生图中查看到。

放大的话一般先在文生图中生成一张满意的图片,然后发送到图生图中。不要忘记降低重绘幅度和固定种子。

我们打开脚本,然后点击启用,关于这里的参数设置先保持默认。不要忘记选择放大算法。

对于显存较大的用户可以将 分块单批数量(「Tiled Diffusion Latent tile」)改为8,这样处理的速度会快很多。

这里我们放大两倍,点击生成。效果如下:

其实为了细节的更好处理,可以在这里再加入controlnet tile,效果会更好. 因为cn tile往往会产生更多的细节,MultiDiffusion会更多的修饰原图而缺少足够的细节。两者的适当结合会产生非常好的效果。

可以看出来,人物的真实感更加强烈,且增添了一些细节

上面的图像是在默认的参数下生成的,其实官方有给一些推荐的参数设置,具体如下:

  • Denoising Strength >= 0.75
  • Method = Mixture of Diffusers, Overlap = 8
  • Noise Inversion Steps >= 30
  • CN Tile preprocessor = tile_resample, downsampling rate = 2。

具体修改后的参数如下图(需要注意的是batch size这个参数,如果显存比较小,还是默认1吧):


设置为推荐参数后,再生成结果:

由于篇幅原因,这里不再过多阐述,如果想了解这些参数和其他参数的具体含义,可以查阅官方文档。

五、Diffusion+StableSR

高清放大算法的后起之秀,由南阳理工大学的王建一同学等人开源。需要额外下载,可在扩展中选择从地址下载:https://github.com/pkuliyi2015/sd-webui-stablesr.git

如无法下载,请看文末扫描获取文件

这个脚本的使用还需要几个额外的模型:

  1. https://huggingface.co/stabilityai/stable-diffusion-2-1/tree/main 中下载模型文件,下载完成后放入sd的Stable-diffusion 目录下。sd目录\models\Stable-diffusion
  2. 下载StableSR 模块的模型文件,下载地址为:https://huggingface.co/Iceclear/StableSR/blob/main/webui_768v_139.ckpt
    如无法下载请看文末获取文件
  3. 下载配置vae文件,请看文末扫描获取文件。下载下来后放在 sd目录/models/VAE 目录下。
  4. 官方推荐该脚本和Tiled Diffusion一起使用,这样速度更快,不容易OOM(内存溢出)。所以需要安装Tiled Diffusion插件,这个在上面已经介绍了。

到这里就安装好了,来使用一下它。来到图生图界面,设置好基础参数信息。需要注意的是这个基础参数的设置和前面的方法有所区别,这也是官方推荐的。

选择刚刚下载的checkpoints模型和配套vae。

输入正面词(不输也行)和负面词。

正面:

(masterpiece:2), (best quality:2), (realistic:2),(very clear:2)

负面:

3d,cartoon,anime,sketches,(worst quality:2),(low quality:2),

配置脚本参数:

官方推荐的参数配置如下:

  • 如果生成图像尺寸 > 512,推荐使用 Tiled Diffusion & VAE,否则,图像质量可能不理想,VRAM 使用量也会很大。
  • 这里是官方推荐的 Tiled Diffusion 设置。
  • 方法 = Mixture of Diffusers
  • 隐空间Tile大小 = 64,隐空间Tile重叠 = 32
  • Tile批大小尽可能大,直到差一点点就炸显存为止。
  • Upscaler「必须」选择None。
  • 下图是24GB显存的推荐设置。
  • 对于4GB的设备,「只需将Tiled Diffusion Latent tile批处理大小改为1,Tiled VAE编码器Tile大小改为1024,解码器Tile大小改为128。」
  • SDP注意力优化可能会导致OOM(内存不足),因此推荐使用xformers。
  • 除非有深入的理解,否则「不要」改变Tiled Diffusion & Tiled VAE中的其他设置。「这些参数对于StableSR基本上是最优解」

最终成像如下,可以看到细节感真的不错哈,一些细节可以再做调整,如果需要更丰富就把放大倍数再调大些:

几种方式的优缺点对比:

方法名
优点
缺点
文生图高清修复
图片生成细节良好、操作简便
生成速度一般,占用较大显存
后期处理
生成速度很快,操作简便
几乎0重绘,对于细节的完善不足
图生图放大倍数
生成速度很快,操作简单,细节良好
生成图片细节有限
图生图Upscale脚本
生成速度中等,操作简便
容易生成过多不需要的画面,目前已基本废弃
图生图Ultimate脚本
生成速度中等,细节良好,可搭配cn tile
生成的结果具有一定的随机性,需要对参数有一定了解,进行细微调整
Diffusion+StableSR
几乎完全忠实于原图,细节最佳,最大支持放大8K
操作起来很麻烦,需要下载一些额外的模型,速度也并不快
Diffusion+VAE+cn
细节绝佳,最大支持放大8K
生成速度慢,可能会出现一些不需要的细节(可做调整)

推荐方案和工作流:

对比了这些高清放大算法后,一般可以选择下面几个。其他方法其实经过一些参数的调整也可以生成不错的效果,不过为了稳定和节省时间,可以直接选择下述列出的方法。

  1. 直接在文生图中开启高清修复(显存大的直接开启也无所谓啦) -> 图生图继续利用2、3方法放大(可选) -> 后期处理继续放大(可选)
  2. 在文生图中抽到好卡 -> 发送到图生图 -> 固定种子和降低重绘幅度 -> 打开Tiled Diffision、Tiled Vae -> 打开controlnet,选择tile -> 生成结果 -> 后期处理继续放大(可选)
  3. 在文生图中抽到好卡 -> 发送到图生图 -> 修改模型和vae -> 重新填写正反面提示词 -> 配置Tiled Diffision、Tiled Vae、StableSR -> 生成结果 -> 后期处理继续放大(可选)

几种方法针对不同图片的表现会有所区别,可以都尝试一下,没有最好的方式,只有最适合的方式。

总结

本文主要概述了在Stable Diffusion中常用的高清放大方式和常用工作流,希望对读者有所帮助。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号
AI绘画Stable Diffusion 高清放大,多种方法详解