超详细!最新Stable Diffusion保姆级教程出炉

AI教程 2024-03-27

如今 AI 发展也越来越快了,涉及领域也越来越广了,去接触使用 AI 是非常有必要的了。

其中说到 AI 绘画,相信大家对于Stable Diffusion应该都不会陌生的了。

众所周知,Stable Diffusion 是一个基于深度学习的图像生成工具,内置强大模型,可以根据文本描述来智能的生成图像,功能不仅包括文生图、还有图生图、局部重绘等诸多功能。

要知道AI绘画的关键在于图像的精准控制和风格控制,区别于其他AI软件,Stable Diffusion自身拥有众多选项,可以让你“定制”想要的图像效果。

Stable Diffusion 最核心的部分是它的模型,要理解 Stable Diffusion 所使用的潜在扩散模型背后的技术细节需要一定的算法基础,因此我们在这里只用尽量简要的语言介绍一下扩散模型的训练过程,帮助大家对它建立一个大概的印象。

<!--[if !supportLists]-->(1) <!--[endif]-->扩散模型的训练需要先找到大量高质量的图像数据,训练时先进行正向扩散,即对每张图像按照高斯噪声公式逐步向数据中添加噪声,直到整张图像变成一张全是噪声的图像(噪声数据)。在这个训练的过程中,会记录所有步骤,然后用神经网络来反向学习噪声分布和数据分布之间的关系,即学习如何给一个全是噪声的图像降噪,生成一张高清图像。

<!--[if !supportLists]-->(2) <!--[endif]-->所有高质量图像都经过步骤 (1) 后,就会得到一个训练好的扩散模型,机器就可以通过噪声来对图像进行预测。这样一来,整个绘画的过程就是 AI 用一组随机噪声(随机数)来预测基于它们能画出一个什么样的图像,即从一堆凌乱的随机数中画出图像。这是一个大力出奇迹的过程,但厉害的是最终能产出清晰度非常高和细节较为完美的图像。

AI 绘画工具的操作技巧

1. Stable Diffusion 基础操作

文生图

如图所示 Stable Diffusion WebUI 的操作界面主要分为:模型区域、功能区域、参数区域、出图区域。

txt2img 为文生图功能,重点参数介绍:

正向提示词:描述图片中希望出现的内容

反向提示词:描述图片中不希望出现的内容

Sampling method:采样方法,推荐选择 Euler a DPM++ 系列,采样速度快

Sampling steps:迭代步数,数值越大图像质量越好,生成时间也越长,一般控制在 30-50 就能出效果

Restore faces:可以优化脸部生成

Width/Height:生成图片的宽高,越大越消耗显存,生成时间也越长,一般方图 512x512,竖图 512x768,需要更大尺寸,可以到 Extras 功能里进行等比高清放大

CFG:提示词相关性,数值越大越相关,数值越小越不相关,一般建议 7-12 区间

Batch count/Batch size:生成批次和每批数量,如果需要多图,可以调整下每批数量

Seed:种子数,-1 表示随机,相同的种子数可以保持图像的一致性,如果觉得一张图的结构不错,但对风格不满意,可以将种子数固定,再调整 prompt 生成

image.png

图生图

img2img 功能可以生成与原图相似构图色彩的画像,或者指定一部分内容进行变换。可以重点使用 Inpaint 图像修补这个功能:

Resize mode:缩放模式,Just resize 只调整图片大小,如果输入与输出长宽比例不同,图片会被拉伸。Crop and resize 裁剪与调整大小,如果输入与输出长宽比例不同,会以图片中心向四周,将比例外的部分进行裁剪。Resize and fill 调整大小与填充,如果输入与输出分辨率不同,会以图片中心向四周,将比例内多余的部分进行填充

Mask blur:蒙版模糊度,值越大与原图边缘的过度越平滑,越小则边缘越锐利

Mask mode:蒙版模式,Inpaint masked 只重绘涂色部分,Inpaint not masked 重绘除了涂色的部分

Masked Content:蒙版内容,fill 用其他内容填充,original 在原来的基础上重绘

Inpaint area:重绘区域,Whole picture 整个图像区域,Only masked 只在蒙版区域

Denoising strength:重绘幅度,值越大越自由发挥,越小越和原图接近

image.png

ControlNet

安装完 ControlNet 后,在 txt2img img2img 参数面板中均可以调用 ControlNet。操作说明:

Enable:启用 ControlNet

Low VRAM:低显存模式优化,建议 8G 显存以下开启

Guess mode:猜测模式,可以不设置提示词,自动生成图片

Preprocessor:选择预处理器,主要有 OpenPoseCannyHEDScribbleMlsdSegNormal MapDepth

ModelControlNet 模型,模型选择要与预处理器对应

Weight:权重影响,使用 ControlNet 生成图片的权重占比影响

Guidance strength(T):引导强度,值为 1 时,代表每迭代 1 步就会被 ControlNet 引导 1

Annotator resolution:数值越高,预处理图像越精细

Canny low/high threshold:控制最低和最高采样深度

Resize mode:图像大小模式,默认选择缩放至合适

Canvas width/height:画布宽高

Create blank canvas:创建空白画布

Preview annotator result:预览注释器结果,得到一张 ControlNet 模型提取的特征图片

Hide annotator result:隐藏预览图像窗口

image.png

LoRA 模型训练说明

前面提到 LoRA 模型具有训练速度快,模型大小适中(100MB 左右),配置要求低(8G 显存),能用少量图片训练出风格效果的优势。

以下简要介绍该模型的训练方法:

1 步:数据预处理

Stable Diffusion WebUI 功能面板中,选择 Train 训练功能,点选 Preprocess images 预处理图像功能。在 Source directory 栏填入你要训练的图片存放目录,在 Destination directory 栏填入预处理文件输出目录。width height 为预处理图片的宽高,默认为 512x512,建议把要训练的图片大小统一改成这个尺寸,提升处理速度。勾选 Auto focal point crop 自动焦点裁剪,勾选 Use deepbooru for caption 自动识别图中的元素并打上标签。点击 Preprocess 进行图片预处理。

2 步:配置模型训练参数

在这里可以将模型训练放到 Google Colab 上进行,调用 Colab 的免费 15G GPU 将大大提升模型训练速度。LoRA 微调模型训练工具我推荐使用 Kohya,运行 Kohya Colabhttps://colab.research.google.com/github/Linaqruf/kohya-trainer/blob/main/fast-kohya-trainer.ipynb

配置训练参数:

先在 content 目录建立 training_dir/training_data 目录,将步骤 1 中的预处理文件上传至该数据训练目录。然后配置微调模型命名和数据训练目录,在 Download Pretrained Model 栏配置需要参考的预训练模型文件。其余的参数可以根据需要调整设置。

3 步:训练模型

参数配置完成后,运行程序即可进行模型训练。训练完的模型将被放到 training_dir/output 目录,我们下载 safetensors 文件格式的模型,存放到 stable-diffusion-webui/models/Lora 目录中即可调用该模型。由于直接从 Colab 下载速度较慢,另外断开 Colab 连接后也将清空模型文件,这里建议在 Extras 中配置 huggingface Write Token,将模型文件上传到 huggingface 中,再从 huggingface File 中下载,下载速度大大提升,文件也可进行备份。

image.png

2. Prompt 语法技巧

文生图模型的精髓在于 Prompt 提示词,如何写好 Prompt 将直接影响图像的生成质量。

提示词结构化

Prompt 提示词可以分为 4 段式结构:画质画风 + 画面主体 + 画面细节 + 风格参考

画面画风:主要是大模型或 LoRA 模型的 Tag、正向画质词、画作类型等

画面主体:画面核心内容、主体人///景、主体特征/动作等

画面细节:场景细节、人物细节、环境灯光、画面构图等

风格参考:艺术风格、渲染器、Embedding Tag

image.png

提示词语法

提示词排序:越前面的词汇越受 AI 重视,重要事物的提示词放前面

增强/减弱:(提示词:权重数值),默认 1,大于 1 加强,低于 1 减弱。如 (doctor:1.3)

混合:提示词 | 提示词,实现多个要素混合,如 [red|blue] hair 红蓝色头发混合

+ AND:用于连接短提示词,AND 两端要加空格

分步渲染:[提示词 A:提示词 B:数值],先按提示词 A 生成,在设定的数值后朝提示词 B 变化。如[dog:cat:30] 30 步画狗后面的画猫,[dog:cat:0.9] 前面 90%画狗后面 10%画猫

正向提示词:masterpiece, best quality 等画质词,用于提升画面质量

反向提示词:nsfw, bad hands, missing fingers……, 用于不想在画面中出现的内容

Emoji:支持 emoji。

image.png

3. ChatGPT 辅助生成提示词

我们也可以借助 ChatGPT 帮我们生成提示词参考。

根据参考生成 Prompts,再添加细节润色

4. Stable Diffusion 全中文环境配置

在实际使用中,我们还可以把 Stable Diffusion 配置成全中文环境,这将大大增加操作友好度。全中文环境包括了 Stable Diffusion WebUI 的汉化和 Prompt 支持中文输入。

当然,AI绘画不仅仅是一个工具,更是一种全新的创作方式和思维模式的体现。它让我们重新审视了艺术创作的可能性和边界,也让我们更加期待未来AI技术在更多领域的应用和突破。

让我们共同期待Stable Diffusion技术在未来能够带来更多的惊喜和突破,也让我们共同期待Stable Diffusion绘画能够为我们带来更多的艺术享受和灵感激发。

@版权声明:部分内容从网络收集整理,如有侵权,请联系删除!

相关文章