在WebUI中有三种主要的放大修复方式:
- 文生图-高清修复:分两步处理图像,先低分辨率生成图片,然后根据其与制定的放大算法再生成一个高分辨率版本。这样就能在不更改图片结构的情况下丰富细节,简单来讲就是打回重画一幅。
- 图生图-SD放大:根据指定的放大倍数将图生图的图像拆分成若干小块固定逻辑重绘,之后再拼接成一张大图。这样就可以在低显存的情况下绘制大尺寸的图片,简单来说就是把一个画分成几小块绘画后再拼接到一起。
- 生成后处理:利用放大算法在图像生成后进行单独的放大处理,这样图片就会有更高的分辨率尺寸。
让我们废话少说,直接开始今天的学习吧!
一、高清修复(Hi-Res Fix)-文生图
在Stable Diffusion中有的时候生成的画面虽然是自己想要的模样,但是会因为画质影响了整体的观感。
看着好像还可以但是感觉有些模糊
其实在Stable Diffusion中,让图片变得更加清晰且细节到位的处理方式是相对固定的。
在文生图的界面中有一个选项可以做到,在调整宽高上面有一个名为高清修复的选项。
在进行修复前我再进行一次文生图生成步骤,感兴趣的同学也可以自己尝试一下:
正向提示词:
best quality, ultra high res, 1girl, sleeveless white button shirt, black skirt, black choker, cute, (Kpop idol), (aegyo sal:1), (platinum blonde hair:1), ((puffy eyes)), looking at viewer, full body, facing front
反向提示词:
sketches, (worst quality, low quality:2), FastNegativeV2
接下来进行图片的生成看看效果:
这张图片第一眼看上去质量还不错,但是在放大了之后可以看到图片的局部有些模糊,皮肤看着也没有那么有质感。
这是AI生成真实系图片时普遍存在的一个问题,因为硬件等的问题导致绘图分辨率设置得太低的时候,AI就没有足够的空间去完善图片细节。
在二次元图片里可能还好,顶多就是局部比较模糊,但是在追求真实的三次元图像中就很容易看出问题来。
当然有些硬件比较好的同学可以直接粗暴地扩大分辨率,但是这个问题很明显并不适用于所有人,这样做会出现爆显存的情况。
而另一个问题就是即便显卡足够顶级,别的先不说就4090是大部分能买到最好的显卡了。即便是用4090硬跑高清图片,最终的图片的生成也会出现多头多人的问题。
这里就可以考虑一下高清修复功能了,在进行文生图之前就勾选这个选项,然后就会出现额外的一些参数:
下面的三个参数:放大倍率、将宽度调整为、将高度调整到,这三个参数是指将这个图片由原始分辨率放大到多少。这个参数可以按倍数定也可以按照具体数值。
上面的高分迭代步数其实等同于采样迭代步数,因为这也是一个对图像重绘的选项。
重绘幅度也就是图生图功能里的重绘幅度,只不过在这里可以放在文生图中使用,如果要保持画面大的结构不变化的话最好数值不要超过0.5。
左上角的放大算法估计是最不好理解的一点
在这里选择第一个Latent潜变量即可,一会就知道是什么了。
在这里可以看到AI先绘制了一张低分辨率的图像,然后再根据低分辨率的图像绘制高分辨率版本,简单来说就像是一次图生图的过程。
而这个过程就是在生成低分辨率图后打回潜空间重新去噪,从而生成一张更大的图片。
高清修复前:
高清修复后:
虽说人物的面部有少许改动,但是很明显可以看到修复后的细节上的处理要好得多。无论是面部细节处理、人物发梢发丝、衣服质感、阳光照射的细节,都可以看出第二次生成的图片更真实些。
如果想要更清晰的文生文大图并且避免生成多人多头的问题,那么就可以考虑高分辨率修复这个选项,当然这个选项也有所谓的优缺点之分。
优势:
- 不会改变画面构图(经由随机种子固定);
- 稳定克服多人、多头等由分辨率产生的问题;
- 操作简单、清晰、效果直观
劣势:
- 仍然受到最大显存的限制;
- 计算速度相对较慢
- 偶尔可能产生额外元素(画面不符的元素)
所以这个功能最好的用法就是先在低分辨率的情况下反复抽卡,直到画出了想要的画面之后固定随机种子,再进行高清修复。
不过如果出现了额外元素或者AI自作主张改变了某些画面元素,那么可以进行重绘幅度的降低来改善这个问题,如果只是为了放大图像0.3-0.5是最安全的,如果想让AI也发挥一下,那么0.5-0.7最好。
回到刚刚在上面提到过的重绘算法,这个算法其实跟上面选择的采样方法一样,决定了AI在将低分辨率版本“打回重画”的时候要如何操作。
我看了下原教程的UP将一个个算法都进行了分别的尝试,说实话看着并没有明显的区别,至少没有大到质变的感觉。
不过原教材提到网上有个说法,只要用到高清修复建议使用R-ESRGAN 4X+,如果是二次元绘画就用R-ESRGAN 4X+Anime6B。当然这一点还是要取决于自己的需求并且在尝试过后才比较好做出符合自己预期的决定。
不过有些模型在下载的时候作者也会推荐选择的放大算法,这一点大伙可以自己看看再决定。
二、SD Upscale(图生图)
在学会了文生图的高清修复方法之后就来到了图生图部分,不过在上面有提到过图生图这个过程本身就有点像“高清修复”的过程。
所以说如果原图的分辨率比较低的话,直接放到图生图里拉高宽度和高度参数再生成就可以实现高分辨率修复了。
在文生图中,每次生成了一张图之后可以直接选择发送到图生图功能进行打开,并且会按照当时输入的提示词、参数、模型直接复制一份。
然后只需要按比例放大图片并且控制重绘幅度,就可以将图片变得更加清晰。
在设置中的放大参数里也可以找到自行定义图生图的放大算法,记得更改后点击上面的保存就行。
上述的两种方式是比较简单直接的放大清晰方式,当然还有另一种比较常用的方式就是Upscale放大脚本。
在最下方的脚本选项点击开可以看到有很多选项:
感谢秋叶大佬,将脚本都放进了整合包,启动器自带
在这里选择了使用SD放大(SD upscale)可以看到底下出现很多参数。
这里的缩放系数相当于文生图中的放大倍数,设置2就是放大为原来的2倍的意思,算法什么和上面讲过的差不多,由于我这次用的是二次元图来生成,那就选择R-ESRGAN 4x+Anime6B。
至于分块重置像素宽度先不要管,64就好,然后在导入的图片重绘尺寸下的宽度和高度各加上64。
然后点击生成看看效果:
在这里因为超过300帧就无法上传我去掉了很多帧
可以看到细节上要丰富了许多,在生成的过程中可以发现右侧的绘图是将整个图片切割成一块一块进行重绘,而这里如果分块重置像素宽度的数量比较少的话会导致相邻的图块接缝处会出现生硬的过渡边缘。
可以将整张图片看作是十字分为的4块,而这四块如果粗暴地切开重绘在黏在一起就会比较违和。Tile Overlap也就是图块重叠像素可以形成一个缓冲带,使得图片的粘合更加丝滑。
如果觉得过渡还是比较生硬可以将充值像素宽度拉到128,那么上方重绘尺寸就需要在原大小的情况下宽高加上128。
要注意的是开启SD放大后,最终的宽高=(设置的宽高-重置像素)X 放大倍率
这也是为什么设置重叠像素后需要在设置宽高的基础上加上该像素值。
可以比对一下进行放大前后的图片
SD放大前:
SD放大后:
总而言之SD放大比起高清修复对设备的压力较小,但是也有优点和缺点。
优点:
- 可以突破内存限制获得更大分辨率(最高可以达到4倍宽高)
- 画面精细度高,对细节的丰富效果出色
缺点:
- 分割重绘的过程比较不可控
- 操作繁琐且相对不直观
- 偶尔也会出现莫名的额外元素
不过当画面放大4倍时,AI会将原画切割成16张图进行重绘,这个过程中所使用的提示词可能不会被AI原封不动地放在该放的地方,可能会导致画面混乱。
而且当人脸或者一些关键元素放置在十字分割线上时,这种情况可能会导致最终的出图结果产生不和谐的画面。这种的解决方法就是降低重绘幅度,并且增大图块重叠像素(缓冲区域)
三、后期处理/附加功能(成品图片)
除了文生图和图生图这种在绘制之前进行设置的,还有一个方法可以处理已经生成的图片。
在已经生成的图片后面点击发送到后期处理,或者直接点击图生图右侧的后期处理按钮都可以进入到这个功能中。
这个功能简单来说就是一个重绘幅度为0的高清修复,其原理和市面上绝大多数的AI修复照片的应用原理类似。因为不涉及再扩散的过程,其运行速度很快,几秒就搞定了。
方法也很简单,选择倍数和算法。
不过区别在于其支持两个算法同时运行,并且放大算法2(数值0-1)可见度其实就是权重的意思,其他选项我这样的新手直接维持默认。
可以看到图片的尺寸在运行后被放大到了两倍,但是两张图之间的变化并不明显。这个算法其实只是在拉伸放大的过程中适当润滑了线条和色块边缘的模糊区域,整体的精致和细腻程度并没有前两种方法那么好。
这个功能比起前两个的优势在于简单方便并且对设备负担小以及随时可以调用,缺点就是这个功能对于提高清晰度这一点并不明显。
今天的内容到这里就结束啦!
没想到这个知识点还是蛮有用的,至少对于我这样的新手一开始会生成模糊人像这一问题给了一个很好的解决方案。
当然这些功能对自身硬件有一点要求,大部分能用但是会比较花时间,希望大伙量力而行。