StableDiffusion教程!用好这2个插件,小显存也能高效批量放大

文章目录

  • 一、关于教程
  • 二、教程分享
  • 01 前言及插件安装
  • 02 Tiled Diffusion和Tiled VAE参数详解
  • 03 批量放大

一、关于教程

我最近的工作中经常会用SD批量生图并且放大,所以今天打算分享一下Tiled Diffusion和Tiled VAE插件结合ControlNet进行批量放大的流程。

需要提醒大家的是,这个流程是我目前感觉比较适合自己的一套操作流,但由于每个人的硬件配置以及实际情况都不同,所以各位鹿友就针对性的了解即可。

另外关于Tiled Diffusion和Tiled VAE插件中的一些参数,网上包括插件作者本身好像也介绍的比较模糊,所以我这里分享的只是个人理解,如有不正确的地方,欢迎友善交流。

二、教程分享

01 前言及插件安装

首先说一下Tiled Diffusion放大的原理,它和文生图中的高清修复类似,本质其实是重绘。

区别在于它是分区块绘制,这样可以大大降低显存的压力:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

图片来源:

https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111/blob/main/README_CN.md

而结合作者的原创算法Tiled VAE插件,能进一步降低显存的消耗,并且它还可以单独结合文生图的高清修复使用:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

接下来再说一下安装,在安装插件之前,大家可以把我分享的这个叫4x-UltraSharp的文件放到SD安装目录models\ESRGAN这个路径里。

这是目前网上普遍比较认可的一种放大算法,在使用插件放大的时候会让你选择算法,我通常都选择的是它:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

插件安装和普通的插件方法一样,直接在扩展里搜索Tiled点安装就可以了,安装完毕以后记得重启WebUI:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

或者你也可以通过离线压缩包安装,离线压缩包我文后也会分享给大家:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

安装成功之后在文生图以及图生图界面就可以找到Tiled Diffusion和Tiled VAE插件了:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

02 Tiled Diffusion和Tiled VAE参数详解

插件分两个部分,首先是Tiled Diffusion,打开Tiled Diffusion并且激活它,勾选保持输入图像尺寸,这样上方的尺寸设置就失效了。

会以你输入的图像尺寸为基础进行放大,因此即使你要批量放大的图像尺寸不同也可以同时操作:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

接下来是两种平铺算法,MultiDiffusion和Mixture of Diffusers,我个人的理解是前者更适合重绘,而后者更适合放大,我自己通常会选择MultiDiffusion:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

接下来四个参数是潜变量分块的宽高度,重叠以及批处理规模,前面我们提到了Tiled Diffusion放大是分块重绘的。

分块的宽高度决定着分块的大小,数值越大,效果越好,速度越快,默认参数是96,插件作者建议最高128。

重叠是指的分块与分块之间的重叠大小,数值越大,接缝越少,速度越慢。插件作者建议MultiDiffusion 时选择32或48,使用 Mixture of Diffusers 选择16或32。

而批处理规模指的是同时绘制分块的数量,数量越多速度越快,但分块数量太多对显卡缓存的占用是很大的,当缓存吃紧的时候,反而有可能速度会变慢,如果你是24G的显卡,可以尝试数值为8。

我通常的设置为分块宽高128,重叠32,批处理规模默认4:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

放大算法如果大家安装了我前面分享的4x-UltraSharp,就可以选它,当然你也可以选择自己常用的算法。

缩放系数就是放大多少倍,如果你勾选了上方的保持输入图像尺寸,那么它就会在原图尺寸的基础上放大:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

基本参数介绍到这里,剩下的参数我觉得一边演示一边解释会比较好,我事先生成了一张分辨率为1024*768的图:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

把它载入图生图中,选择一个比较主流的大模型,正向提示词中只需要输入有关画面质量的提示词即可,负向提示词也同样:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

前面我们说过了,Tiled Diffusion的本质是重绘,重绘幅度太高会导致画面改变,因此我这里重绘幅度0.4,CFG为7。

先对比一下两种平铺算法,这里我固定住了随机种子。

激活Tiled Diffusion,先试试MultiDiffusion吧,放大算法为4x-UltraSharp,放大2倍,大概是一个2K级别的分辨率,其他参数默认:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

我用的云桌面显卡是A4000,缓存16G,可以看到放大到2K,耗时52.9秒,显存占用率百分之百:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

让我们再切换成Mixture of Diffusers放大后看看对比,可以看到两种算法都能在一定程度上修复小图不合理的地方,其实很难评判哪一个更好:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

Tiled Diffusion下面还有一个噪声反推的选项,

它会在根据SD运算时的Noise进行反推,让生成的图更加接近原图,但是会消耗更多的时间。

经常会调整的两个参数是反推步数以及重噪声强度,如果你生成的图比较模糊可以尝试提高反推步数。

至于Retouch以及Renoise kernel size这两个参数插件作者没有任何介绍,我们就暂且略过吧:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

再次生成看看,耗时变成了1分4秒:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

通过对比图可以看到画面明显变得清晰了,噪声反推这个功能通常会让画面磨皮缺少细节。

而高重绘幅度下使用ContrlNet的Tile模型通常又会产生过多细节而导致画面杂乱。

因此插件作者推荐是将两者结合一起使用:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

Tiled Diffusion还有一个分区控制板块,它可以创建画布融合多个区域进行大图绘制。

这个功能我没有用过,由于今天主要是分享放大,这个功能我们以后有机会再测试分享吧:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

再接下来是Tiled VAE,这是插件作者原创的算法,可以大幅度降低对显存的消耗。

作者介绍是不需要过多调试,插件会根据你的配置自动匹配适应的参数:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

而经过我的实际测试,这个默认参数至少在A4000显卡16G缓存的配置上并不是很合理。

可以看到生成一张图缓存占用还是百分之百,并且当你要生成更大分辨率的图时,很容易就卡死:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

我自己常用的尺寸是1024和96:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

可以看到缓存占用不到百分之60了,并且放大的时间也缩短了:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

前面我们提到了作者推荐搭配ContrlNet的Tile使用,这里我们就打开ContrlNet的Tile模型,其他参数默认。

为了防止细节过多,我们可以把这个下行采样率略微提高一点:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

生成以后看看对比图,好像现在画面还是有点杂乱:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

没关系,我们可以进一步提高噪声反推的步数,比如我这里提高到了30,可以看到现在需要接近2分钟:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

通过对比图可以看到画面要好多了:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

由于我们打开了ControlNet,因此即使重绘幅度很高,也能维持画面整体基本不变:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

下面是重绘幅度0.4和0.75的对比图:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

另外插件作者有提到提高CFG值也可以进一步提高画面的细节,比如我这里将CFG值改为14:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

以下是CFG数值7和14的对比图:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

Tiled Diffusion和Tiled VAE插件的参数基本就是这些,再来看看一顿操作后原图和最终图的对比吧:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

今天文中的高清对比图,我文后也会分享给大家做参考。

也推荐大家阅读一下插件作者在Github上的说明,比如遇到结果模糊需要怎么处理,画面颜色会变是什么原因。

并且其中作者也提到了使用Tile Vae之后,放大8k图仅需12G显存,感兴趣的鹿友可以自行测试:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

插件作者Github网址:https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111

03 批量放大

最后再来说说批量放大,其实很简单,首先保证你的Tiled Diffusion和Tiled VAE参数都设置好了:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

并且提示词中只有关于画质描述的提示词,不要包含任何具体的对象:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

接下来把图生图切换为批量处理:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

这里有三项需要我们填写,第一是输入图的路径,第二是输出图的路径,第三是ControlNet输入图的路径。

由于我们ControlNet中输入的图和我们想要放大的输入图是一样的,所以也直接填写输入图的路径即可:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

大概填写为这样:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

另外在ControlNet中也需要切换为批量处理,这里同样有个填写输入图的路径的地方。

不过由于上面我们已经填写了ControlNet输入图的路径,因此这里不用填写也可以,设置完毕直接点生成就能批量放大了:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

以上的内容其实8月28号就写完了,但是一直没有时间录视频版,刚好最近WebUI又更新到了2023年第35周:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

更新之后我发现批量放大上有个问题,如果你在输出路径里填写了目录位置,批量放大后图片不会自动保存,并且我也没有找到手动保存的方法。

因此如果你用的WebUI更新到最新版的话,请批量放大的时候在输出路径那里留空,这样批量放大的图片会默认存到图生图的路径里:

Stable Diffusion教程!用好这2个插件,小显存也能高效批量放大

好了,以上就是本篇文章的所有内容。如果觉得对自己有所帮助,请不要吝啬自己的点赞、点在看、转发朋友圈,你们的支持对我很重要,谢谢!

微海报