Stable Diffusion实战篇:用Layer Diffusion2,把人和背景拆开

AI教程 2024-04-26

在上一篇笔记中简单学习了Layer Diffusion的操作方法,其实也不难,主要的问题是现在这个Layer Diffusion还不太成熟。

目前大家比较熟悉的WebUI对于这项技术适配程度不高,很容易出问题。为了这个Layer Diffusion还要专门去下载一个ForgeUI,虽说Comfy UI也能用但是就没那么方便。

但是我毕竟都写了个开头了还是学完会比较好,你们可以不看但我不能不学啊。

image.png

Layer Diffusion的进阶操作

在上篇笔记中用LayerDiffusion生成了透明的图片,其实光生成这个也没那么厉害,在Layer Diffusion中有个Method方案。

image.png

这点开之后可以发现有很多种方案可以选择

image.png

放大来看这些对应了不同版本底模下的处理方式,其区别在于运行的Layer Diffusion模型,在每次启用时后台都会自动下载对应的模型文件。

当然如果下载失败了也可以去文末的链接中下载对应文件,然后手动放到模型存储路径即可:

image.png

先看哪些有SDXL的方案:

image.png

第一种:Foreground to blending根据前景补全背景

在绘画前会先将一张图片定义成前景(Foreground)和背景(Background):

image.png

像这样的一张图片,在前面的人物就是前景,后面的高楼大厦就是背景,而这样子一张图融合在一起则是被称为Blending(前背景融合的成品)

选择了之后会多出一个可以导入前景的窗口,在这里可以导入一张透明底的PNG图片:

image.png

导入之后在上方提示词框中输入根据图片形象和预想的完整画面内容,例如导入了一张女孩的图片,那么提示词可以输入:

best quality, masterpiece, original, 1girl wearing white cloth and black skirt in the classroom, indoors, afternoon, sunset, cinematic lights

这样图片就会根据人物和提示词生成并融合一张图片出来:

image.png

如果生成之后只想要那个背景的话,则选择方案中的From Foreground and Blending to Background。

image.png

这样一来下方就会变成两个输入框:

image.png

左边输入前景、右边输入融合图:

image.png

如果只是要背景的话提示词部分需要去掉关于人物的描述,或者加入no_humans这类限制词。

image.png

这样一来就可以把融合图里的背景“提取”出来了,如果在每一次操作后都手动保存一下成品的话就可以同时得到图片的前景层和背景层。

第二种:根据背景生成前景From Background to Blending

有了根据前景生成背景,当然也有根据背景生成前景的操作。

image.png

这里导入的就是背景图了:

image.png

在导入图片后在提示词中描述想要在图片里出现的前景图内容:

A photo of a woman wearing yellow dress walking on the street, outdoors, day, cloudy blue sky, plants.

image.png

虽说乍一看没啥问题,但是多生成几次的话会发现其对空间关系、比例大小的理解还不够,换句话说就是不知道这个生成的东西要摆在哪里好。

image.png

在开发者日记中也有提到AI会部分影响画面色彩和细节,所以这个操作在目前并不是很常用到,比较稳妥的方法还是直接生成透明底内容然后再合成进画面里。

当然还有另一种,就是在有了背景图和融合结果的情况下智能扣出背景图:

image.png

操作是一样的,只不过导入的换成了背景图和融合图,这样一来生成的部分就是前景啦:

image.png

Only Generate Transparent Image像是这样的仅透明选项对应的是一开始示范的直接生成透明底PNG的玩法

image.png

这两个版本的区别在于训练模型的时候一个是针对常规注意力层(Attn),另一个则是针对卷积层的(Conv),如果不太了解这俩的可以看我这篇笔记:

image.png

上述的选项都是基于SDXL模型训练出来的,而在上方还有(SD1.5)为开头的选项,这些则是基于SD1.5的模型训练出来的。

如果选择了这些模型的话,主页面左上角的Stable Diffusion模型记得切换为SD1.5的大模型。

最基本的仅透明Only Transparent模型和XL的一样直接出透明底图片,其他的选项也和上面说的大同小异。但是这里还有一个额外的选项是SDXL没有的:

image.png

这个选项就是Layer Diffusion的最终操作,直接生成一个“三合一”的前景、背景、融合图组合。

不过有几点要注意:

上方参数的单批数量Batch size的设置为3或者3的倍数

image.png

因为这个选项是一次性输出三张图片(前景+背景+融合图)

另一个则是LayerDiffusion下面的菜单中会出现三个额外的Prompt输入框:

image.png

这三个输入框分别对应前景、背景和整体的画面描述,这些提示词可以更好地引导画面进行图像生成。

在最上方的提示词框中可以只保留最基本的质量提示词,例如high quality, masterpiece等。

image.png

worst quality, text, ugly, (deformed iris, defomed puplis), text, worst quality, low quality, jpeg artifacts, ugly, duplicate, morbid, mutilated, (extra fingers),(mutated hands),poorly drawn hands, poorly drawn face, mutation,

在下方的提示词框中则是可以输入自己想要画面生成的内容(描述人和场景):

image.png

这样之后点击生成就能一步到位生成出完整的前景、背景和融合图了:

image.png

至于为什么SDXL的模型选项没有这么一个功能,根据开发者说明提到:其实这个功能已经在炼制的过程中了,但是由于占用的资源太多所以暂时搁置了:

image.png

Layer Diffusion的扩展延伸

Layer Diffusion其实不太依赖模型,它几乎可以和任何风格的1.5/XL模型搭配使用。当然也会有点小瑕疵,例如会出现画面崩坏的情况(因为对提示词理解不准确,常见于1.5版本);或者是生成对象的位置/比例不合理的情况。

其AI绘画的随机性仍然存在,遇到这种情况最好的还是重新多“抽”几次或者简单的后期处理。

高清修复等一系列在之前的Stable Diffusion操作也可以在这里使用,甚至LoRA也能混合着使用。而另一个重点:ControlNet也是可以在Forge UI中使用的。

image.png

ControlNet就不必我多说了,它进一步提高了LayerDiffusion的可控性。不过要注意的是,现阶段输出的透明底PNG似乎不会直接被保存到输出文件夹中,所以有觉得不错的成品记得手动下载保存下来。

@版权声明:部分内容从网络收集整理,如有侵权,请联系删除!

相关文章