stable diffusion 教程

2024-03-27 1,060 0

什么是稳定扩散?

2022年发布的稳定扩散(Stable Diffusion([1]))是一个文本到图像生成的深度学习模型。它主要用于根据文本的描述产生图像,虽然它也可以评估详细其他任务,如内补均匀、外补均匀,以及基于文本提示(中文)生成图像到图像的转换。该模型是由以下公司 Stability AI([2]) 和一些学术提供的研究机构和非营利组织合作开发的。

模型网站推荐: 推荐

模型下载:C站

模型推荐:优设

AI画图心得(必看)

提示词的语法规则:

  1. 英文单词、句子
  2. 分隔,分隔
  3. 最好不超过75个
  4. 事实可以增加它的权重,示例:(girl)
  5. 冒号加数字自定义权重值,示例:(gir:1.5),(red:0.1)
  6. 垂直线分隔多个关键词,示例:(redlyellow)hair

第一课sd入门

1.SD作用

生成美术插画和概念图画

稳定扩散在绘画创作领域拥有出色的应用潜力。用户只需用语言描述一个场景或角色,这个模型就可以为他们生成高质量的图像。这对于美术家和创作者来说,提供了一个强大的工具,可以迅速将他们的想法转化为视觉艺术。

图像修复和增强

不完美的图像可以通过稳定扩散必然挽救。这个模型可以将低质量或损坏的图像变得更加清晰和生动,为摄影师和图像编辑人员提供了极大的帮助。

风格转换

稳定扩散还能够将图像转化为不同的艺术风格,如印象派、涂鸦等。这为艺术家和设计师提供了一种有趣的方式,可以将图像赋予新的视觉感受。

图像编辑

除了修复图像,Stable Diffusion还可以执行标准的图像编辑任务,如剪切裁剪、调色、添加元素等。这为图像处理工作提供了更多可能性。

图像拟人化

该模型可以自动为非图像人物添加人物特征,为创造虚构场景提供无限可能性。

模式合成

稳定扩散可以合成两种不同模式的图像,创造出新的场景和视觉效果。这对于广告和创意领域非常有用。

文本到图像生成

提供文字描述,稳定扩散就可以生成相应的图像。这对于广告、创意设计和教育领域都具有潜在应用。

图像增强想象力

用户可以输入一些文字,让AI生成超越现实的场景,这将在虚拟世界创作中发挥巨大的作用。

辅助设计工作

Stable Diffusion为设计师提供创作灵感和参考,帮助他们更好地表达自己的创意。

商业应用

除了创意应用,Stable Diffusion还具备广泛的商业潜力:

电商领域AI模型

在电商领域,使用AI模型能够显着和费用。通过Stable Diffusion,可以使用不同的方法,比如给脉冲模型换脸或将平铺或白底的衣服穿在AI模型身上,为电商提供免费的模型服务。

绘画补充

AI辅助绘画已经在动漫画面、小说封面和插画等领域取得了显着进展。原画师可以借助AI的帮助,提高工作效率。

创意灵感激发

人工智能可以帮助从事服装设计、饰品和鞋子设计的人们寻找新的创意灵感,创造出独特的产品。

头像壁纸

稳定扩散可用于批量生成壁纸或头像,方便第三方网站销售,总计获得经济收益。

2.需要的配置

本地部署电脑新买的话,只推荐4060ti 16G

4070ti 16G 4080/16G 4090D 24G

3.云端部署

仙宫云官网:地址

注册:地址

帮助中心:地址

第一步:使用仙宫云注册

注册需要实名认证

2024111403383737

第二步:开始配置容器实例

2024111403390824

配置自行配置,

配置优化价格

GPU数量决定显存大小

镜像类型

公共镜像:免费社区镜像:数量多,价格用户

自定义镜像:自己保存的镜像部署中不温控

2024111403394317

第三步:使用云端实例

注意:打开的时候别翻墙,不然可能很慢或者进不去

1.打开

2024111403401263

点击打开会跳转到云端界面点击应用会打开相应的应用

2.模型上传(模型决定了照片的风格)

点击打开终端进入仙女女帮助中心,粘贴复制内容,回车开始下载返回sd,刷新即可

2024111403403622
2024111403411223
2024111403413811
2024111403421191

3.关闭

2024111403424285

4.本地部署

第一步:下载安装集成资源包和启动器依赖

2024111403431479

第二步:调整配置

配置,推荐N卡,GPU显存最好16G以上,本地磁盘空建议余200G显存优化:自行配置corss-Attention优化方案:使用默认计算精度设置:关闭VAE模型半精度优化减少黑图可能性模型梯度计算:关闭

20241114034350100
2024111403440724

第三步:点击一键启动,开始生图

2024111403445276

这个会生成一个本地运行的SD模型,通过下载不同的模型可以生成不同风格的图片

第四步:使用正向关键词和负面关键词生图

根据设备和关键词的描述,生图的速度有区别当配置不够时应及时停止设备运行,避免造成损失

2024111403454417
2024111403461199

Torch active:在生成过程中,Torch 使用的显存(VRAM)最高,不包括服务器的数据。

Torch 保留: Torch 分配的显存(VRAM)的最高量,包括所有活动和存储数据。

Sys VRAM:所有应用程序分配的显存(VRAM)的最高量/GPU的总显存(VRAM)(最高利用率%)

第五步:图片保存路径

点击保存,图片默认保存路径 D:\sd学习资料\sd-webui-aki\outputs\txt2img-images可自行设置文件保存路径

2024111403464571
2024111403471143
2024111403472610

第二课模型知识

SD四大模型介绍

2024111403475249

1.SDXL与SD1.5的区别

1).SDXL与SD1.5的最大区别在用SDXL是由基础基础模型和refiner优化模型配合模型构成,可以在基础模型的基础上再使用优化模型,对比1.5的单模型能力更进一步的优化出图质量

2).另外SDXL的训练都是用1024*1024的图片进行的,比1.5在细节和质量上都高出明显,但是也导致SDXL的模型更大,运行需要的资源更多

3).SDXL还引入了OpenAI的CLIP语言模型,能够更好的理解提示,从而更好的生成想要的图片

4).SDXL对较差文字的支持也更好了,在1.5上很难出理想的文字,但在SDXL上准确的文字、字体、效果等都已经能较好的支持了

在SD的使用概念中有4种模型,分别是:

1.Checkpoint模型:这是真正的Stable Diffusion模型,包含了生成图像所需的所有内容,不需要任何额外的文件。它们通常很大,通常在2-7GB之间。这些模型可以被微调以生成特定风格的图像。微调的方法包括附加训练、Dreambooth和文本反转。

- 附加训练:这是一种微调方法,通过在基础模型上使用额外的数据集进行训练,以生成特定风格的图像。

- Dreambooth:这是另一种微调方法,通过将自定义主题注入到文本到图像的模型中,以生成特定主题的图像。这种方法只需要3-5张自定义图像就可以工作。

- 文本反转(embedding):这是第三种微调方法,通过将自定义主题注入到模型中,以生成特定主题的图像。这种方法只需要几个例子就可以工作。

2.LoRA模型:这些是小型的补丁文件,用于修改样式。它们需要与Checkpoint模型一起使用。

3.Hypernetworks:这些是添加到Checkpoint模型的额外网络模块。它们也需要与Checkpoint模型一起使用。

4.AVE:这种模型一般已经被集成到checkpoint里了,可以理解为其可作用为图片的滤镜。

在这个结构框架中,Checkpoint模型是基础,而其他的模型和方法(如Dreambooth、文本反转、LoRA模型和Hypernetworks)都是在这个基础上进行微调和修改的工具。

2024111403482842

Stable division的模型知识点汇总

1.模型的风格对ai的影响

本对话片段讨论了大模型对生成结果的影响。通过更改模型和提示词,可以改变生成图片的风格。因此,在生成不满意的结果时,我们应该首先考虑选择的模型和风格是否合适。

2.讲解vae的作用及clip概念

通过对比加载和未加载VAE模型的图片,展示了VAE模型对图片色彩和细节的改进。同时,介绍了clip跳过程的概念及其在文本到图像生成中的作用,使用clip跳过程生成满足需求的图片。

3.Clip层数的变化及对比图的讲解

使用对比图来生成模型风格的效果,通过选择不同的模型和参数值,在生成对比图中可以比较不同层数下的变化。同时,调整乘数的数值可以控制生成画面的丰富度,满足不同的需求。

2024111403485941

4.如何精确的找到喜欢的类型

通过注册账号,搜索和筛选模型,选择模型类型和状态,查看模型详情和效果,下载模型文件,了解模型细节和版本信息。

5.哈希值的表示及模型版本的讨论

哈希值用于标识模型的唯一性,模型文件后缀表示安全模式,建议优先选择。此外,粉丝数量和作品展示可以作为参考,以评估模型的效果。对于版本选择,1.5版本建议优先使用,因为大部分模型和插件都是基于该版本开发的。在使用过程中,如果需要清空选择,可以点击初始化按钮重新选择选项。

6.模型的使用方式

C站和国内的模型下载与使用。可以查看和下载各种风格和领域的模型,如角色模型、衣服、基础模型等。用户可以通过点击复制生成数据和下载按钮来获取模型。关闭国外魔法上网工具以避免问题。

2024111403500213

7.介绍下载模型的方法

启动面板下载和复制链接下载。建议根据个人需求选择合适的下载方式,并将模型存放到正确的路径下使用。

8.讲解存放怎么使用的问题

选择合适的盘符和文件夹,放置大模型、VIE模型和插件等。切换模型以及使用刷新按钮下载模型。

2024111403504145

一、常用的两种模型

1、CKPT(CheckPoint)

经过训练的图片合集,被称作模型,也就是chekpoint,体积较大,一般真人版的单个模型的大小在7GB左右,动漫版的在2-5个G之间

早期的CKPT后缀名是ckpt,如今新的CKPT后缀名都是safetensors

2、Lora

是一种体积较小的绘画模型,是对大模型的微调。与每次作画只能选择一个大模型不同,lora模型可以在已选择大模型的基础上添加一个甚至多个。一般体积在几十到几百兆左右。后缀也是safetensors

二、如何区分?

1、CKPT偏大普遍1G以上,Lora相对而言偏小几十到几百昭

2、C站下载时会有Type标识

三、如何使用/切换模型

1、ckpt模型

c站下载相应模型后将文件放入 stable-diffusion-webui\models\Stable-diffusion文件夹中

在SD-webUi左上角可以直接切换使用(如果下拉没显示就点下旁边的刷新)

2、Lora模型(两种方法)

(Lora模型是对ckpt模型的一个微调,所以应该是先使用一个ckpt后再选择Lora)

方法a:

c站下载相应模型后将文件放入 stable-diffusion-webui\models\Lora文件夹中

选择好ckpt模型后点击1处再点击2处(若未显示模型则点击刷新)

方法b

  • 安装扩展 Kohya-ss Additional Networks script
  • 重启webUI
  • 安装目录会出现 extensions\sd-webui-additional-networks\models\lora文件夹
  • c站下载的lora放入该文件夹
  • webUI会多出下图的操作栏(我使用的第一种,所以下面是网上找的图不清晰)

该方法比上一种方法要复杂,但好在可更自由控制Lora模型特点相比ckpt模型特点生成图片的权重

第三课文生图

提示词语法说明

书写格式

内容形式:1、单词 2、词组 3、短句

分隔语法:不同的关键词之间,需要使用英文逗号分隔,逗号前后有空格

或者换行是不碍事的,换行符不会被读取,作为生成图片的依据

权重语法(括号法则)

  • ()圆括号相当于每套一层增强1.1倍
  • 大括号相当于每套一层增强1.05倍
  • 中括号相当于每套一层减弱1.1倍

PS:复用括号可以多层嵌套增加、减少权重

权重语法(数字法则)- (关键词:1.3)相当于增强1.3倍 - (关键词:0.5)相当于1/2的权重

PS:大于1就是增强,小于1就是减少

混合语法:AND可以把多种元素或主体做混合,例如 tiger AND cow

渐变语法:[关键词:数字]例如: [girl:0.5]

交替演算语法:[关键词11关键词2],它可以轮流使用关键词生成,例如:[tigercow]

在步数为10步的情况下,1,3,5,7,9渲染成tiger, 2,4,6,8,10渲染成cow

注意点:

  • 关键词:关键词中文无法识别,可以通过插件安装让输入中文转为英文
  • 面部修复:只是针对写实类,对于动漫没有太大的效果

采样方法

sd webui 生成图像,大致会经过以下过程:

  • 为了生成图像, Stable Diffusion 会在潜在空间中生成一个完全随机的图像
  • 噪声预测器会估算图像的噪声
  • 噪声预测器从图像中减去预测的噪声
  • 这个过程反复重复 N 次以后,会得到一个干净准确的图像

这个去噪的过程,就被称为采样

采样中使用的方法被称为 Sampling method (采样方法或者是采样器)。

- 如果想快速生成质量不错的图片,建议选择 DPM++ 2M Karras (20 -30步) 、UNIPC (15-25步)

- 如果想要高质量的图,不关心重现性,建议选择 DPM++ SDE Karras (10-15步 较慢) ,DDIM(10-15步 较快)

- 如果想要简单的图,建议选择 Euler, Heun(可以减少步骤以节省时间)

- 如果想要稳定可重现的图像,请避免选择任何祖先采样器(名字里面带a或SDE)

- 相反,如果想要每次生成不一样的图像,可以选择不收敛的祖先采样器(名字里面带a或SDE)

Stable Diffusion 的工作方式是从以随机高斯噪声起步,向符合提示的图像一步步降噪接近。随着步数增多,可以得到对目标更小、更精确的图像。但增加步数也会增加生成图像所需的时间。增加步数的边际收益递减,取决于采样器。一般开到 20~30。

采样步数代表加载这个关键词多少次,补数越多就会加载越精细

无缝贴图/Tiling:用于生成一个可以平铺的图像

高分辨率修复/Hires. fix:

通过勾选 "Highres. fix" 来启用。默认情况下,文生图在高分辨率下会生成非常混沌的图像。如果使用高清修复,会型首先按照指定的尺寸生成一张图片,然后通过放大算法将图片分辨率扩大,以实现高清大图效果。最终尺寸为(原分辨率*缩放系数 Upscale by)。

- 放大算法中,Latent 在许多情况下效果不错,但重绘幅度小于 0.5 后就不甚理想。ESRGAN_4x、SwinR 4x 对 0.5 以下的重绘幅度有较好支持。

- Hires step 表示在进行这一步时计算的步数。

- Denoising strength 字面翻译是降噪强度,表现为最后生成图片对原始输入图像内容的变化程度。该值越高,放大后图像就比放大前图像差别越大。低 denoising 意味着修正原图,高 denoising 就和原图就没有大的相关性了。一般来讲阈值是 0.7 左右,超过 0.7 和原图基本上无关,0.3 以下就是稍微改一些。实际执行中,具体的执行步骤为 Denoising strength * Sampling Steps。

图片大小不能直接通过调节宽高放大,一定要通过放大算法去放大图片,不然可能会导致图片出现不合适的内容

总批次 *单批数量 = 生成图片的数量 ,俗称抽卡,通过同一个关键词去产生不同的图片去选出最适合自己的图片

配置低:使用总批次抽卡 配置高:使用单批次抽卡

提示词引导系数/CFG Scale:

图像与你的提示的匹配程度。增加这个值将导致图像更接近你的提示,但它也在一定程度上降低了图像质量。可以用更多的采样步骤来抵消。过高的 CFG Scale 体现为粗犷的线条和过锐化的图像。一般开到 7~11。

关键词书写方法

主体+环境(背景)+质量风格+照明+色彩+情绪+构图

  • 主体:这是你想要模型生成的图像的主要对象或主题。例如,“猫”、“汽车”或“山”。
  • 环境(背景):这是你想要的背景或环境。例如,“在森林中”、“在城市街道上”或“在沙滩上”。
  • 质量风格:这是你想要的图像的质量或风格。例如,“卡通风格”、“写实风格”或“油画风格”。
  • 照明:这是你想要的图像的照明条件。例如,“日光下”、“月光下”或“灯光下”。
  • 色彩:这是你想要的图像的主要颜色。例如,“蓝色调”、“暖色调”或“黑白”。
  • 情绪:这是你想要的图像所传达的情绪或氛围。例如,“快乐的”、“悲伤的”或“神秘的”。
  • 构图:这是你想要的图像的构图或布局。例如,“对称构图”、“规则的三分法构图”或“中心构图”。

以下是一个具体的示例:

- 主体:猫

- 环境(背景):在森林中

- 质量风格:卡通风格

- 照明:日光下

- 色彩:蓝色调

- 情绪:快乐的

- 构图:对称构图

所以,完整的提示词可能是:“快乐的卡通风格的猫在日光下的蓝色调的森林中,使用对称构图。“

经验:

图片的尺寸至少要有一个参数少于1024

可以通过放大算法来放大图片,提高图片质量

常用脚本

01提示词矩阵

提示词矩阵我们可以在脚本的下拉菜单中找到,它可以帮助我们很轻松的看出某个或者多个提示词对生成图的影响:

它的书写方式:提示词与提示词之间用竖线隔开,提示词可以是多个

例如我这里正向提词里写入:people walking in the street,先找一个觉得合适的种子数固定住:

然后在正向提词中,我加入了Sovietwave,Wild West两个提词,并用竖线将它们分隔开,脚本中记得选择提示词矩阵:

点击生成我们可以得到这样一张对比图,相当于是把提示词:people walking in the street|Sovietwave|Wild West排列组合成了四组提示词:

people walking in the street

people walking in the street,Sovietwave

people walking in the street,Wild West

people walking in the street,Sovietwave,Wild West

这样我们就能够很清楚的看出加入的这个提示词对画面所产生的影响:

2024111403532048

再说一下这个把”可变部分放在提示词文本的开头“选项,顾名思义就是把变量提示词放在开头。

我们通过生成图片下方的详情也可以看到,Sovietwave,Wild West这两个提示词在排列组合的时候被放在了最前面:

"为每张图片使用不同随机种子"这个我觉得平常用不到。

”选择提示词正负面“这个不用多说。

”选择分隔符“这个保持默认即可。

”宫格图边框“可以让我们生成的对比图有一定的间隙:

02从文本框或文件载入提示词

2024111403512974

这个脚本可以让你一次性输入多组提示词,或者从文本文件中载入提示词来生成图像。

当你在脚本的提示框内输入提示词后,上方的提示词就会失效,例如我在脚本提示框中输入cat,生成的图片就完全和我们上方输入的内容没有关系了:

当你输入多组提示词,并且每组提示词换行隔开,它就能一次性帮你生成多组图像:

另外你还可以先在文本文档里写好多组提示词:

然后可以直接在webui里载入这个文件,可以看到脚本提示框里的提示词就被替换成文件里的提示词了:

脚本中可以选择每行换随机种子或者每行使用同一随机种子:

值得一提的是,这个脚本不仅可以输入提示词,还支持各种参数变量的输入,并且在书写格式方面要特别注意。

首先每个参数名前面要加两个减号,参数名后面一定要用空格隔开,涉及到文本类的参数需要写在双引号内。

例如这里,我们需要书写为减号减号prompt空格双引号,双引号里再输入提示词的内容:

再次添加参数的时候,我们同样先加空格隔开,然后再书写两个减号和参数名,参数名和参数之间同样要加空格隔开,如果参数为数值,则不需要添加双引号:

涉及到参数名是两个单词的,单词与单词之间需要添加下划线:

webui的作者说明可以支持的参数有以下内容:

“sd_model”:模型名称

“outpath_samples”:样本输出路径

“outpath_grids”:网格输出路径

“prompt_for_display”:用于展示的提示词

“prompt”:正向提示词

“negative_prompt”:负面提示词

“styles”:提示词模板(你自己设置的提示词模板)

“seed”:随机种子

“subseed_strength”:次级种子强度

“subseed”:次级种子

“seed_resize_from_h”:次级种子高度

“seed_resize_from_w”:次级种子宽度

“sampler_index”:采样器索引

“sampler_name”:采样器名称

“batch_size”:生成批次

“n_iter”:每批数量

“steps”:采样迭代步数

“cfg_scale”:提词相关性

“width”:宽度

“height”:高度

“restore_faces”:面部修复

“tiling”:平铺

“do_not_save_samples”:不保存样本

“do_not_save_grid”:不保存网格

其中"sd_model"好像是用不了的不过看外网发的截图从代码层面,除了sd_model以外,其他参数都有反应:

03XYZ图表

2024111403514994

XYZ图表几乎涵盖了所有参数,可以根据你的需求选择生成对比图,让你更加方便的观察到不同参数对于图像的影响:

对于数值类的参数,它可以直接输入数值,也可以输入范围,例如采样迭代步数这个参数,我可以直接输入15,16,17,18,19,20:

也可以更简单的直接输入为15-20,生成的结果是一样的:

还可以先指定范围,再在圆括号中填写增量,例如15-20(+2),代表采样迭代步数从15到20这个范围,每增加2步生成一张图:

也可以反过来,比如20-15(-3),代表采样迭代步数从20到15这个范围,每减少3步生成一张图:

如果数值可以有小数,同样也可以输入,例如CFG提示词相关性这个参数,就可以输入为7-9(+0.5),代表7到9这个范围,每次增加0.5,总共生成5张图:

同时你还可以在范围后面添加方括号加数值的方式,例如7-9[6],代表7到9这个范围参数均分成6份出图:

涉及到非数值类的参数,例如采样方法或者模型,选择之后旁边会出现一个小书的图标:

点击这个图标它会自动载入该参数的所有选项,然后你可以根据自己的需求选择进行图像的生成:

目前我们展示的只是单个参数的单轴对比,也可以两个参数双轴甚至三轴对比,不过三轴对比我没用过哈:

生成的对比图保存路径默认为SD安装目录\outputs\txt2img-grids:

如果你安装了ControlNet 插件还能对比插件的参数。

其中有许多我也没用过,这里就着重介绍两个和前面写法有差异的参数吧。

首先是Prompt S/R(提示词搜索/替换),例如我提词框内输入people walking in the street,Sovietwave。

在脚本中选择提示词搜索/替换,输入Sovietwave以及想要替换的提示词,它就能生成替换之后的对比图:

另外一个是Prompt order(提示词顺序),顾名思义,你想要测试提示词顺序的影响,就可以用到这个选项,把需要测试的内容填写进去即可

案例:

2024111403522146

总结一下三款脚本的应用场景吧:

提示词矩阵:当你需要测试提示词对画面是否有影响时用它。

从文件中载入提示词:当你需要批量生成多组提示词时用它。(模型不可替换,部分参数可设置。)

XYZ图表:当你需要对比不同提示词、提示词的顺序、模型、各项参数生成图片的差异时用它。

第四课图生图详情

一张图片的复刻在文生图的限制很小,图生图比文生图多了一个图片接口,多了约束条件,更好可以去调整图片

图片接口模块

  • Resize mode。当上传图片尺寸和要生成的图的尺寸不同时,需要选择调整大小方案。
  • Sampling Method 用于去噪,平衡生成图的速度和质量。内置多种算法可供选择。目前看起来 DPM++ 2M Karras 用的比较多。
  • Sampling Steps 是去噪过程的采样步骤数。越多越好,但需要更长的时间。一般在 20-28 之间。
  • 宽度和高度 (Width/Height),输出图像的大小。按需调整即可。
  • Batch Count 批次数量,我更愿意用下面的 Batch size 调整生产图的总数。
  • Batch size,每一批次要生成的图像数量。可以在测试提示时多生成一些,因为每个生成的图像都会有所不同。生成的图像总数等于 Batch Count 乘以 Batch size。
  • CFG (Classifier Free Guidance) scale,提示词相关性, 用于控制模型应在多大程度上遵从您的提示。他有几个只可选: 1 (大多忽略你的提示),3 (更有创意),7 (遵循提示和自由之间的良好平衡),15 (更加遵守提示),30 (严格按照提示操作),常用的是 7,做个平衡。测试时可以换这个值体验区别。
  • Denoising strength。降噪强度,常翻译成「重绘幅度」,取值范围是 0-1,描述新生成的图片与原图的相似程度,数值越小,采样越少,相似度越高,算的越快 (采样数 = Denoising strength* Sampling Steps)
  • Seed,生成的每个图像都有自己的种子值,修改这个值可以控制图像的内容。
  • Script。用户可以编写脚本代码,以实现一些特殊定制的功能。这个未来可以具体说,目前还没有遇到。

缩放模块

先具体说说Resize mode(当然上传的图片最好与生图设置的一致):

  • Just resize:调整图片为生图设置的宽高。若上传图片的宽高与生成设置的宽高不一致,则该图片会被压扁。这个我非常不推荐使用,会让图片非常奇怪。
  • Crop and resize:裁切图片以符合生图的宽高,我最推荐的方式。
  • Resize and fill:裁切并调整图片宽高,若上传图片的宽高与生成设置的宽高不一致,则多出来的区域会自动填满。
  • Just resize (latent upscale):调整图片大小为生图设置的宽高,并使用潜在空间放大。

这个模式下最主要的就是调Denoising strength参数。我们用下面这张从网上找的新垣结衣的照片来体验:

2024111403550687

首先注意,我选择这个图是有 2 个原因的:

  1. 这个一张人像正面近像,在生成新图后更容易感受到 SD 的模型的作用
  2. 照片可以看到手部有动作,我会生成一张有问题的图让你感受到目前图生图模式的问题

我希望通过 SD 把这个真人照片做出动漫的效果,咱们先来个较大的Denoising strength的值,为了方便对比我用了固定的 Seed:

2024111403555533

我直接把生成参数列出来:

a woman with a short hair and a white shirt is posing for a picture with her hand on her chin, a photorealistic painting, Ayami Kojima, precisionism, perfect face

Negative prompt: dongwm-nt,bad finger, bad body

Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 8, Seed: 2345567052, Size: 512x512, Model hash: cbfba64e66, Model: CounterfeitV30_v30, Denoising strength: 0.65, Clip skip: 2

反推模块

仙宫云反推:反推

这里有一点需要特别的提一下,正面提示词不是我写的。在图生图模式里,生成按钮左边有 2 个选项,分别是「Interrogate CLIP」和「Interrogate DeepBooru」。在上传图片后,可以通过「Interrogate CLIP」反推出提示词,我这个就是这么生成的。另外也说一下「Interrogate DeepBooru」,这说的是一个开源的女孩图片特征提取器,上传图片可以获得图片的标签

2024111403570632

PS: 如果你选择DeepBooru反推,不能直接使用那些标签,你需要从中筛选需要的、合理的标签,否则结果会完全偏离。

好的,说回来。之前已经说过,Denoising strength的值越大越和原图不符,所以如果你希望「微调」,这个值不应该大于 0.4,现在我们先取了一个更大的值,你可以看到生成图的人物手部的结果是有问题的。而且注意,负面提示词dongwm-nt本身是包含bad finger,bad body这些的。

图生图不是万能的甚至很难达到你的预期

是的,这是我的体验。这个模式下如果你想要生成你想要的效果,对于大模型、微调模型、提示词、参数等都有要求,在前期,你很可能生成奇怪的图,你需要不断尝试总结经验。

不同的 Denoising strength 效果的区别

我们使用 x/y/z 脚本试试不同的重绘幅度值看看生成的效果:

2024111403580115

可以看到随着 Denoising strength 变大,越来越不像原图了。

同时,我们还可以重叠各种微调模型,下面是使用了 VAE、Lora 和 HyperNetwork 后的效果:

2024111403582240

这就是微调模型的作用,不过注意,微调后手部后两张还是会有问题。

PS,这个例子用的主模型是:模型

图片模块

绘图 (Sketch)

第二个 Tab 是 Sketch,他适合有美术基础的用户,可以给一张现有的图加东西,或者画出你想要的东西,然后再输入提示词完善,我这个没有画画细胞的人基本不用,在这里也举 2 个例子 (我也就这个水平啦)。

因为我们一会要用笔刷编辑图片,我需要用到颜色,所以加启动参数,重启 webui:

./webui.sh --disable-safe-unpickle --gradio-img2img-tool color-sketch

Ok, 先尝试基于现有图做修改的,我用了下面这张图:

2024111403585142

上传后就进入了编辑模式,然后我用笔刷选了个粉色的把头发涂变色 (当然提示词中并没有提到粉色头发):

2024111403590939

可以看到Denoising strength到了 0.7 才看起来正常,前面的那个「涂」的效果很明显。所以如果你使用和原图差别很大的颜色涂,那么需要更大的重绘幅度值,但是相对的,生成图和原图差别很大。如果选择对比色较少的例如黑色,那么重绘幅度 0.4 可能就够了。

接着我们试试完全从零画一幅画 (叫「涂鸦」更合适),为了展示 SD 的厉害之处,我特意选择了一个「复杂」的构图,在本灵魂画手非常努力作画后,看一下生成图的效果这样的:

2024111403592948

注意哈,因为这个模式需要上传图,所以我这里只是截了个终端的黑色区域作为背景图。我知道大家看不懂我的 Sketch?? ♀️,解释一下,这幅画我希望展示蓝天白云,下面是草地和几棵树 (提示词也非常直白),草地中间还有一点小溪(实在不知道溪水用什么颜色就直接换个绿区别一下)中间黑色的是背景我没涂东西,主要想看看 SD 会怎么理解。

这个效果我还是很满意的,可以说 0.65 的图已经完全达到我的预想了。

PS: 这种绘画的方法需要更大的Denoising strength值,否则用户就得具有极强的画画天赋啦

局部绘制 (Inpaint)

用户指定在图像中特定区域进行修改,而保证其他区域不变。这个我认为图生图模式下最又实用价值的模式,类似换脸、换衣服、换背景等等需要都可以通过它来实现。在上面的 Sketch 里面的例子一,我曾经想给新垣结衣换头发颜色,但是需要Denoising strength值比较大才会看起来正常,但是通过也和原图差别非常大了。而局部绘制可以平缓的给新垣结衣换头发颜色。来试试:

202411140359526

我涂黑了头发,当然差不多就可以,SD 会清楚你想把头发改颜色,另外要在提示词加上pink hair让 SD 朝着粉色头发来。可以看到随着Denoising strength增大,头发越来越粉。

接着看一下参数:

这次新增 5 个参数:

2024111404001342

1.Mask blur。图片上的笔刷毛边柔和程度。我一般默认

2.Mask mode。选择要让 AI 填满涂黑区域 (Inpaint masked),或是填满未涂黑区域 (Inpaint not masked)。

3.Masked content。要填充的内容类型。Fill:让 AI 参考涂黑附近的颜色填满区域;Original:在填满区域的时候参考原图底下的内容;latent noise:使用潜在空间填满,可能会生出跟原图完全不相关的内容;latent nothing:使用潜在空间填满,不加入噪声

4.Inpaint area。选择要填满整张图片 (Whole picture) 或是只填满涂黑的区域 (Only masked)

5.Only masked padding, pixels。像素内距。

局部绘制 - 涂鸦蒙版 (Inpaint sketch)

局部绘制 Inpaint 的一个更细的分类,它们的区别是局部绘制中,用户涂黑的部分表示该部分可以被重绘,而在局部绘制 - 涂鸦蒙版(inpaint sketch)中,用户涂鸦的部分不仅表示可以重绘,用户涂鸦的内容还会成为图像生成的内容来源,换个表达方法,局部绘制 - 涂鸦蒙版是「局部绘制 (Inpaint)」+「绘图 (Sketch)」的组合,通过一个例子来理解:

2024111404003784

我涂了 2 个地方:1. 头发上的墙上背景,我希望它被 P 掉,2 粉色头发。然后提示词加了pink hair让 SD 能更理解我表达。所以最终生成的图里面的特点:

1.除了头发和背景改变,对人物外貌动作等未改变 (因为没有产生绘制),而且头发形状整体保持住了。

2.我 sketch 使用了一个偏紫的颜色,所以生成的图的头发颜色参考了这个颜色生成的微紫的粉色

3.可以看到 0.6 的效果是最好的,值越小越偏原图就能看出我涂鸦的痕迹,值越大头发走的越偏离我的意思

局部绘制 - 上传蒙版 (Inpaint upload)

可以在其他工具里 (例如 PS) 做好蒙版上传,而不是在 SD 里面创建蒙版。对于一些专业的用户这是一种更好的选择,因为在浏览器绘制蒙版的功能很简陋,其他专业软件做出来的效果会好得多。不过我不会 PS 这里就不举例了。

涂鸦绘制

涂鸦绘制就是在原图上画一个代表某种事物的形状,然后让Stable Diffusion结合我们的提示词在图片中生成对应的元素。下面这个例子是给女孩添加一副天使的翅膀。

1、选择合适的大模型,提示词中声明你想要在画面中出现的元素。

2024111404012765

2、在下面的 Generation 选项卡中选择“涂鸦绘制”,上传一张要涂鸦的图片,然后使用画笔工具在图片上画出你想要的形状,这里可以选择我们想要的颜色。天使的翅膀我想是白色的,但不应该是纯白,所以我这里选择一个有点灰的白色。

2024111404014959

3、Stable Diffusion 的参数没什么好说的,注意缩放模式和图片尺寸的搭配,重绘强度建议从0.5开始,然后根据实际出图效果调整。

2024111404021364

4、然后就可以生成图片了,看下边的效果。

2024111404023053

可以看到,翅膀是画出来了,不过画面上的其它部分也产生了一些变化,涂鸦绘制是整张图片的重绘,某些场景下这不够完美,解决这个问题需要使用下文介绍的涂鸦蒙版。

使用这个技术,我们还可以在图片上写几个字,Stable Diffusion会把文字处理成画笔书写的效果,比较好看一些。

2024111404030055

局部绘制

局部绘制是只更改原图片的部分区域,具体方式是使用画笔涂抹盖住一些部分,然后我们可以选择只重新绘制盖住的部分,或者只重新绘制没有盖住的部分。在 Stable Diffusion 中盖住的部分称为蒙版内容。

这里以把姑娘的头发颜色修改成金色为例。

1、基础模型选择一个匹配照片风格的;为了修改颜色,我们需要在提示词中着重描述重绘需求。提示词可以只描述要重绘的部分,也可以是一个完整的图片描述,重绘幅度较大时建议只描述要重绘的部分,否则重绘的部分可能与原图衔接不好。

2024111404032014

2、在 Generation 选项卡中点击“局部绘制”,上传一张图片后,使用画笔工具涂抹要重绘的部分。

202411140403394

3、其它 Stable Diffusion 参数如下:

2024111404035828

(1)蒙版模糊度:设置重绘部分与原图的衔接处的模糊度,起到渐变的作用,让衔接看起来比较自然。衔接不好时可以调大一点看看。

(2)蒙版模式:绘制蒙版内容,也就是绘制被蒙住的内容;绘制非蒙版内容,也就是绘制没有蒙住的部分。怎么选择?我的经验是哪个涂抹的少选择哪个,给自己减少一些工作。比如这里要重绘头发,头发的区域相比整个图片要小很多,我们就涂抹头发,这里选择绘制蒙版内容;如果头发的区域很大,我们就可以涂抹其它区域,然后这里选择绘制非蒙版内容。

(3)绘制区域:选择全图时Stable Diffusion会先重绘整张图片,最后出图时再替换到原图中;仅蒙版时,Stable Diffusion只绘制需要重绘的部分。个人感觉出图效果没有太大差别,有兴趣的可以多试试对比下。

(4)仅蒙版绘制参考半径:绘制区域仅蒙版时,绘制区域向外拓展的数量,单位是像素。使用这个参数可以解决蒙版边缘不好涂抹的问题,效果类似我们手动涂抹时向外多涂抹一点,让新生成的部分与原图衔接的更好。

(5)图片尺寸:根据需要设置,注意选择合适的缩放模式。我这里只改颜色,所以和原图保持一致。

(6)重绘强度:多大程度上改变原图的内容。因为改头发颜色还是相对困难的,所以我这里火力全开,设置为最大的1。默认是0.75,需要根据实际出图效果调整设置。

4、最后给大家看下局部重绘的效果:

2024111404045371

可以看到头发已经变成金色的了,但是头发的外形也发生了一些变化,这说明 Stable Diffusion是重新绘制,而不是简单的上色;而且只有蒙版蒙住的部分重新绘制了,其它部分都没什么变化。

这个技术用途比较大,比如给模特换衣服,当然如果要换指定的衣服还得结合其它技术才行。

局部绘制(涂鸦蒙版)

上面我们介绍了涂鸦绘制,但是涂鸦绘制会重绘整张图片,涂鸦蒙版可以解决这个问题。

还是以给人物加上天使的翅膀为例。

1、选择匹配画面风格的大模型,填写想要绘制的画面内容,上传图片,选择合适的颜色,在图片上画出想要的形状。

2024111404053197

2、Stable Diffusion 的参数中多了一个蒙版透明度,值越大绘制的内容越透明;另外这里的重绘强度我们可以选择的高一点,因为重绘只针对图片的部分画面,我们不需要担心其它部分会被改变的太多。

202411140405548

3.效果

2024111404062219

局部绘制(上传蒙版)

上面我们演示了涂鸦蒙版的效果,但是这种手绘的蒙版还有个问题:不够精准,绘制起来也比较麻烦。

上传蒙版可以解决这个问题,我们可以使用别的工具来制作一个精准的模版,然后上传到局部绘制,再进行重绘。

还是以本文的姑娘照片为例,我们将使用上传蒙版分别重绘人物和背景。

1、选择匹配画面风格的大模型,在提示词中编写想要重绘的内容。

2024111404071662

提示词1(绘制蒙版内容,亚洲姑娘换成金发碧眼的美国姑娘):

best quality, masterpiece, super high resolution, 4k, 1girl, american, full body:1.4, long golden hair, looking at viewer, beautiful detailed eyes, brown t-shirt:1.31, blue jeans:1.31

提示词2(绘制非蒙版内容,背景换成战火纷飞的街道):

best quality, masterpiece, super high resolution, 4k, 1girl standing in the middle of war-torn streets

反向提示词:

deformed,bad anatomy,disfigured,poorly drawn face,out of frame,bad hands,bad fingers,unclear eyes,cloned face,bad face, disfigured, deformed, cross-eye, EasyNegative

2、在“局部绘制(上传蒙版)”中分别上传原图和蒙版图。

蒙版图可以使用 Stable Diffusion WebUI 的一个抠图插件制作:stable-diffusion-webui-rembg

2024111404074127

3、Stable Diffusion 参数设置。注意我们这里要使用两种蒙版模式分别绘制。

2024111404080461

4、然后就可以生成图片了,效果图如下:

2024111404083384

批量处理

“批量处理”可以完成一组图片的“图生图”处理。

1、我们首先还得选择一个大模型,编写相关的提示词(不过这个提示词也可以不填,具体原因后边的内容会有说明)。

2024111404085780

2、再往下看,“批量处理”有一组特别的参数,如下图所示:

202411140409173

(1)输入目录:原图所在的目录,必须设置。

(2)输出目录:新生成图片的存放目录,必须设置。

(3)批量绘制遮罩图片目录:如果需要根据蒙版进行局部绘制,这里制定蒙版图片所在的目录,蒙版图片的文件名需要和“输入目录”中的文件名一一对应。

(4)Controlnet输入目录:如果使用Controlnet,这里需要指定Controlnet中使用的参考图片。留空则使用“输入目录”中的文件。

(5)PNG info:提取一组图片中的信息作为批量“图生图”时每张图片的参数。比如我们提前生成好了一组图片,现在想把它们转换为另外的风格,通过启用这个参数,就可以在生成新图片时使用原图片的生成信息,以最大化保留原图中的各种元素。启用这个参数,需要勾选上“Append png info to prompts”,它还有几个子参数:

- “PNG info directory”设置用来提取生成参数的图片目录,其中的图片文件名需要和“输入目录”中的文件名一一对应,默认为“输入目录”;

- “Parameters to Take from png info” 为想要使用的图片生成参数,按照自己的需要勾选就可以了,注意如果勾选了提示词,它会被追加到“图生图”的提示词中。如果我们想完全使用这些图片的提示词,可以把页面上方“图生图”的提示词和反向提示词留空。

3、再往下,是 Stable Diffusion 的一些标准参数。注意如果勾选了“Append png info to prompts”,生成图片时下图红框中的参数会被替换掉。

2024111404094240

第五课案例与插件

controlNet插件

一、Controlnet(图像精准控制)是什么?

ControlNet 是一个用于控制 AI 图像生成的插件。它使用了一种称为"Conditional Generative Adversarial Networks"(条件生成对抗网络)的技术来生成图像。与传统的生成对抗网络不同,ControlNet 允许用户对生成的图像进行精细的控制。这使得 ControlNet 在许多应用场景中非常有用,例如计算机视觉、艺术设计、虚拟现实等等。总之,ControlNet 可以帮助用户精准控制 AI 图像的生成,以获得更好的视觉效果。

安装模型

仙宫云地址:https://docs.xiangongyun.com/zh/moxing/stable-diffusionchajian/1

2024111404105261

面板介绍

2024111404114515
2024111404122472
  1. 用于切换/组合多个controlnet工作网络有时候我们需要用到多个controlnet
  2. controlnet是通过图像对生成图片进行控制的,所以需要上传图片,图片上传可以单张也可以批量(通过填写文件夹批量处理路径对生成的图片进行控制)
  3. 创建画布 开启/关闭网络摄像头 水平翻转摄像头画面 将controlnet图片尺寸和生成的图片一样
  4. 启用:是否启用controlnet 低显存模式:对低显存机器进行配置的优化 完美像素模式:让controlnet自行决定预处理图片的分辨率,优化处理结果 允许预览:允许controlnet的预处理效果预览
  5. 控制类型表示不同的算法,对图片不同风格的控制
  6. 预处理器:将原图转化为数据图 爆炸图标:预览数据处理结果 模型:将数据图转化为最终的结果
  7. 权重:controlnet对于生成结果的影响程度 引导介入时机-引导终止时机 表示插件影响图片开始与结束的阶段 0-1
  8. 控制模式 见文知意图片受插件的影响程度
  9. 缩放模式和图生图相似
  10. 生成图片自动到图片单元

算法介绍

1.cannny边缘检测

一种边缘监测算法,作用是将图片的边缘提取出来,类似线稿。

2024111404190380

2.Lineart线稿

将图片转换为线稿的预处理器

2024111404195833

3.Depth深度图

提取图片中的深度信息,生成具有类似深度景深的信息图。

利用深度图可以生成与原图相同的构图,但是内容和风格不同的图片

2024111404205934

4.Normal法线贴图

近景图像的立体凹凸感被保留下来,法线贴图更适合与需要近景保留较多细节的生成操作

2024111404230193
2024111404232131

5.MLSD直线监测

LSD(M-LSD)一种用于资源受限环境的实时轻量线段检测器。它利用了极其高效的 LSD 架构和新颖的训练方案,包括 SOL 增强和几何学习方案。模型可以在GPU、CPU甚至 移动设备上实时运行。 算法已开源: https://github.com/navervision/mlsd 如果想更详细的理解算法原理,可以直接看论文。

2024111404252444
2024111404253888

6.softedge软化边缘

2024111404260898
2024111404264074

7.Scribble涂鸦

2024111404270492

8.Segmaentation语义分割

2024111404273981
2024111404280210

9.tile模型细节加强预处理器

2024111404282539

案例

线稿上色

模型预处理器和模型要匹配

提示词加了颜色以后,会影响出图效果,使用随机抽卡比较好

2024111404295960

图片可以通过调整高清修复和步数来提高图片的精细化

2024111404300095

人脸替换

roop插件 文生图模式

2024111404300020

图生图模式

2024111404300055
202411140430001
2024111404300291

这篇文章对你有帮助吗?
[评价次数: 6 满意度: 5]

相关文章

ai聊天的实用技巧
AI绘画稳定扩散技术概述

发布评论