
在使用Stable Diffusion生成高分辨率图片时,是否遇到了画面崩坏的问题,这时候就可以通过Hires. fix功能避免这种状况。
(本教程以Stable Diffusion WebUI 1.6.0版本为例)
解决2种崩坏问题
考虑到许多Stable Diffusion所使用的Checkpoint模型是以512 x 512分辨率的图像为基础进行AI训练,导致在进行图像生成时,若将输出分辨率调整到1024 x 1024以上时,容易造成图像中人物三头六臂等崩坏问题。
另一方面,如果在低分辨率图像中指定人物的全身像,也可能会因为画面中人物脸部分配的像素数量太少,而造成脸部变型的问题。
这些问题都可以通过Hires. fix来改善,其概念为进行多次文字生成图片(txt2img)功能生成多张低分辨率图像,并通过升频算法(Upscaler)将图像放大,最后再利用图片生成图片(img2img)来修饰图像,达到输出高分辨率图像的效果。




高画质外芙
根据笔者自己的使用经验,如果生成分辨率介于512 x 512至1024 x 1024之间的图像,大多不需使用Hires. fix,除非遇到前半段文章提到的脸部变型,才需借助Hires. fix来修正问题。 但是如果是想要生成分辨率高于1280 x 1280的图像,则建议使用Hires. fix功能。
读者可以在Stable Diffusion WebUI的txt2img参数设置字段找到Hires. fix项目,点击三角型后就会展开详细设置选项。
Upscaler为升频过程使用的算法,如果生成图像是仿真照片类型建议选择ESRGAN_4x,如果是漫画、插画类型则建议选择R-ESRGAN-4x+-Anime6B。
Hires steps表示放大图片的运算步数,数值越大产生的图像质量越好,但需要花更多时间,一般建议设置40~50之间的数值。 Denoising strength为降噪强度,可以理解为放大过程重新绘制的幅度,数值越大将给与系统越大的空间「调整图像内容」,建议设置0.25~0.35之间的数值以避免图像崩坏,若输出图像的质量未达期望,也可尝试提升到0.5~0.7。
Upscale by为放大的倍数,Hires. fix会将原始图像分辨率的长、宽放大至指定的倍数。 如果不想以此方式指定生成图像的分辨率,也可以直接在Resize width/height to字段输入想要的分辨率数值。
设置完成后,即可照一般方式设置其余参数、输入提升词,并开始生成高分辨率的图像。





虽然Hires. fix有助于在提升分辨率的同时维持画面质量,但也有着会大幅增加运算时间的代价,所以建议读者可以先多尝试生成低分辨率图像进行练习与参数调整,待确定「黄金参数」后,再进行Hires. fix图像生成。
另一方面Hires. fix也会增加算图过程中的显示内存使用量,1920 x 1080解析大约需要8GB左右显示内存,而3840 x 2160则会消耗14~16GB显示内存。 若读者的显示卡不符合需求也没关系,笔者将在下篇Tiled VAE教程中提供替代解决方法。