ControlNet
安装完 ControlNet 后,在 txt2img 和 img2img 参数面板中均可以调用 ControlNet。操作说明:
Enable:启用 ControlNet
Low VRAM:低显存模式优化,建议 8G 显存以下开启
Guess mode:猜测模式,可以不设置提示词,自动生成图片
Preprocessor:选择预处理器,主要有 OpenPose、Canny、HED、Scribble、Mlsd、Seg、Normal Map、Depth
Model:ControlNet 模型,模型选择要与预处理器对应
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:隐藏预览图像窗口
LoRA 模型训练说明
前面提到 LoRA 模型具有训练速度快,模型大小适中(100MB 左右),配置要求低(8G 显存),能用少量图片训练出风格效果的优势。
以下简要介绍该模型的训练方法:
第 1 步:数据预处理
在 Stable Diffusion WebUI 功能面板中,选择 Train 训练功能,点选 Preprocess images 预处理图像功能。在 Source directory 栏填入你要训练的图片存放目录,在 Destination directory 栏填入预处理文件输出目录。width 和 height 为预处理图片的宽高,默认为 512×512,建议把要训练的图片大小统一改成这个尺寸,提升处理速度。勾选 Auto focal point crop 自动焦点裁剪,勾选 Use deepbooru for caption 自动识别图中的元素并打上标签。点击 Preprocess 进行图片预处理。
第 2 步:配置模型训练参数
在这里可以将模型训练放到 Google Colab 上进行,调用 Colab 的免费 15G GPU 将大大提升模型训练速度。LoRA 微调模型训练工具我推荐使用 Kohya,运行 Kohya Colab: https://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 中下载,下载速度大大提升,文件也可进行备份。
2. Prompt 语法技巧
文生图模型的精髓在于 Prompt 提示词,如何写好 Prompt 将直接影响图像的生成质量。
提示词结构化
Prompt 提示词可以分为 4 段式结构:画质画风 + 画面主体 + 画面细节 + 风格参考
画面画风:主要是大模型或 LoRA 模型的 Tag、正向画质词、画作类型等
画面主体:画面核心内容、主体人/事/物/景、主体特征/动作等
画面细节:场景细节、人物细节、环境灯光、画面构图等
风格参考:艺术风格、渲染器、Embedding Tag 等
提示词语法
提示词排序:越前面的词汇越受 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,如 形容表情 修饰手
常用提示词举例: