大家在使用stable diffusion webui,通过img2img做Inpaint局部绘制,包括Inpaint、Inpaint sketch、Inpaint upload,会听到很多与蒙版mask相关专业术语。我将会写一系列文档来说明白各个专业术语对应参数的作用。
测试环境为:
腾讯云CVM: GPU推理型GI3X | GI3X.8XLARGE64 | 32核 64GB 配置 1 颗 NVIDIA T4
操作系统: CentOS 8 64位
stable-diffusion-webui
python: 3.10.6
torch: 1.13.1+cu117
xformers: N/A
gradio: 3.23.0
commit: 22bcc7be
checkpoint: 6ce0161689
这是第二篇,希望了解Inpaint局部绘制、Mask蒙版、蒙版相关参数概览、Masked content的,可以点击以下链接:
Stable-Diffusion Inpaint小知识:Masked content的作用
Mask blur是指蒙版羽化,值在 0-64 之间调节,就是将我们涂抹(或正常白色蒙版)区域,从边缘向中间透明过渡。数值较小的时候,边缘越锐利,所以一个合适的值会让图片看起来更真实,数值一般默认4即可,对于更换背景图这样的场景,一般建议设置为0
本文主要通过实验展示不同的Mask blur值,对于图片生成的过程和图片生成的结果有怎么样的影响。
sdwebui的参数设置如下图所示:
原图和蒙版图都是512x768的。为了对比效果明显,以下实验使用的Seed尽可能不是-1随机数,而是一个固定值347938668。
实验通过使用Script脚本X/Y/Z plot能力,控制Denoising(Denoising strength值)分别为0, 0.1, 0.3, 0.5, 0.7, 0.9;手工设置(谁能告诉我如何使用Script脚本X/Y/Z plot能力来设置Mask blur???)控制Mask blur分别为0, 4, 20, 32, 48, 64,其他参数不变的情况下,看Mask blur对图片生成有什么影响。
另外,为了确定Mask blur的扩散方向是否受Mask mode和Masked content影响,我也做了相关实验。
这里需要说明的是,当Denoising为0的时候,代表的是图片生成过程中的原图(当然因为有Sample Index Steps的影响,其实和原图略有不同),随着Denoising值越来越大,代表的是图片生成的最终效果,乃至过大变得过拟合。
以下实验图,Denoising都是从左到右逐步变大。
Mask blur值越小,边缘明显越锐利。Mask blur值变大后,是会在黑白边缘线向白色区域方向和(黑色区域双向??)做羽化,留下部分原图细节,越往白色区域内部,就越模糊,直至全填充的颜色(Mask content==fill)。在蒙版不是那么准确的情况下,就算Mask blur==0,初始图也会有一个细边框。因此换人场景的建议是蒙版图白色区域应该边缘向外扩展一点,再做一点Mask blur羽化效果。在Denoising strength足够大的情况下,最后生成的结果受到Mask blur影响几近于无。
当Mask mode==Inpaint not masked时,本质是做了蒙版图的黑白反转。因此从换人变成了换背景。由于Mask content==fill选择了填充内容,所以原始图从白色背景变成了和衣服颜色近似的粉紫色。当Mask blur逐步变大时,人和背景之间会出现原始图白色背景颜色的白边,且白边逐步变宽。在Denoising strength足够大的情况下,最后生成的结果受到Mask blur影响几近于无。从人物头发颜色的影响看,感觉是沿着黑白线向两侧双向透明的影响。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。