文章目录
- **Hires. fix**
- **Extra noise**
- Upscalers
- Hires. fix原理
Hires. fix
https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features#hires-fix
提供了一个方便的选项,可以部分地以较低分辨率呈现图像,然后将其放大,最后在高分辨率下添加细节。换句话说,这相当于在txt2img中生成图像,通过自己选择的方法将其放大,然后在img2img中对现在已经放大的图像进行第二次处理,以进一步完善放大效果并创建最终结果。
默认情况下,基于SD1/2的模型在非常高的分辨率下生成的图像质量很差,因为这些模型只是在512px或768px的分辨率下进行训练的。通过在denoising过程中利用小图像的构图,这种方法可以避免这个问题。通过在txt2img页面上选中“Hires. fix”复选框来启用此功能。
小图的分辨率由使用宽度/高度滑块设置。大图的尺寸由三个滑块控制:“按比例缩放”乘数(高分辨率放大),“调整宽度至”和/或“调整高度至”(高分辨率调整)。
如果“调整宽度至”和“调整高度至”都为0,则使用“按比例缩放”。
如果“调整宽度至”为0,则从宽度和高度计算“调整高度至”。
如果“调整高度至”为0,则从宽度和高度计算“调整宽度至”。
如果“调整宽度至”和“调整高度至”都不为零,则图像将放大至至少这些尺寸,并裁剪部分区域。
在旧版本的webui中,最终的宽度和高度需要手动输入(上述最后一个选项)。在新版本中,默认是使用“按比例缩放”因子,这是默认和首选的设置。
要可能进一步增强hires.fix中的细节,请参阅有关Extra noise的注释。
Extra noise
通过设置中的额外噪音乘数为img2img和hires fix,默认为0,从随机种子添加额外噪音。在版本1.6.0中通过#12564实现,可在设置中找到img2img -> Extra noise multiplier for img2img和hires fix。正如在用户界面中所指出的,该参数应始终低于用于获得最佳结果的去噪强度。
这种调整的一个目的是在hires fix中添加额外的细节。对于一个非常简化的理解,你可以将其视为GAN放大和潜在放大的交叉。
下面的示例是一个应用了hires fix的512x512图像,使用GAN放大器(4x-UltraSharp),去噪强度为0.45。右侧的图像使用了这个额外噪音调整。
请注意,许多月前实施的先前设置(img2img的噪声乘数)在技术上实现了相同的效果,但正如名称中所指出的,它仅适用于img2img(而不是hires.fix),并且由于实施它时非常敏感,实际上只在1到1.1的范围内有用。对于几乎所有操作,建议使用新的额外噪音参数。
对于开发人员,还存在一个回调函数(on_extra_noise)。以下是一个使用示例,使添加噪音的区域可屏蔽。https://gist.github.com/catboxanon/69ce64e0389fa803d26dc59bb444af53
Upscalers
一个下拉菜单允许您选择用于调整图像大小的放大器类型。除了在附加选项卡上提供的所有放大器外,还有一种选项可以对潜在空间图像进行放大,这是稳定扩散内部使用的方式 - 对于一个3x512x512的RGB图像,其潜在空间表示将是4x64x64。要查看每个潜在空间放大器的效果,您可以将去噪强度设置为0,将Hires步骤设置为1 - 您将得到一个非常好的近似,即稳定扩散在放大图像上的工作方式。
Hires. fix原理
进行Hires. fix之前,已经得到了一张图了。然后Hires. fix可以使得图更细节。
Hires. fix原理在这个部分:
Hires. fix的操作是在Latent空间完成的,比如512X512的图,Latent空间是1X4X64X64大小,当把Hires. fix给到2倍率,程序会把Latent空间是调为1X4X128X128。
怎么调?
Latent和普通超分对这个调的方式是不一样的。
当是Latent,直接将Latent空间的1X4X64X64插值到1X4X128X128:
当是普通超分:
需要将512的图超分到1024,然后用VAE的encoder,将超分后的图给到1X4X128X128。