在使用Stable Diffusion工具进行绘图的时候,我们经常会碰到这类的问题,主要表现在
(1)大量抽签后抽到了一张自己满意的图片,但是图片局部的地方还有些瑕疵,图片整体满意度只能达到95%。
(2)大量抽签后好不容易抽到了一张自己非常满意的图片,想要获得多张类似的效果的图片,重新生成的话,由于SD默认每次生成的图片都是随机的,可能新生成的图片画面元素又不是我们想要的。
对于上面的2种场景,其实都是一类问题:我们希望对生成的图片进行局部微调,有瑕疵的修复照片上面的瑕疵,最终生成多张我们希望的效果图片。
对于SD生成的图片有瑕疵,当然使用传统的PS方式也可以很好地修复,但是既然是使用SD工具,我们还是希望能找到对应的解决办法。
对于这一类的问题,我也一直在思考,SD有哪些方法可以做到。这是一个比较开放的问题,个人认为并没有一种方法可以适应所有的场景,所以这里只是方法的探讨。也欢迎广大网友留言交流讨论。
今天先给大家介绍一种常见的方法:固定随机数种子。当然其他的方法,后面我会慢慢写。
一. 随机数种子(Seed)
随机数种子它相当于图片的DNA,决定了画面的内容。
通常情况下,我们无需指定随机数种子,即使用默认值-1。这样随机数种子就会随机生成,从而使每次生成的图片都各不相同。
从底层原理上,随机数种子是图像扩散前的噪声图,每一个种子数代表不同的噪声图。Stable Diffusion 的精髓在于它能够对图像进行“去噪”,使其看起来像我们熟知的事物。
如果使用相同的去噪方法、相同的提示、分辨率等设置,同时固定相同的随机数,就会产生相同的“去噪”过程,从而始终生成相同的图像。
在SD Web UI界面,随机数的参数设置(默认值为-1,表示随机生成)
二. SD中有哪些参数会影响随机数种子
在 Stable Diffusion 中,以下参数设置会影响随机数种子(来自豆包回复给出的结论)
1. 采样方法(Sampling Method):不同的采样方法可能会对随机数种子的效果产生影响。例如,常见的采样方法如 Euler、Euler a 等,它们在处理随机数生成和图像生成的过程中有所差异。
2. 采样步数(Sampling Steps):采样步数的多少会改变生成过程中的迭代次数,进而影响随机数种子发挥作用的方式和最终生成的图像效果。
3. 提示词(Prompt):提示词的具体内容和描述的精确程度会影响模型对随机数种子的解读和应用。
4. 模型版本和训练数据:不同版本的 Stable Diffusion 模型以及它们所基于的训练数据的差异,可能导致相同的随机数种子产生不同的结果。
5. 控制参数(Control Parameters):如果使用了如 ControlNet 等控制参数,它们也会与随机数种子相互作用,影响生成图像的特征和风格。
6. 图像尺寸(Image Size):图像的大小设定会影响生成过程中的计算和随机数的分布,从而对随机数种子的效果产生影响。
7. 随机数种子本身的数值:不同的数值自然会导致完全不同的随机生成结果。
总之,在 Stable Diffusion 中,多个参数之间相互作用,共同决定了随机数种子对生成图像的最终影响。需要通过不断的试验和调整,才能找到最符合需求的参数组合。
三. 使用随机数种子实现图片微调测试
随机数种子提供了创作的随机性及最大限度的还原性,通常我们生成图片时将随机数种子设置为-1,在多次抽签生成一张我们满意的图片时,我们可以将随机数种子设置为当前生成的图片的随机数种子,后续生成的图片都会参考这个种子进行生成。这样我们巧妙地使用固定种子随机数,可以在生成“相同”图像的基础上,提高图片质量或微调画面内容。
下面我们来对比测试验证一下效果。
公共参数设置
- 大模型:majicMIX realistic 麦橘写实_v7.safetensors
模型下载地址(文末网盘地址也可获取)
LiblibAI: https://www.liblib.art/modelinfo/bced6d7ec1460ac7b923fc5bc95c4540
- VAE模型:vae-ft-mse-840000-ema-pruned.safetensors
- 正向提示词:1 super beautiful girl,solo,standing in the classroom,
- 反向提示词:(NSFW:1.3),teeth,(cleavage),(worst quality:1.65),(low quality:1.2),(normal quality:1.2),low resolution,watermark,dark spots,blemishes,dull eyes,wrong teeth,red teeth,bad tooth,Multiple people,broken eyelashes,(badhandv4-AnimeIllustDiffusion_badhandv4:1.2),(EasyNegative:1.2),
- 采样方法:DPM++ 2M Karras
- 采样迭代步数:30
- 提示词相关性(CFG Scale): 7
- 图片宽高:512*768
- 开启After Detailer插件,模型选择face_yolov8n和hand_yolov8n.pt
我们抽签选择一张图片。
随机数种子为:1179886945。
我们可以在SD Web UI界面随机数种子那一栏点击下图红框中的小图标,可以获取已生成图片的随机数种子值设置为当前图片的随机数种子值
我们现在固定随机数种子,随机调整一个影响随机数种子的参数来看看生成图片的效果变化。
(1)调整提示词
在正向提示词中添加人物表情的关键词。
smiling(微笑) |
crying(哭泣) |
angry(生气) |
excited(兴奋) |
从上面可以看到,固定随机数种子,适当添加提示词,整体图片风格主体元素几乎并没有太多的变化,除了美女表情。
(2)调整采样方法
DPM++ 2M Karras |
Euler a |
从上面可以看到,调整采样方法,对图片的主体元素影响还是比较大的,可见采样方法对随机数的影响还是非常大的。
(3)采样迭代步数
迭代步数30 |
迭代步数40 |
从上面可以看到,固定随机数种子,调整采样迭代步数,对图片的整体影响效果非常小,这个比较好好理解,因为采样迭代步数40步渲染出的图片是在原30步基础上进一步渲染而已,风格主题元素基本定型,效果并不是很明显,当然这个是建立在采样迭代步数在一定合理的范围内。
(4)调整图片的宽高
图片512*768 |
图片768*768 |
|
从上面可以看到,固定随机数种子,调整图片宽高设置,对图片的主体元素影响还是比较大的,可见图片宽高设置对随机数的影响还是非常大的。
从上面的几组对比可以看出,如果是微调图片,最好的方式是添加提示词,或者是调整采样迭代步数。当然,这里列举的例子还不太全面,感兴趣的小伙伴可以多种风格的图片再尝试一下,这里主要是提供思路和大家一起讨论一下。
另外,图片微调也存在随机性,因此这种处理的方式是不是对图片微调有明显的效果还不一定,大家在实际使用时还是建议多尝试,多比较,多体会。
好了,今天的分享就到这里了,希望今天分享的内容对大家有所帮助。
模型放在网盘里,感兴趣的小伙伴自取!
https://pan.quark.cn/s/b3df771404e2