原文:Stable Diffusion教程:4000字说清楚图生图 - 知乎
目录
收起
基本使用
涂鸦绘制
局部绘制
局部绘制(涂鸦蒙版)
局部绘制(上传蒙版)
批量处理
总结
资源下载
“图生图”是 Stable Diffusion的 核心功能之一,它的主要能力是根据现有的图片 + 提示词生成新的改造图片,这在日常的工作和生活中都特别有用。
话不多说,让我们看看它都有什么神奇的魔法吧。
基本使用
本节以生成人物的二次元风格的照片为例,具体步骤如下:
1、在Stable Diffusion 大模型这里选择一个二次元模型:
2、在“图生图”这里上传一张人物肖像照,并编写对应的提示词和反向提示词。这里提示词是可选的,但是不填写可能会导致生成的图片效果质量不佳。
提示词:
best quality, masterpiece, super high resolution, 4k, adult women, asia, full body:1.4, long black hair, looking at viewer, beautiful detailed eyes, small breasts, white t-shirt:1.6, white pants:1.6, wide shot:1.3, strolling, beach:1.3, tree, beautiful detailed sky, blue sky
反向提示词:
deformed,bad anatomy,disfigured,poorly drawn face,out of frame,bad hands,unclear eyes,cloned face,bad face, disfigured, deformed, cross-eye
3、设置 Stable Diffusino的相关参数:
(1)缩放模式:因为参考图片和新生成的图片尺寸可能不一致,所以我们需要选择生成新图片时怎么处理参考图片。
这里有四种模式:拉伸、裁剪、填充和直接缩放,如果没有特殊需求,大家应该都不会喜欢拉伸和直接缩放的效果,它们的效果如下图所示:
当然如果参考图片和新生成图片的尺寸是一样的,这个【缩放模式】怎么设置都没有问题。
(2)采样器、采样步数:大部分采样器的效果差别不是很大,一般 Euler a 和20步采样就够了,其它的可以试试DPM+系列。后边会有文章专门讲采样器。
(3)生成图片的尺寸:一般保持和原图一样,也可以更改,更改时需要考虑【缩放模式】的影响。
(4)生成次数和每次数量:默认都是1,也就是只生成一次且每次只生成一张图片。增加【生成次数】会明显增加生成时间,增加【每次数量】会明显增大显存使用。
(5)提示词引导系数:默认为7,值越大生成图片越贴近提示词的描述,值越小AI自我发挥的越多,常见的设置是 5-12。
(6)重绘强度:新生成的图片会多大程度上改变参考图片,值越大新图片自由发挥的越多,越不像参考图片。这里我们不想让人物的二次元照片与原图相差太大,所以值设置的比较小。相同的值在不同的模型或者图片上的效果都可能是不同的,所以实际处理图片时还需根据效果进行调整。
然后我们就可以生成图片了,下边是我使用不同的重绘幅度做的图:
涂鸦绘制
涂鸦绘制就是在原图上画一个代表某种事物的形状,然后让Stable Diffusion结合我们的提示词在图片中生成对应的元素。下面这个例子是给女孩添加一副天使的翅膀。
1、选择合适的大模型,提示词中声明你想要在画面中出现的元素。
2、在下面的 Generation 选项卡中选择“涂鸦绘制”,上传一张要涂鸦的图片,然后使用画笔工具在图片上画出你想要的形状,这里可以选择我们想要的颜色。天使的翅膀我想是白色的,但不应该是纯白,所以我这里选择一个有点灰的白色。
3、Stable Diffusion 的参数没什么好说的,注意缩放模式和图片尺寸的搭配,重绘强度建议从0.5开始,然后根据实际出图效果调整。
4、然后就可以生成图片了,看下边的效果。
可以看到,翅膀是画出来了,不过画面上的其它部分也产生了一些变化,涂鸦绘制是整张图片的重绘,某些场景下这不够完美,解决这个问题需要使用下文介绍的涂鸦蒙版。
使用这个技术,我们还可以在图片上写几个字,Stable Diffusion会把文字处理成画笔书写的效果,比较好看一些。
局部绘制
局部绘制是只更改原图片的部分区域,具体方式是使用画笔涂抹盖住一些部分,然后我们可以选择只重新绘制盖住的部分,或者只重新绘制没有盖住的部分。在 Stable Diffusion 中盖住的部分称为蒙版内容。
这里以把姑娘的头发颜色修改成金色为例。
1、基础模型选择一个匹配照片风格的;为了修改颜色,我们需要在提示词中着重描述重绘需求。提示词可以只描述要重绘的部分,也可以是一个完整的图片描述,重绘幅度较大时建议只描述要重绘的部分,否则重绘的部分可能与原图衔接不好。
2、在 Generation 选项卡中点击“局部绘制”,上传一张图片后,使用画笔工具涂抹要重绘的部分。
3、其它 Stable Diffusion 参数如下:
(1)蒙版模糊度:设置重绘部分与原图的衔接处的模糊度,起到渐变的作用,让衔接看起来比较自然。衔接不好时可以调大一点看看。
(2)蒙版模式:绘制蒙版内容,也就是绘制被蒙住的内容;绘制非蒙版内容,也就是绘制没有蒙住的部分。怎么选择?我的经验是哪个涂抹的少选择哪个,给自己减少一些工作。比如这里要重绘头发,头发的区域相比整个图片要小很多,我们就涂抹头发,这里选择绘制蒙版内容;如果头发的区域很大,我们就可以涂抹其它区域,然后这里选择绘制非蒙版内容。
(3)绘制区域:选择全图时Stable Diffusion会先重绘整张图片,最后出图时再替换到原图中;仅蒙版时,Stable Diffusion只绘制需要重绘的部分。个人感觉出图效果没有太大差别,有兴趣的可以多试试对比下。
(4)仅蒙版绘制参考半径:绘制区域仅蒙版时,绘制区域向外拓展的数量,单位是像素。使用这个参数可以解决蒙版边缘不好涂抹的问题,效果类似我们手动涂抹时向外多涂抹一点,让新生成的部分与原图衔接的更好。
(5)图片尺寸:根据需要设置,注意选择合适的缩放模式。我这里只改颜色,所以和原图保持一致。
(6)重绘强度:多大程度上改变原图的内容。因为改头发颜色还是相对困难的,所以我这里火力全开,设置为最大的1。默认是0.75,需要根据实际出图效果调整设置。
4、最后给大家看下局部重绘的效果:
可以看到头发已经变成金色的了,但是头发的外形也发生了一些变化,这说明 Stable Diffusion是重新绘制,而不是简单的上色;而且只有蒙版蒙住的部分重新绘制了,其它部分都没什么变化。
这个技术用途比较大,比如给模特换衣服,当然如果要换指定的衣服还得结合其它技术才行。
局部绘制(涂鸦蒙版)
上面我们介绍了涂鸦绘制,但是涂鸦绘制会重绘整张图片,涂鸦蒙版可以解决这个问题。
还是以给人物加上天使的翅膀为例。
1、选择匹配画面风格的大模型,填写想要绘制的画面内容,上传图片,选择合适的颜色,在图片上画出想要的形状。
2、Stable Diffusion 的参数中多了一个蒙版透明度,值越大绘制的内容越透明;另外这里的重绘强度我们可以选择的高一点,因为重绘只针对图片的部分画面,我们不需要担心其它部分会被改变的太多。
3、话不多说,还是看一下效果:
4、再分享几个例子:
给姑娘头上戴上一朵小黄花。
给姑娘剪个头发。
在天上画个地图(区域有点小了,大家可以试试大图)。
局部绘制(上传蒙版)
上面我们演示了涂鸦蒙版的效果,但是这种手绘的蒙版还有个问题:不够精准,绘制起来也比较麻烦。
上传蒙版可以解决这个问题,我们可以使用别的工具来制作一个精准的模版,然后上传到局部绘制,再进行重绘。
还是以本文的姑娘照片为例,我们将使用上传蒙版分别重绘人物和背景。
1、选择匹配画面风格的大模型,在提示词中编写想要重绘的内容。
提示词1(绘制蒙版内容,亚洲姑娘换成金发碧眼的美国姑娘):
best quality, masterpiece, super high resolution, 4k, 1girl, american, full body:1.4, long golden hair, looking at viewer, beautiful detailed eyes, brown t-shirt:1.31, blue jeans:1.31
提示词2(绘制非蒙版内容,背景换成战火纷飞的街道):
best quality, masterpiece, super high resolution, 4k, 1girl standing in the middle of war-torn streets
反向提示词:
deformed,bad anatomy,disfigured,poorly drawn face,out of frame,bad hands,bad fingers,unclear eyes,cloned face,bad face, disfigured, deformed, cross-eye, EasyNegative
2、在“局部绘制(上传蒙版)”中分别上传原图和蒙版图。
蒙版图可以使用 Stable Diffusion WebUI 的一个抠图插件制作:stable-diffusion-webui-rembg,我在之前的文章中介绍过它,点击此处前往AI抠图的教程。
3、Stable Diffusion 参数设置。注意我们这里要使用两种蒙版模式分别绘制。
4、然后就可以生成图片了,效果图如下:
批量处理
“批量处理”可以完成一组图片的“图生图”处理。
1、我们首先还得选择一个大模型,编写相关的提示词(不过这个提示词也可以不填,具体原因后边的内容会有说明)。
2、再往下看,“批量处理”有一组特别的参数,如下图所示:
(1)输入目录:原图所在的目录,必须设置。
(2)输出目录:新生成图片的存放目录,必须设置。
(3)批量绘制遮罩图片目录:如果需要根据蒙版进行局部绘制,这里制定蒙版图片所在的目录,蒙版图片的文件名需要和“输入目录”中的文件名一一对应。
(4)Controlnet输入目录:如果使用Controlnet,这里需要指定Controlnet中使用的参考图片。留空则使用“输入目录”中的文件。
(5)PNG info:提取一组图片中的信息作为批量“图生图”时每张图片的参数。比如我们提前生成好了一组图片,现在想把它们转换为另外的风格,通过启用这个参数,就可以在生成新图片时使用原图片的生成信息,以最大化保留原图中的各种元素。启用这个参数,需要勾选上“Append png info to prompts”,它还有几个子参数:
“PNG info directory”设置用来提取生成参数的图片目录,其中的图片文件名需要和“输入目录”中的文件名一一对应,默认为“输入目录”; “Parameters to Take from png info” 为想要使用的图片生成参数,按照自己的需要勾选就可以了,注意如果勾选了提示词,它会被追加到“图生图”的提示词中。如果我们想完全使用这些图片的提示词,可以把页面上方“图生图”的提示词和反向提示词留空。3、再往下,是 Stable Diffusion 的一些标准参数。注意如果勾选了“Append png info to prompts”,生成图片时下图红框中的参数会被替换掉。
批量生成后,我们可以在输出目录找到新生成的图片,图片处理效果上面都演示过了,这里就不展示了。
总结
通过以上演示,我们可以看到,图生图能够参考原图,再依据我们的指令生成新图。在这个重绘的过程中,我们可以使用涂鸦、蒙版等来影响出图的效果,这是一种精准控制的能力,不过这还不够,如果需要更多的精准控制,我们需要使用ControlNet:Stable Diffusion基础:精准控制之ControlNet 。
资源下载
如果你对 Stable Diffusion 感兴趣,我整理了很多 SD 相关的模型、插件,都已经上传到我整理的 Stable Diffusion 绘画资源中,后续也会持续更新,如有需要,请关/注/公/众/号:萤火遛AI(yinghuo6ai),发消息:SD,即可获取下载地址。