最新版本 Stable Diffusion 开源 AI 绘画工具之图生图进阶篇

✨ 目录

    • 🎈 图生图基本参数
    • 🎈 图生图(img2img)
    • 🎈 涂鸦绘制(Sketch)
    • 🎈 局部绘制(Inpaint)
    • 🎈 涂鸦蒙版(Inpaint sketch)
    • 🎈 上传蒙版(Inpaint upload)

🎈 图生图基本参数

  • 图生图功能主要包括六大类:图生图 / img2img涂鸦绘制 / sketch局部绘制 / inpaint局部绘制之涂鸦蒙版 / inpaint sketch局部绘制之上传蒙版 / inpaint upload批量处理 / batch
  • 而图生图的基本参数包括但不限于以下几种:
  • Resize mode: 缩放模式,包括 拉伸/Just resize裁剪/crop and resize填充/resize and fill仅调整大小(潜空间放大/just resize (latent ipscale) ,缩放模式指的是当原图和要生成的图的宽和高不一致的时候,选择的缩放模式,一般选择裁剪,如果原图和生成图的宽高一致的时候,选择任意均可
  • Mask blur: 蒙版模糊度,在 0-64 之间调节,就是将我们涂抹区域,从边缘向中间透明过渡。数值较小的时候,边缘越锐利,所以一个合适的值会让图片看起来更真实,数值一般默认即可
  • Masked content: 蒙版蒙住的内容,包括 填充/fill原图/original潜在噪声/latent noise无潜在空间/latent nothing。这是一种预处理的步骤,其中填充是指使用蒙版边缘图像的颜色填充,不过颜色已经被高度模糊;原图则是同原图一样不改变任何细节;而潜在噪声则是使用噪点进行填充;而无潜在空间就是噪点值为0的状态,可以看到只有原图保留了原来的画面,所以一般选择原图即可
  • Mask transparency: 蒙版的透明度,一般默认为0,即不透明,因为透明度越高,AI发挥的空间越小,基本上当透明度大于60,预处理就会失去作用
  • Mask mode: 蒙版模式,包括 绘制蒙版内容/inpaint masked绘制非蒙版内容/inpaint not masked,这个很好理解,选择第一个就是只在蒙版区域重绘,另一种则相反,正常一般默认第一个即可
  • Inpaint area: 绘制区域,包括 全图/whole picture仅蒙版/only masked。全图重绘是指在原图大小的基础下绘制蒙版区域,优点就是内容与原图融合的更好,缺点是不够细节;而蒙版重绘是只处理的时候将蒙版区域进行放大到原图的尺寸,画完之后再缩小放到原图的相应的位置,优点就是细节更好,缺点也是细节太多,与原图融合的不够好
  • Denoising strength: 重绘强度,默认0.75,低强度就是基本不重绘,越高重绘越强,融合越不好,所以默认即可
  • 虽然图生图的参数比较多,但大多数的时候,我们选择默认即可,因为很多时候,只需要正确的选择而非过多的选择,个人也仅仅设置一下缩放模式、采样器、采样步骤和宽高进行出图

个人常用出图参数

🎈 图生图(img2img)

  • 可以根据你上传的图片生成一张在原图基础上创作的新图片
  • 可以通过修改 Prompt 去自定义想要的结果图片,比如白色头发,红色眼睛等等

图生图

🎈 涂鸦绘制(Sketch)

  • 在原图基础上涂鸦后,进行二次创作,这是最基础的用法,当然也可以进行线稿的上色
  • 模型要选择好,如果想要生成二次元的,记得选择二次元模型,下图测试选择的是真人模型
  • 在进行线稿上色的时候,设置 缩放模式为裁剪 ▶ 采样器是 DPM++ 2M Karras ▶ 采样步骤设置的是30 ▶ 脚本 Script 中选择是图像迭代 Loopback ▶ 迭代次数设置成多少生成的图片就是多少张,一般设置2-4,防止显卡撑不住 ▶ 最终的重绘强度 Final denoising strenght 设置成了 0.88 ▶ 重绘曲线选择 Linear ▶ 迭代中反推提示词选择 DeepBooru,生成的最终图片效果还是很棒的

线稿上色

🎈 局部绘制(Inpaint)

  • 在局部绘制中,我们只需要将需要重绘的地方圈出来,然后加上 Prompt 提示词即可
  • 其中蒙版的黑色画笔并不是一种真的颜色,它是一片代表透明(不可见)属性的区域
  • 比如,将图片中的女生头发换成一头白发,只需要将图片上的头发区域涂上蒙版,然后在 Prompt 中输入 white hair 提示词即可
  • 当然这里只作为测试,如果想要更好的效果,自己设置更多的 Prompt 进行描述,除了头发,其他任何区域都可以进行重绘

一键换发

🎈 涂鸦蒙版(Inpaint sketch)

  • 相比于局部重绘,多了一个蒙版透明度的配置,这是因为这里的蒙版是可以自定义颜色的
  • 在局部绘制中画笔只有黑色,而在涂鸦蒙版中蒙版的颜色会影响到原图,选择什么颜色最终重绘都会往这个颜色上靠
  • 蒙版透明度按照需要颜色的程度调节,最好不要超过40
  • 比如将动漫女生衣服换成红色的旗袍,只需要将衣服用红色的画笔涂抹,然后在 Prompt 中输入中国旗袍的英文解释即可,因为涂鸦蒙版的颜色是会影响到原图的,所以如果是用蓝色涂抹衣服,最终将会生成蓝色的旗袍

一键换衣

🎈 上传蒙版(Inpaint upload)

  • 跟涂鸦蒙版其实差不多,只是上传的蒙版需要借助其他工具如PS的处理,相比直接手涂肯定是更精确

  • 上传蒙版的蒙版在制作时可以设置部分透明的效果(不同程度的灰),还有边缘的羽化等等。此时需要注意具有相同效果的蒙版模糊的使用

    需要注意的一点是,在上传蒙版中,白色代表重绘,黑色代表不处理。也不用细分,如果弄错了,在蒙版模式中选择重绘非蒙版就可以

  • 为了方便测试,就将图片放到涂鸦蒙版中,用黑白两色把原图进行圈出,截图上传到上传蒙版中了,顺便加了 Prompt 的参数是天空、建筑物、人物等,可以看出 AI 只在白色区域进行了重绘,而圈出的黑色是没有重绘的

  • 还有最后一个批量处理功能,用的不多,也不用讲太细,只要输入图片所在目录路径、图片处理后保存的路径以及蒙版路劲即可批量处理

自定义蒙版


http://www.niftyadmin.cn/n/230161.html

相关文章

GPS北斗同步时钟(网络时间源)助力数字化政务系统

GPS北斗同步时钟(网络时间源)助力数字化政务系统 GPS北斗同步时钟(网络时间源)助力数字化政务系统 摘要:随着电子政务的不断发展,许多省份都建立了自己的政务网络,使用的网络设备和服务器日益增…

LabVIEW-数组数据类型

数组是将一系列、同一类型的数据组合到一起。在LabVIEW 中,数组可以是字符串类型、数值型或者布尔型等多种数据类型中的同类数据的集合。但不能创建以数组为元素的数组,也不能创建图标和图形数组。 目录 创建数组 ​编辑 数组相关函数 求数组大小 初…

ZNS 架构实现 : 解决传统SSD问题的高性能存储栈设计

声明 主页:元存储的博客_CSDN博客 依公开知识及经验整理,如有误请留言。 个人辛苦整理,付费内容,禁止转载。 内容摘要 2.2 ZNS 的架构实现 先看看 支持zone 存储的 SMR HDD 以及 支持 zonefs 的 nvme ssd 的整个存储栈形态 其中对…

棒球升学之路上更多机会和优势·棒球1号位

一、学习棒球升学的意义 学习棒球不仅仅是为了锻炼身体,更是为了提高自身技能和竞技水平。而通过棒球的学习和训练,还有可能为自己的升学之路带来更多的机会和优势。 首先,学习棒球可以提高学生的综合素质。棒球是一项团队运动,…

远程管理服务器 ssh客户端工具使用 2(运维笔记)

远程管理服务器 ssh客户端工具使用 2(运维笔记) 将jumper-server的a.sh文件拷贝到server1 /tmp路径上 [rootjumper-server ~]# touch a.sh [rootjumper-server ~]# ll 总用量 8 -rw-------. 1 root root 1752 4月 12 05:48 anaconda-ks.cfg -rw-r--r-…

Qt Quick - 导航控件综述

Qt Quick - 导航控件综述一、概述二、StackView控件三、SwipeView控件四、TabBar控件五、TabButton控件一、概述 Qt Quick Controls提供了一系列导航模型。 控件功能Drawer可以用滑动手势打开和关闭的侧滑动面板StackView提供基于堆栈的导航模型SwipeView允许用户通过横向滑动…

【C++】C/C++内存管理:

本篇的内存管理主要是动态内存管理。 1.C中的malloc、realloc、calloc和free函数: 【面试问题】 malloc、calloc和realloc的区别是什么? malloc申请的内存值是不确定的 calloc却在申请后,对空间逐一进行初始化,并设置值为0 异…

java微服务商城高并发秒杀项目--011.授权规则和系统规则

授权规则在shop-order-server中新建RequestOriginParserDefinition.java,定义请求来源如何获取Component public class RequestOriginParserDefinition implements RequestOriginParser {Overridepublic String parseOrigin(HttpServletRequest request) {/*** 定义从请求的什么…