Stable Diffusion高级教程 - 图生图(img2img)模式
前言
现在终于可以介绍 Stable Diffusion 除了文生图 (txt2img) 之外最重要的功能:图生图 (img2img)。顾名思义,除了根据正向和反向提示词之外,还需要基于一张图片生成图。这个模式下功能很多我们挨个说
img2img
图生图模式下的默认功能,我们先看一下主界面:
上面还是正面提示词和负面提示词,接着是一个上传图片的区域,写着「Drop Image Here - or - Click to Upload」。然后就是相关参数,大部分在文生图里面已经见过,只有 Resize mode、Denoising strength 是新增的,我们挨个介绍:
- Resize mode。当上传图片尺寸和要生成的图的尺寸不同时,需要选择调整大小方案。
 - Sampling Method 用于去噪,平衡生成图的速度和质量。内置多种算法可供选择。目前看起来 DPM++ 2M Karras 用的比较多。
 - Sampling Steps 是去噪过程的采样步骤数。越多越好,但需要更长的时间。一般在 20-28 之间。
 - 宽度和高度 (Width/Height),输出图像的大小。按需调整即可。
 - Batch Count 批次数量,我更愿意用下面的 Batch size 调整生产图的总数。
 - Batch size,每一批次要生成的图像数量。可以在测试提示时多生成一些,因为每个生成的图像都会有所不同。生成的图像总数等于 Batch Count 乘以 Batch size。
 - CFG (Classifier Free Guidance) scale,提示词相关性, 用于控制模型应在多大程度上遵从您的提示。他有几个只可选: 1 (大多忽略你的提示),3 (更有创意),7 (遵循提示和自由之间的良好平衡),15 (更加遵守提示),30 (严格按照提示操作),常用的是 7,做个平衡。测试时可以换这个值体验区别。
 - Denoising strength。降噪强度,常翻译成「重绘幅度」,取值范围是 0-1,描述新生成的图片与原图的相似程度,数值越小,采样越少,相似度越高,算的越快 (采样数 = Denoising strength* Sampling Steps)
 - Seed,生成的每个图像都有自己的种子值,修改这个值可以控制图像的内容。
 - Script。用户可以编写脚本代码,以实现一些特殊定制的功能。这个未来可以具体说,目前还没有遇到。
 
先具体说说 Resize mode (当然上传的图片最好与生图设置的一致):
- Just resize:调整图片为生图设置的宽高。若上传图片的宽高与生成设置的宽高不一致,则该图片会被压扁。这个我非常不推荐使用,会让图片非常奇怪。
 - Crop and resize:裁切图片以符合生图的宽高,我最推荐的方式。
 - Resize and fill:裁切并调整图片宽高,若上传图片的宽高与生成设置的宽高不一致,则多出来的区域会自动填满。
 - Just resize (latent upscale):调整图片大小为生图设置的宽高,并使用潜在空间放大。
 
这个模式下最主要的就是调 Denoising strength 参数。我们用下面这张从网上找的新垣结衣的照片来体验:
首先注意,我选择这个图是有 2 个原因的:
- 这个一张人像正面近像,在生成新图后更容易感受到 SD 的模型的作用
 - 照片可以看到手部有动作,我会生成一张有问题的图让你感受到目前图生图模式的问题
 
我希望通过 SD 把这个真人照片做出动漫的效果,咱们先来个较大的 Denoising strength 的值,为了方便对比我用了固定的 Seed:
我直接把生成参数列出来:
a woman with a short hair and a white shirt is posing for a picture with her hand on her chin, a photorealistic painting, Ayami Kojima, precisionism, perfect face
Negative prompt: dongwm-nt,bad finger, bad body
Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 8, Seed: 2345567052, Size: 512x512, Model hash: cbfba64e66, Model: CounterfeitV30_v30, Denoising strength: 0.65, Clip skip: 2
这里有一点需要特别的提一下,正面提示词不是我写的。在图生图模式里,生成按钮左边有 2 个选项,分别是「Interrogate CLIP」和「Interrogate DeepBooru」。在上传图片后,可以通过「Interrogate CLIP」反推出提示词,我这个就是这么生成的。另外也说一下「Interrogate DeepBooru」,这说的是一个开源的女孩图片特征提取器,上传图片可以获得图片的标签,我已经把链接都放在了延伸阅读里面:
PS: 如果你选择 DeepBooru 反推,不能直接使用那些标签,你需要从中筛选需要的、合理的标签,否则结果会完全偏离。
好的,说回来。之前已经说过,Denoising strength 的值越大越和原图不符,所以如果你希望「微调」,这个值不应该大于 0.4,现在我们先取了一个更大的值,你可以看到生成图的人物手部的结果是有问题的。而且注意,负面提示词 dongwm-nt 本身是包含 bad finger,bad body 这些的。
图生图不是万能的甚至很难达到你的预期
是的,这是我的体验。这个模式下如果你想要生成你想要的效果,对于大模型、微调模型、提示词、参数等都有要求,在前期,你很可能生成奇怪的图,你需要不断尝试总结经验。
不同的 Denoising strength 效果的区别
我们使用 x/y/z 脚本试试不同的重绘幅度值看看生成的效果:...
剩余内容已隐藏