Part 1: 工具初探 - ComfyUI应用场景探索
-
ComfyUI简介
- ComfyUI 是一种基于节点的用户界面,专用于图像生成技术。其模块化设计将图像生成过程分解为多个步骤,用户可以通过连接不同的节点创建自定义的图像生成工作流程。
- 优势:模块化灵活性、可视化界面、多模型支持、调试与优化、开放与可扩展、用户友好性。
-
ComfyUI核心模块
- 模型加载器、提示词管理器、采样器、解码器等。
-
ComfyUI图片生成流程
- 通过加载模型、设置提示词、配置采样器等步骤,逐步生成图像。
-
安装ComfyUI
- 步骤:下载脚本代码、执行安装程序、进入预览界面。
-
工作流示例
- 不带Lora的工作流 和 带Lora的工作流 样例,帮助用户熟悉基础操作与高级功能。
- 不带Lora的工作流 和 带Lora的工作流 样例,帮助用户熟悉基础操作与高级功能。
Part 2: LoRA微调
-
LoRA简介
- LoRA(Low-Rank Adaptation)是一种用于高效微调预训练模型的技术,通过在模型关键层添加低秩矩阵实现微调,保持模型泛化能力并减少资源消耗。
-
LoRA微调代码
- 详细讲解了LoRA微调的关键代码段,涉及模型路径设置、参数配置等。
-
UNet、VAE和文本编码器的协作关系
- UNet:生成图像的核心模型。
- VAE:负责图像的潜在空间映射。
- 文本编码器:将文本提示转化为向量输入UNet。
以下是LoRA训练代码和参数表的总结:
LoRA 训练代码
import os
cmd = """
python DiffSynth-Studio/examples/train/kolors/train_kolors_lora.py \
--pretrained_unet_path models/kolors/Kolors/unet/diffusion_pytorch_model.safetensors \
--pretrained_text_encoder_path models/kolors/Kolors/text_encoder \
--pretrained_fp16_vae_path models/sdxl-vae-fp16-fix/diffusion_pytorch_model.safetensors \
--lora_rank 16 \
--lora_alpha 4.0 \
--dataset_path data/lora_dataset_processed \
--output_path ./models \
--max_epochs 1 \
--center_crop \
--use_gradient_checkpointing \
--precision "16-mixed"
""".strip()
os.system(cmd) # 执行LoRA训练脚本
参数详情表
参数名称 | 参数值 | 说明 |
---|---|---|
pretrained_unet_path | models/kolors/Kolors/unet/diffusion_pytorch_model.safetensors | 指定预训练UNet模型的路径 |
pretrained_text_encoder_path | models/kolors/Kolors/text_encoder | 指定预训练文本编码器的路径 |
pretrained_fp16_vae_path | models/sdxl-vae-fp16-fix/diffusion_pytorch_model.safetensors | 指定预训练VAE模型的路径 |
lora_rank | 16 | 设置LoRA的秩(rank),影响模型的复杂度和性能 |
lora_alpha | 4 | 设置LoRA的alpha值,控制微调的强度 |
dataset_path | data/lora_dataset_processed | 指定用于训练的数据集路径 |
output_path | ./models | 指定训练完成后保存模型的路径 |
max_epochs | 1 | 设置最大训练轮数为1 |
center_crop | 无 | 启用中心裁剪,用于图像预处理 |
use_gradient_checkpointing | 无 | 启用梯度检查点,节省显存 |
precision | "16-mixed" | 设置训练时的精度为混合16位精度(half precision),这可以加速训练并减少显存使用 |
LoRA微调的关键点
- LoRA的秩(rank) 决定了微调的表达能力与训练效率的平衡。
- Alpha值 控制微调对模型的影响强度。
- 使用梯度检查点 能够节省显存,是在有限资源条件下进行高效训练的常用技巧。
- 混合精度训练 通过使用16位浮点数加速训练过程,并减少显存占用。
这部分总结了LoRA训练的关键代码和参数,帮助更好地理解和执行LoRA微调任务。
Part 3: 准备高质量数据集
-
选择数据集的关键维度
- 需求与目标:明确应用场景、数据类型、数据量。
- 数据集来源:包括公开数据平台、API或爬虫获取、数据合成、数据增强、购买或定制数据集等渠道。
-
常见数据集推荐
- ImageNet、Open Images、Flickr、CelebA、LSUN 等。
总结与展望
- 学习体验:通过深入理解工具和微调技术,提升了AI生成图像的能力。
- 团队开发时间:鼓励团队交流与合作,持续迭代作品。
- 社群交流:继续在社群中分享和讨论学习心得,推动共同进步。