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

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

原创
作者头像
buzzfrog
修改2023-06-09 16:01:26
3.9K3
修改2023-06-09 16:01:26
举报
文章被收录于专栏:云上修行云上修行

大家在使用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局部绘制

在stable-diffusion-webui中,"Inpaint" 功能可以通过黑色的画笔,确定需要重绘的区域,然后通过sd重绘该区域的内容。

Inpaint
Inpaint

"Inpaint Sketch" 功能可以通过彩色的画笔,确定需要重绘的区域,并且像Sketch功能一样设置重绘的颜色。

Inpaint Sketch
Inpaint Sketch

"Inpaint Upload" 功能可以通过上传一张蒙版图,帮助用户修复或编辑的【蒙版图白色区域】(当Mask mode值为Inpaint not masked时,则为蒙版图黑色区域)图像,并进行后续的操作和处理。

Inpaint Upload
Inpaint Upload

额外说明一下,在稳定扩散图像处理中,"Inpaint" 是一种技术,用于修复图像中的缺陷或缺失部分。它可以通过对图像周围的像素进行插值或外推来填补缺失的区域,从而使图像看起来更完整。

Mask蒙版

在图像处理中,"Mask"(蒙版,或翻译为掩模,这里统一使用蒙版)是一种用于指定图像区域的二进制图像。掩模图像中的像素值通常为 0 或 1,其中 0 表示不包含在指定区域内的像素,1 表示包含在指定区域内的像素。在二进制图像中,通常约定 0 表示黑色,1 表示白色。在这种约定下,黑色通常表示需要排除或去除的区域,白色则表示需要保留或处理的区域。这个原始概念在“Inpaint Upload”上,就需要理解为蒙版图白色区域是需要重绘的(而非保留不变的)区域。

蒙版相关参数

Mask blur:蒙版羽化,在 0-64 之间调节,就是将我们涂抹(或正常白色蒙版)区域,从边缘向中间透明过渡。数值较小的时候,边缘越锐利,所以一个合适的值会让图片看起来更真实,数值一般默认4即可,对于更换背景图这样的场景,一般建议设置为0

Mask transparency(缺省仅在Inpaint sketch栏目中才有):蒙版透明度,一般默认为0,即不透明,因为透明度越高,AI发挥的空间越小,基本上当透明度大于60,预处理就会失去作用

Mask mode:模版模式,包括 inpaint masked绘制蒙版内容、inpaint not masked绘制非蒙版内容,选择第一个就是只在蒙版区域重绘,另一种则相反(可以理解为将蒙版图中的0与1,黑与白互换),默认值是inpaint masked绘制蒙版内容

Masked content:蒙版内容,包括 fill 填充、original 原图、latent noise 潜在噪声、latent nothing 无潜在空间。

Inpaint area:重绘区域,包括 whole picture全图、only masked仅蒙版。全图重绘是指在原图大小的基础下绘制蒙版区域,优点就是内容与原图融合的更好,缺点是不够细节;而蒙版重绘是指处理的时候将蒙版区域进行放大到原图的尺寸,画完之后再缩小放到原图的相应的位置,优点就是细节更好,缺点也是细节太多,与原图融合的不够好

Only masked padding, pixels:当选择Only masked 仅重绘蒙版区域 模式时,我们可以通过此参数来调整放大区域的边界来控制重绘的精度。边界越大,运行Only masked模式时放大的倍数就越小,但是周围能参考的区域也就越多,这样绘制出来的效果相对更加平滑,不容易出现瑕疵。反之,如果边界越小,放大的倍数就越大,这样就能够更加精细地绘制出图像的细节,但也可能会出现与原始图像中其他物体关系错乱的情况,例如人物的衣着不连续或阴影明暗错位。因此,在选择放大倍数时,需要根据具体情况进行权衡和取舍,以得到最佳的绘制效果。

Masked content

Masked content有四种选项:

  • fill 填充
  • original 原图
  • latent noise 潜在噪声
  • latent nothing 无潜在空间

这是一种预处理的步骤,其中fill 填充是指使用蒙版边缘图像的颜色填充,不过颜色已经被高度模糊;original 原图则是同原图一样不改变任何细节;而latent noise 潜在噪声则是使用噪点进行填充;而latent nothing 无潜在空间就是噪点值为0的状态

本文在Inpaint upload下,结合实战案例来看一下Masked content的各个值的效果。

参数截图如下:

这里需要说明一下,Steps代表采样迭代步骤,采样迭代步骤越多,就越接近目标要求,或者采样迭代步骤过大变得过拟合;Denoising(Denoising strength)本质代表去除噪声的强度,这个参数决定了我们重绘幅度,也就是说参数越高,幅度越大,图片生成差距越大。经测试参数超过0.75基本上和原图没啥关系了。

fill 填充

fill 填充是指使用蒙版边缘图像的颜色填充,不过颜色已经被高度模糊

fill 填充
fill 填充

左上角Steps=1,Denoising=0.0,基本代表初始化的原始图。右上角Steps=20,Denoising=0.0,代表在fill 填充模式下,直观展示使用蒙版边缘图像的颜色填充的图。右下角几张图代表是相对最符合prompts提示词的生成图。

original 原图

original 原图则是同原图一样不改变任何细节

original 原图
original 原图

左上角Steps=1,Denoising=0.0,基本代表初始化的原始图。右上角Steps=20,Denoising=0.0,代表在original 原图模式下,直观展示使用原图改变任何细节的图。右下角几张图代表是相对最符合prompts提示词的生成图。

latent noise 潜在噪声

latent noise 潜在噪声则是使用噪点进行填充

latent noise 潜在噪声
latent noise 潜在噪声

左上角Steps=1,Denoising=0.0,基本代表初始化的原始图。右上角Steps=20,Denoising=0.0,代表在latent noise 潜在噪声模式下,直观展示使用噪点进行填充的图。右下角几张图代表是相对最符合prompts提示词的生成图。

latent nothing 无潜在空间

latent nothing 无潜在空间就是噪点值为0的状态

latent nothing 无潜在空间
latent nothing 无潜在空间

左上角Steps=1,Denoising=0.0,基本代表初始化的原始图。右上角Steps=20,Denoising=0.0,代表在latent nothing 无潜在空间模式下,直观展示使用噪点值为0的状态图。右下角几张图代表是相对最符合prompts提示词的生成图。

总结

为什么以上四种模式左上角的图不一样,这是因为已经跑了一个Step,且seeds设置为-1,每次生成时的seeds都不一样的缘故。

我用一致的seeds再重新跑了四张,初始化的原始图就明显比较一致了,见下图。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Inpaint局部绘制
  • Mask蒙版
  • 蒙版相关参数
  • Masked content
    • fill 填充
      • original 原图
        • latent noise 潜在噪声
          • latent nothing 无潜在空间
            • 总结
            相关产品与服务
            云服务器
            云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档