当前位置:   article > 正文

Stable Diffusion高级教程 - 图生图(img2img)模式

Stable Diffusion高级教程 - 图生图(img2img)模式

前言

现在终于可以介绍 Stable Diffusion 除了文生图 (txt2img) 之外最重要的功能:图生图 (img2img)。顾名思义,除了根据正向和反向提示词之外,还需要基于一张图片生成图。这个模式下功能很多我们挨个说

img2img

图生图模式下的默认功能,我们先看一下主界面:

在这里插入图片描述

上面还是正面提示词和负面提示词,接着是一个上传图片的区域,写着「Drop Image Here - or - Click to Upload」。然后就是相关参数,大部分在文生图里面已经见过,只有Resize modeDenoising strength是新增的,我们挨个介绍:

  1. Resize mode。当上传图片尺寸和要生成的图的尺寸不同时,需要选择调整大小方案。

  2. Sampling Method 用于去噪,平衡生成图的速度和质量。内置多种算法可供选择。目前看起来 DPM++ 2M Karras 用的比较多。

  3. Sampling Steps 是去噪过程的采样步骤数。越多越好,但需要更长的时间。一般在 20-28 之间。

  4. 宽度和高度 (Width/Height),输出图像的大小。按需调整即可。

  5. Batch Count 批次数量,我更愿意用下面的 Batch size 调整生产图的总数。

  6. Batch size,每一批次要生成的图像数量。可以在测试提示时多生成一些,因为每个生成的图像都会有所不同。生成的图像总数等于 Batch Count 乘以 Batch size。

  7. CFG (Classifier Free Guidance) scale,提示词相关性, 用于控制模型应在多大程度上遵从您的提示。他有几个只可选: 1 (大多忽略你的提示),3 (更有创意),7 (遵循提示和自由之间的良好平衡),15 (更加遵守提示),30 (严格按照提示操作),常用的是 7,做个平衡。测试时可以换这个值体验区别。

  8. Denoising strength。降噪强度,常翻译成「重绘幅度」,取值范围是 0-1,描述新生成的图片与原图的相似程度,数值越小,采样越少,相似度越高,算的越快 (采样数 = Denoising strength* Sampling Steps)

  9. Seed,生成的每个图像都有自己的种子值,修改这个值可以控制图像的内容。

  10. Script。用户可以编写脚本代码,以实现一些特殊定制的功能。这个未来可以具体说,目前还没有遇到。

先具体说说Resize mode(当然上传的图片最好与生图设置的一致):

  1. Just resize:调整图片为生图设置的宽高。若上传图片的宽高与生成设置的宽高不一致,则该图片会被压扁。这个我非常不推荐使用,会让图片非常奇怪。

  2. Crop and resize:裁切图片以符合生图的宽高,我最推荐的方式。

  3. Resize and fill:裁切并调整图片宽高,若上传图片的宽高与生成设置的宽高不一致,则多出来的区域会自动填满。

  4. Just resize (latent upscale):调整图片大小为生图设置的宽高,并使用潜在空间放大。

这个模式下最主要的就是调Denoising strength参数。我们用下面这张从网上找的新垣结衣的照片来体验:

在这里插入图片描述

首先注意,我选择这个图是有 2 个原因的:

  1. 这个一张人像正面近像,在生成新图后更容易感受到 SD 的模型的作用

  2. 照片可以看到手部有动作,我会生成一张有问题的图让你感受到目前图生图模式的问题

我希望通过 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 脚本试试不同的重绘幅度值看看生成的效果:

在这里插入图片描述

可以看到随着 Denoising strength 变大,越来越不像原图了。

同时,我们还可以重叠各种微调模型,下面是使用了 VAE、Lora 和 HyperNetwork 后的效果:

在这里插入图片描述

这就是微调模型的作用,不过注意,微调后手部后两张还是会有问题。

PS,这个例子用的主模型是:https://civitai.com/models/4468/counterfeit-v30

绘图 (Sketch)

第二个 Tab 是 Sketch,他适合有美术基础的用户,可以给一张现有的图加东西,或者画出你想要的东西,然后再输入提示词完善,我这个没有画画细胞的人基本不用,在这里也举 2 个例子 (我也就这个水平啦)。

因为我们一会要用笔刷编辑图片,我需要用到颜色,所以加启动参数,重启 webui:

./webui.sh --disable-safe-unpickle --gradio-img2img-tool color-sketch
  • 1

Ok, 先尝试基于现有图做修改的,我用了下面这张图:

在这里插入图片描述

上传后就进入了编辑模式,然后我用笔刷选了个粉色的把头发涂变色 (当然提示词中并没有提到粉色头发):

可以看到Denoising strength到了 0.7 才看起来正常,前面的那个「涂」的效果很明显。所以如果你使用和原图差别很大的颜色涂,那么需要更大的重绘幅度值,但是相对的,生成图和原图差别很大。如果选择对比色较少的例如黑色,那么重绘幅度 0.4 可能就够了。

接着我们试试完全从零画一幅画 (叫「涂鸦」更合适),为了展示 SD 的厉害之处,我特意选择了一个「复杂」的构图,在本灵魂画手非常努力作画后,看一下生成图的效果这样的:

在这里插入图片描述

注意哈,因为这个模式需要上传图,所以我这里只是截了个终端的黑色区域作为背景图。我知道大家看不懂我的 Sketch

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/476758
推荐阅读
相关标签