注意,本文默认你已经了解所有文生图的内容,因为图生图实际上是在文生图的基础上在加上原图作为一个输入变量,和文生图中的一些参数如正负 tag、模型、lora 等一起作为输入变量生成最后的结果,如果对文生图不了,可以参考之前的介绍文生图的章节。
重绘幅度(Denosing strength)
图生图中最重要的参数即为重绘幅度,首先准备一个小姐姐,不输入任何正负 tag,研究下重绘幅度的对图片的影响,参数如下图所示
结果如下所示,可以看到妹子开始卸妆,最后到 0.6 直接换了一个人,1.0 直接和原图无关了。
我们不输入负向 tag,在正向 tag 中输入 Pikachu,可以看到前几张还算正常,0.8 之后就直接变成皮卡丘了
重绘幅度很重要,值越大表示对原图重绘幅度越大,一些放大类的插件或脚本,重绘幅度不能设置太大,否则会生成非常奇怪的结果,比如一个人变成整张图都是人,这是放大器的工作原理有关系,后需来一篇专门讲如何放大发图片到 2K、4K、8K
一般设置为 0.75,这样图片会有较大的变化。
缩放模式(Resize mode)
缩放模式默认拉伸,缩放模式指的是当原图和要生成的图的宽和高不一致的时候,是需要按照什么方式缩放,一共包含四种模式
- 拉伸
- 裁剪
- 填充
- 拉伸(放大潜变量)
选中右上角的小笔可以自行调整输入的图片范围
因为我们原图是 512x1024 分辨率,我们设置目标分辨率为 512x512 尝试,去除所有正负 tag,以全图作为输入,将重绘幅度设置为 0,结果如下所示,下图从左往右依次是拉伸、裁剪、填充、拉伸(放大前潜变量)
可以看到缩放模式和重绘幅度对最终画面产生的影响,缩放模式在图片比例不一致时告诉 AI 该以什么比例去缩放,下面在看一个更加直接的例子加深理解,我们对下面这张方形图变成宽图 512x512 的分辨率变为 860x460,注意此时要保留原图所有的正负 tag,因为我们要加大重绘幅度这时候需要告诉 AI 重绘的部分以原图的 tag 进行,提示词相关性设置为 5 避免对原有人物产生过变化
首先重绘幅度设置为 0 看下原始的缩放模式在分辨率变化后产生的影响,下图从左往右分别是
- 拉伸
- 裁剪
- 填充
- 拉伸(放大潜变量)
绘图(Sketch)
绘图会把颜色信息带入,重绘幅度越低,颜色信息表现得越明显,另外绘图会将输入图片的所有部分继续重绘
比如给衣服换个颜色,注意如果正向 tag 中有和衣服颜色相关的可以先去掉,避免对结果产生影响
- 提示词相关性 7
- 重绘幅度 0.1,0.4,0.5,0.6,0.7,0.8,1.0
如下所示,可以看到重绘幅度在 0.5 以内符合蒙版的颜色
再比如,画个房子,当然在正向 tag 中也需要一些提示,比如
重绘幅度分别设置为 0.1,0.4,0.5,0.6,0.7,0.8,0.9,1.0
可以发现 0.7 的效果比较符合草图,也有较大的重绘效果,再以 0.7 画几张试试
另外我们发现 0.6~0.7 之间变化最大,因此尝试下重绘幅度在 0.61~0.69 的区别,发现在 0.64 到 0.65 之间画风突然转换
后续又再次尝试了很多次,最终没找到渐变的过程,都是重绘幅度在某个值突然画风转变,再次细分,尝试了很多次没有找到画风渐变的过程
下面展示下在这个过程中感觉还蛮不错的几张
局部重绘(Inpaint)
局部重绘没有颜色信息,仅仅只针对蒙版部分或者非蒙版部分继续绘制(可通过选项控制),其中会多出几个选项,如下所示
其中比较重要的
比如换个换装
- 提示词相关性 7
- 重绘幅度 0.1,0.4,0.5,0.6,0.7,0.8,1.0
- 加上关键词 (blue school uniform:1.4),(pink t-shirt:1.4)
下面看看结果
发现在重绘幅度在 0.5 的时候比较符合结果,再将重绘幅度设置为 0.5 多尝试几批次,看起来也只是像
重绘幅度设置为 0.6 在试试
重绘幅度选择 0.6,重绘区域选择全图试试,似乎效果更好一些
重绘幅度选择 0.6、重绘区域选择全图、蒙版蒙住内容选择填充
重绘幅度选择 0.6、重绘区域选择全图、蒙版蒙住内容选择潜变量噪声
重绘幅度选择 0.6、重绘区域选择全图、蒙版蒙住内容选择潜变量数值零
重绘幅度选择 0.6、重绘区域选择全图、蒙版蒙住内容选择原图、蒙版模式选择重绘非蒙版内容,故名思意,就是衣服不换,其他全换。可以看到
局部重绘(手涂蒙版)(Inpaint sketch)
这就像是将绘图和局部重绘的结合版,即保留颜色信息也保留蒙版信息,和绘图(Sketch)的区别参考如下
What is the difference between Sketch and Inpaint Sketch
Sketch tries to colour the masked zone by rendering the whole image. So in the final, you will have a totally new image (it can be very close to what you had initially). Usually, when you use Sketch, you want to use the same prompt as you had initially. Maybe, with some changes regarding your new colouring.
Inpaint sketch rerenders only the masked zone, not touching the whole image. You can write a totally different prompt, and the inpaint will try to render your prompt in the masked area by using the colour you used.
Sketch 是将颜色信息带入然后重绘整张图,通常需要将所有的正负 tag 信息带入,而 Inpaint sketch 只重绘被遮住的部分,不会重绘整张图,可以完全书写不一样的 tag,然后会将颜色信息带入并且只重绘被遮住的部分
再来换个装
重绘幅度 0.6,可以看到在一定程度上参考了我们的颜色信息,而且没有写任何提示词,使用局部重绘换装似乎更好用一些
下面按照重绘幅度 0.1,0.4,0.5,0.6,0.7,0.8,1.0 依次进行,结果如下,可以发现重绘幅度在 0.4~0.6 之间效果比较符合预期,重绘幅度太大 AI 就开始在蒙版里面放飞自我了
换个颜色在试试
其他参数和局部重绘类似,大家可以自行尝试
脚本 - 回送(Loopback)
将输出的图片继续当作输入生成图片,迭代次数即最终生成几张,每张的前一张作为本次的输入参数一直迭代
脚本 - 向外绘制(Outpainting mk2)
采样方法 DPM++ SDE Karras、步数 20、重绘幅度 0.6、左边为原图,右边为左右外绘的图,虽然看起来不是很符合逻辑,但是一眼就能看出这个功能的含义了,就是向图像外进行绘制,如果边缘比较硬可以调高蒙版模糊像素试试
上面我们没有按照该脚本的推荐设置,下面我们按照推荐设置试试
- 步数 80
- 采样方法 Euler a
- 重绘幅度 0.8
脚本 - 效果稍差的向外绘制(Poor man`s outpainting)
参考向外绘制,这是一版过时的向外绘制,仔细看还是可以就看出边缘
脚本 - 使用 SD 放大(SD upscale)
关于放大在 Stable Diffusion 中有很多方法,后续会专门开一篇文章说明,此处简单描述,注意使用放大的时候重绘幅度要比较小,否则画面可能重绘幅度过大, 导致变化太多,重绘幅度太小可能导致没有添加足够多的细节,放大是在尺寸倍增的时候适当添加细节。
反推提示词
在顶部生成按钮的旁边有两个按钮,这两个按钮是用来反推提示词的,比如在随便一张照片,并不是 AI 生成自带提示词那种(AI 生成的也可以),他会根据图片的内容用文本去描述图片,第一次点击会下载相关依赖,比较慢一点
- CLIP 反推,可以看到,描述还是比较准确的,衣服、颜色、背景都符合图像,CLIP 反推一般是一句话描述
- DeepBooru 反推,结果也很准确,不过它的风格是关键词堆砌,很想我们在书写 tag 时的做法
相关文章