前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【玩转 GPU】Stable-Diffusion Inpaint小知识:Mask blur的作用

【玩转 GPU】Stable-Diffusion Inpaint小知识:Mask blur的作用

原创
作者头像
buzzfrog
修改2023-06-09 14:52:20
2.7K1
修改2023-06-09 14:52:20
举报
文章被收录于专栏:云上修行云上修行

大家在使用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

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 mode==Inpaint masked)

结论先行

Mask blur值越小,边缘明显越锐利。Mask blur值变大后,是会在黑白边缘线向白色区域方向和(黑色区域双向??)做羽化,留下部分原图细节,越往白色区域内部,就越模糊,直至全填充的颜色(Mask content==fill)。在蒙版不是那么准确的情况下,就算Mask blur==0,初始图也会有一个细边框。因此换人场景的建议是蒙版图白色区域应该边缘向外扩展一点,再做一点Mask blur羽化效果。在Denoising strength足够大的情况下,最后生成的结果受到Mask blur影响几近于无。

Mask blur==0

Mask blur==0
Mask blur==0

Mask blur==4

Mask blur==4
Mask blur==4

Mask blur==20

Mask blur==20
Mask blur==20

Mask blur==32

Mask blur==32
Mask blur==32

Mask blur==48

Mask blur==48
Mask blur==48

Mask blur==64

Mask blur==64
Mask blur==64

换背景场景(即蒙版是人的位置白色、背景黑色、Mask mode==Inpaint not masked)

结论先行

当Mask mode==Inpaint not masked时,本质是做了蒙版图的黑白反转。因此从换人变成了换背景。由于Mask content==fill选择了填充内容,所以原始图从白色背景变成了和衣服颜色近似的粉紫色。当Mask blur逐步变大时,人和背景之间会出现原始图白色背景颜色的白边,且白边逐步变宽。在Denoising strength足够大的情况下,最后生成的结果受到Mask blur影响几近于无。从人物头发颜色的影响看,感觉是沿着黑白线向两侧双向透明的影响。

Mask blur==0

Mask blur==0 Mask mode==Inpaint not masked
Mask blur==0 Mask mode==Inpaint not masked

Mask blur==4

Mask blur==4 Mask mode==Inpaint not masked
Mask blur==4 Mask mode==Inpaint not masked

Mask blur==20

Mask blur==20 Mask mode==Inpaint not masked
Mask blur==20 Mask mode==Inpaint not masked

Mask blur==32

Mask blur==32 Mask mode==Inpaint not masked
Mask blur==32 Mask mode==Inpaint not masked

Mask blur==48

Mask blur==48 Mask mode==Inpaint not masked
Mask blur==48 Mask mode==Inpaint not masked

Mask blur==64

Mask blur==64 Mask mode==Inpaint not masked
Mask blur==64 Mask mode==Inpaint not masked

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Mask blur
  • 换人场景(即蒙版是人的位置白色、背景黑色、Mask mode==Inpaint masked)
    • 结论先行
      • Mask blur==0
        • Mask blur==4
          • Mask blur==20
            • Mask blur==32
              • Mask blur==48
                • Mask blur==64
                • 换背景场景(即蒙版是人的位置白色、背景黑色、Mask mode==Inpaint not masked)
                  • 结论先行
                    • Mask blur==0
                      • Mask blur==4
                        • Mask blur==20
                          • Mask blur==32
                            • Mask blur==48
                              • Mask blur==64
                              相关产品与服务
                              云服务器
                              云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档