SD文生图:如何生成高分辨率图片?
SD文生图:如何生成高分辨率图片?
在使用SD(Stable Diffusion)模型生成图片时,我们常常会遇到分辨率不足的问题。虽然可以直接调整图片的宽度和高度,但这种方法往往会导致图像质量下降,出现多头等异常情况。为了解决这一问题,SD模型提供了一个名为Hires. fix的功能,可以有效地提升图片分辨率,同时保持图像质量。本文将详细介绍如何使用Hires. fix功能生成高分辨率图片,并对其中的各项参数进行深入解析。
SD模型的两类主要模型
在使用SD文生图功能时,我们能选择的大致有两种模型:普通模型和SDXL模型。
普通模型:这是SD的一些旧版模型,通常是基于SD 1.5或SD 2.0开发的。这类模型是我们现阶段使用最多的,其基础分辨率为512 x 512像素。
SDXL模型:这是更先进的模型,通常具有更高的分辨率和更好的图像质量。
如果我们直接修改文生图的宽度和高度,出来的效果往往不会很好。有时候甚至会出现多头的情况,如下图所示:
图1:直接修改分辨率导致的异常情况
出现这种情况的原因是,模型原本擅长的绘画尺寸是512 x 512,而突然将画布变大很多,AI自由绘画的像素点就变多了,这就有可能出现不合理叠加等问题。
Hires. fix功能详解
什么是Hires. fix?
Hires. fix是SD模型提供的一种图片放大功能。其基本原理是:先生成一张基础分辨率的图片,然后基于这张图片的内容选择一个放大算法去提升分辨率,最后在这个基础上整体重绘图片。
实例展示
让我们看一个具体的实例:
图2:使用Hires. fix功能前后对比
左图的分辨率是768 x 512,右图使用了Hires. fix功能放大了2倍。可以看出,使用Hires. fix功能后的图片细节更加丰富,但随之而来的缺点也很明显:出图时间会大幅增长,配置不高的设备甚至会爆显存。因此,建议配置不高的电脑不要将图片放大得太多,最好不超过2倍。
实操步骤
接下来是具体的实操环境设置。这里给出一个示例代码:
(best quality, masterpiece, perfect face, beautiful and aesthetic:1.2, colorful, dynamic angle), handsome beautiful woman humanoid woman robot part metal wires with wavy short dark hair, elegant, red lighting, realistic, concept art, smooth, detailed, high quality, alphonse mucha and waterhouse,, <lora:add_detail:0.5>, (high contrast, official art, extreme detailed, highest detailed)
Negative prompt: portrait, doll, (leaning against wall:1.3), (asian, chinese:1.3), (worst quality, low quality), FastNegativeV2
Steps: 20, Sampler: DPM++ 2M SDE, Schedule type: Exponential, CFG scale: 6, Seed: 2055601004, Face restoration: CodeFormer, Size: 768x512, Model hash: 07341fcad2, Model: aniverse_v30Pruned, Downcast alphas_cumprod: True, Version: v1.9.3
首先导入上述代码,然后设置图片的宽高。这里选择的是768 x 512,即一张横屏的图片。接着选择Hires. fix功能,并在Upscale by中设置2,也就是等比放大2倍。最后将Denoising strength设置成0.6,这个参数的意思是重绘幅度。数值越高,重绘出来的图片就会和原图相差很大。
Hires. fix参数详解
在Hires. fix面板中还有很多参数可以配置:
放大算法(Upscaler)
Upscaler选项中可以选择不同的高清算法对图片进行放大:
- Latent:简单直接的放大算法,对电脑配置要求不高,速度快,但出图效果不是很好,可能会出现模糊不清晰等情况。
- Lanczos:通过计算权重放大图像,运算速度还算快,出图效果也还行,能用。
- Nearest:插值算法,运算速度快,但可能会产生锯齿或者块状瑕疵,效果不太好。
- ESRGAN_4x:通过学习低分辨率图像与其对应高分辨率图像之间的映射关系,分辨率最高可增强4倍,但可能会出现锐化效果。适合油画风。
- LDSR:通过训练的潜在扩散模型来提升图像的分辨率,出图效果很好,出图的细节全给你拉满,但很吃电脑资源,运算速度也很慢。
- R-ESRGAN 4x+:通过引入残差连接和递归结构,生成图像的质量比传统方法更高,推荐。
- R-ESRGAN 4x+ Anime6B:是 R-ESRGAN 4x+ 的一个衍生版本,修复二次元漫画的效果很好。
- ScuNet GAN:可以去除图像噪声,但速度慢,不太适合二次元漫画。
- ScuNET PSNR:降噪效果很好,适用于需要保持更多图像细节的场景,但速度很慢,不适合二次元漫画。
- SwinIR 4x:可将低分辨率图像发达为原来的4倍,生成高分辨率图像。适用于图像重建、图像增强和图像超分辨率等方面,但出图速度很慢,适合修复绘画,不适合二次元漫画。
在使用Hires. fix放大算法之前,建议查看所使用的模型作者有没有推荐使用什么放大算法,如果有就按照作者推荐的去选择。
放大倍数和手动调整宽高
- 放大倍数:通过调整Upscale by可以等比放大原图,这个参数是比较常用的。但电脑配置不太高的用户建议不要把该值设置得大于2。
- 手动调整宽高:Resize width to和Resize height to可以分别调整图形的宽和高,会修改原图的比例。不建议使用。设置了Resize width to和Resize height to后,Upscale by就不生效了。
高分迭代步数(Hires steps)
Hires steps是高分迭代步数,默认值是0,0的意思是使用文生图设置的迭代步数。如果你重新设置这个值,它生成的画质就会有所不同,数值越高出来的图片精细度就越高。但数值也不是设置得越高越好,比如某些图片设置了60,出来的效果和你设置30是差别不大的。但数值越高出图速度也就越慢。
重绘幅度(Denoising strength)
Denoising strength重绘幅度,这个值会影响出图效果。数值越大,出来的图片和原图的差距就越大。如果不想改变原图的效果这个数值可以设置在0.5以下。但Denoising strength的值最终设置多少合适,还是要看你使用了什么底模,有时候设置得太小出来的效果也会很奇怪,画面四周的像素可能会出现很模糊的情况。
高分模型(Checkpoint)
最后还可以通过选择不同的模型、不同的模型采样算法、正反向提示词对原图进行修改。这意味着你可以基于原图的基础上进行调整。但默认是没有这些选项的,需要在设置里手动开启Hires fix: show hires checkpoint and sampler selection和Hires fix: show hires prompt and negative prompt,然后保存并重启UI。
比如你想将上图人物的头发改成粉色,那么可以在正向提示词里输入pink hair,生成的人物头发就出现一丝粉色。注意,是在Hires. fix的正向提示词输入框里输入提示词,而不是在原来底模下方的输入框输入。
总结
通过使用Hires. fix功能,我们可以有效地提升SD模型生成图片的分辨率,同时保持图像质量。通过调整放大算法、放大倍数、重绘幅度等参数,我们可以根据具体需求生成不同风格和质量的高分辨率图片。希望本文能帮助你更好地掌握这一实用功能,创作出更高质量的AI艺术作品。