用Flux或者SD模型直接生成一张高清大图行不行?
很直接地回答:不行!或者很不建议。为什么呢?
比方说,Flux 1模型现在推荐生成10万到200万像素的图像,差不多最大就是2212 x 948左右。并且,在 RTX 4090 上使用 FP8 版本的 Flux Dev,生成 2.0 MP 每张图片大约需要 30 秒,1.0 MP 大约需要 15 秒,0.1 MP 大约需要 3 秒。
其实逻辑很简单。假设你是一个画家,面对一张A4纸大小的画幅,以及一张1米x1米的大画幅,绘画需要的时间和精力是完全不同的。1米x1米肯定得比A4大小,要多很多细节。对于AI而言,这些需要填补的额外细节,很可能反而会出现一些我们不希望出现的东西,需要处理的时间也会更久。
此外,很多重新训练的模型,用的素材大部分都是固定的分辨率(如 512x512 或 768x768),在这个分辨下模型能最佳地捕捉图像细节。直接生成超出训练分辨率的图片,可能会导致质量下降。
怎么办呢?那就先用模型生成一个小一点的图片,然后再用另一个模型放大它,随后再填充一些细节,而不是纯粹拉大图片形成马赛克。
Nenly同学的教程里,讲述了三种方式,运用最广,也最建议使用的,就是用Ultimate SD Upscale节点。
具体的工作流链接:https://drive.wangchenjie.com/raw/ComfyUI/4.%20Ultimate%20SD%20Upscale%E5%B7%A5%E4%BD%9C%E6%B5%81.json
只要咱们之前先已经尝试过生成第一张图,就应该很容易理解这事儿。
原本K采样器的输出点Latent连接VAE解码器,随后就可以有图像输出。
现在,我们不要直接连“保存图像”,而是增加一个“SD放大”节点,同时添加“放大模型加载器”。对于目前小白的我们而言,只需要关注这个SD放大模型里的“放大系数”就行了。如果放大系数是2倍,那么意味着这个模块会把我们AI生成的1000x1000,最终变成2000x2000。其他参数暂时可以不用去理解。
在放大模型加载器里,也有放大模型可以选择,如果是动画形象的话,可以选择专门anime的模型。如果是真实形象类别,可以选择RealESRGAN,或者4xUltrasharp,这两种模型都是把原本的图放大4倍。
但不要误解,虽然这个放大模型加载器是把图默认放大4倍,但是最终决定图片大小的,还是“SD放大”节点里的“放大系数”参数。如果放大系数是2倍,就是AI生成图放大2倍——意味着,这个SD放大内的“放大系数”其实是把图缩小了一半。
这个放大功能并不是简单的把图拉宽拉长,因为这样会出现马赛克像素——没有额外的信息。
这个SD放大模型,其实是“图生图”的概念,只不过通过模型和参数设置,尽可能保证放大前后的图不会相差太大!但是,小图和大图还是有细微差别的,比如表情,比如背景要素等等。
在运行时,你会发现,这个模块是把图分成好多个512x512的小图片,然后每张图补充细节。所以,若把图片放得比较大,那么所需要消耗的运算时间也会更久。若是想看下Prompt产生的效果,不要连这个模块,否则每张图都会耗费几倍的时间。
文章评论