本文为AI方向小白记录暑期参加魔搭夏令营-AIGC文生图方向的Task 01
报名赛事链接:可图Kolors-LoRA风格故事挑战赛_创新应用大赛_天池大赛-阿里云天池的赛制
欢迎所有小白,大神前来交流学习。
一. 初识ComfyUI
1.1 什么是ComfyUI
GUI 是 "Graphical User Interface"(图形用户界面)的缩写。简单来说,GUI 就是你在电脑屏幕上看到的那种有图标、按钮和菜单的交互方式。
ComfyUI 是GUI的一种,是基于节点工作的用户界面,主要用于操作图像的生成技术,ComfyUI 的特别之处在于它采用了一种模块化的设计,把图像生成的过程分解成了许多小的步骤,每个步骤都是一个节点。这些节点可以连接起来形成一个工作流程,这样用户就可以根据需要定制自己的图像生成过程。
1 万字系统剖析ComfyUI | Stable Diffusion:GUI全盘点 | ComfyUI系统性教程原理篇04 | Ai+建筑
1.2 ComfyUI核心模块
核心模块由模型加载器、提示词管理器、采样器、解码器。
本小节内容来自魔搭社区,具体内容可点击查看:魔搭官方教程。
模型加载器:Load Checkpoint用于加载基础的模型文件,包含了Model、CLIP、VAE三部分
CLIP模块将文本类型的输入变为模型可以理解的latent space embedding作为模型的输入
解码器:VAE模块的作用是将Latent space中的embedding解码为像素级别的图像
采样器:用于控制模型生成图像,不同的采样取值会影响最终输出图像的质量和多样性。采样器可以调节生成过程的速度和质量之间的平衡。Stable Diffusion的基本原理是通过降噪的方式(如完全的噪声图像),将一个原本的噪声信号变为无噪声的信号(如人可以理解的图像)。其中的降噪过程涉及到多次的采样。采样的系数在KSampler中配置:
seed:控制噪声产生的随机种子
control_after_generate:控制seed在每次生成后的变化
steps:降噪的迭代步数,越多则信号越精准,相对的生成时间也越长
cfg:classifier free guidance决定了prompt对于最终生成图像的影响有多大。更高的值代表更多地展现prompt中的描述。
denoise: 多少内容会被噪声覆盖 sampler_name、scheduler:降噪参数。
1.3 ComfyUI图片生成流程
1.4 ComfyUI的优势
模块化和灵活性:ComfyUI 提供了一个模块化的系统,用户可以通过拖放不同的模块来构建复杂的工作流程。这种灵活性允许用户根据自己的需求自由组合和调整模型、输入、输出、和其他处理步骤。
可视化界面:ComfyUI 提供了直观的图形界面,使得用户能够更清晰地理解和操作复杂的 AI 模型和数据流。这对没有编程背景的用户特别有帮助,使他们能够轻松构建和管理工作流程。
多模型支持:ComfyUI 支持多个不同的生成模型,用户可以在同一平台上集成和切换使用不同的模型,从而实现更广泛的应用场景。
调试和优化:通过其可视化界面,ComfyUI 使得调试生成过程变得更简单。用户可以轻松地追踪数据流,识别并解决问题,从而优化生成结果。
开放和可扩展:ComfyUI 是一个开源项目,具有高度的可扩展性。开发者可以根据需要编写新的模块或插件,扩展系统功能,并根据项目需求进行定制。
用户友好性:尽管其功能强大,但 ComfyUI 仍然保持了用户友好性,即使对于复杂任务,也能以相对简单的方式完成,使其成为生成式 AI 工作流程管理的有力工具。
二. 速通ComfyUI
在这里,我们依旧选择使用魔搭社区提供的Notebook和免费的GPU算力体验来体验ComfyUI。
我们选择方式2直接打开2.1下载脚本代码文件
下载安装ComfyUI的执行文件
和task1中微调完成Lora文件
git lfs install
git clone https://www.modelscope.cn/datasets/maochase/kolors_test_comfyui.git
mv kolors_test_comfyui/* ./
rm -rf kolors_test_comfyui/
mkdir -p /mnt/workspace/models/lightning_logs/version_0/checkpoints/
mv epoch=0-step=500.ckpt /mnt/workspace/models/lightning_logs/version_0/checkpoints/
执行结果如下
执行完成后,进入ComfyUI.pynb
2.2 一键执行安装程序
我们点击操作栏上面的一键运行按钮即可运行ComfyUI
2.3 进入预览界面
三. 浅尝ComfyUI工作流
3.1 不带Lora的工作流样例
第一步,下载工作流脚本
第二步,点击ComfyUI可视化界面下面的load,导入刚刚下载好的不带Lora的工作流脚本,点击Queue Prompt 生成不带Lora的工作流脚本
3.2 带Lora的工作流样例
我们先下载好带Lora脚本的工作流案例
为了倒入我们Task 1中所生成的Lora 我们先来到Task 1中我们发布的可图训练中
Task 1 中我们发布的可图训练接着复制好Git下载的地址,到我们实例的终端中进行下载
下载好后,我们对刚刚下载好的带Lora的工作流文件进行修改,使用我们自己的Lora文件,以下使用VScode修改:
先将文件中的202行修改为我们Task 1中对第一张图片的描述:
再将第268行修改为我们刚刚下载好的我们自己的Lora库:
保存后,我们再在ComfyUI中load一下我们修改后的文件,再执行一下,即可以得到我们自己的Lora修改后的图片
经过Lora微调后的第一张图片 未经Lora微调的Task 1图片我们可以很清楚的对比到Lora微调后的图片明显更加好看生动,由此可见,ComfyUI是我们不可或缺的好伙伴。
四. Lora微调
4.1 Lora简介
LoRA (Low-Rank Adaptation) 微调是一种用于在预训练模型上进行高效微调的技术。它可以通过高效且灵活的方式实现模型的个性化调整,使其能够适应特定的任务或领域,同时保持良好的泛化能力和较低的资源消耗。这对于推动大规模预训练模型的实际应用至关重要。
4.2 Lora微调的原理
LoRA通过在预训练模型的关键层中添加低秩矩阵来实现。这些低秩矩阵通常被设计成具有较低维度的参数空间,这样它们就可以在不改变模型整体结构的情况下进行微调。在训练过程中,只有这些新增的低秩矩阵被更新,而原始模型的大部分权重保持不变。
具体可以参考下面视频,对Lora的原理讲的比较通俗易懂。
通俗易懂理解全量微调和LoRA微调
4.3 Lora微调的优势
快速适应新任务
在特定领域有少量标注数据
的情况下,也可以有效地对模型进行个性化调整
,可以迅速适应新的领域或特定任务。
保持泛化能力
LoRA通过微调模型的一部分,有助于保持模型在未见过的数据上的泛化能力
,同时还能学习到特定任务的知识。
资源效率
LoRA旨在通过仅微调模型的部分权重,而不是整个模型,从而减少所需的计算资源和存储空间。
4.4 微调代码
import os
cmd = """
python DiffSynth-Studio/examples/train/kolors/train_kolors_lora.py \ # 选择使用可图的Lora训练脚本DiffSynth-Studio/examples/train/kolors/train_kolors_lora.py
--pretrained_unet_path models/kolors/Kolors/unet/diffusion_pytorch_model.safetensors \ # 选择unet模型
--pretrained_text_encoder_path models/kolors/Kolors/text_encoder \ # 选择text_encoder
--pretrained_fp16_vae_path models/sdxl-vae-fp16-fix/diffusion_pytorch_model.safetensors \ # 选择vae模型
--lora_rank 16 \ # lora_rank 16 表示在权衡模型表达能力和训练效率时,选择了使用 16 作为秩,适合在不显著降低模型性能的前提下,通过 LoRA 减少计算和内存的需求
--lora_alpha 4.0 \ # 设置 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),这可以加速训练并减少显存使用
""".strip()
os.system(cmd) # 执行可图Lora训练
4.5 参数详情表
总结
### 文章总结:AI小白暑期魔搭夏令营-AIGC文生图Task 01体验#### 一、初识ComfyUI
**1.1 什么是ComfyUI**
- **定义**:ComfyUI是一种基于节点的图形用户界面(GUI),主要用于操作图像生成技术。
- **特点**:模块化设计,将图像生成过程分解为多个小步骤(节点),用户可定制图像生成流程。
**1.2 ComfyUI核心模块**
- **模型加载器**:加载基础模型文件(Model、CLIP、VAE)。
- **CLIP模块**:将文本输入转换为模型可理解的latent space embedding。
- **解码器(VAE模块)**:将latent space中的embedding解码为像素级图像。
- **采样器**:控制模型生成图像,影响图像质量和多样性,包括seed、steps、cfg等参数。
**1.3 ComfyUI图片生成流程**
- 流程未详细展开,但强调通过节点连接形成工作流程。
**1.4 ComfyUI的优势**
- **模块化和灵活性**:用户可自由组合和调整模型、输入、输出等步骤。
- **可视化界面**:直观易操作,适合无编程背景用户。
- **多模型支持**:支持不同生成模型,实现广泛应用场景。
- **调试和优化**:通过可视化界面简化调试过程。
- **开放和可扩展**:开源项目,支持开发者编写新模块或插件。
- **用户友好性**:功能强大但操作简单,适合复杂任务。
#### 二、速通ComfyUI
**2.1 下载脚本代码文件**
- 使用git命令下载ComfyUI执行文件和Lora文件。
**2.2 一键执行安装程序**
- 点击操作栏上的一键运行按钮运行ComfyUI。
**2.3 进入预览界面**
- 进入ComfyUI的可视化界面进行后续操作。
#### 三、浅尝ComfyUI工作流
**3.1 不带Lora的工作流样例**
- 下载工作流脚本,通过ComfyUI导入并生成图像。
**3.2 带Lora的工作流样例**
- 下载带Lora脚本的工作流案例,修改脚本中的描述和Lora库路径,使用自己的Lora文件生成图像。
- 对比发现,Lora微调后的图像更加生动。
#### 四、Lora微调
**4.1 Lora简介**
- LoRA是一种用于预训练模型的高效微调技术,通过添加低秩矩阵实现个性化调整。
**4.2 Lora微调的原理**
- 在预训练模型的关键层中添加低秩矩阵,仅更新这些矩阵,保持大部分权重不变。
**4.3 Lora微调的优势**
- **快速适应新任务**:少量标注数据即可有效调整模型。
- **保持泛化能力**:在特定任务上学习同时保持泛化能力。
- **资源效率**:减少计算资源和存储空间需求。
**4.4 微调代码**
- 提供了使用可图Lora训练脚本的示例命令,包括模型路径、训练参数等。
**4.5 参数详情表**
- 列出了训练过程中可调整的参数及其说明,但未直接展示表格内容。
#### 总结
本文记录了AI小白在暑期魔搭夏令营中参与AIGC文生图方向Task 01的体验,详细介绍了ComfyUI的界面、核心模块、工作流程以及Lora微调技术。通过实际操作,展示了ComfyUI在图像生成中的灵活性和高效性,以及Lora微调技术在提升图像质量方面的优势。