Datawhale X 魔搭 AI夏令营task3学习笔记

概述

这是本次夏令营的最后一次task,在这次task中我主要学习了如何使用ComfyUI,运用其模块化的特点,定制自己的图像生成过程。同时,我也了解了Lora的基本原理,以及如何将自己训练出的Lora运用到图像生成过程之中。最后,了解了一些数据集的获取路径。

基本知识

ComfyUI

ComfyUI是GUI的一种,采用了模块化的设计,所以使用起来很方便。并且是图形化界面,使用时就像在搭建流程图一样,将代码可视化,便于理解。在使用过程中,主要就是调用各种模块,在模块中输入参数,然后将不同模块的节点连接起来形成工作流,达成某个功能。同时,ComfyUI还兼顾了灵活性,使用者可以通过自定义模块实现一些特定的功能,比如说图像颜色的反转等等。

Lora

Lora(low-rank adaptation)是一种在预训练的模型上进行微调的技术。对模型的微调主要是对其中一些参数进行微调。而lora就是在已有的参数上加上一个低秩矩阵而达到调整的目的。通常一个参数矩阵中有大量的元素,如果对其中每一列参数都进行调整的话,会消耗大量的时间,但考虑到其中有很多是线性相关的,所以其中有很多操作是相似的,因此,我们只需对其中的一部分进行调整即可。这也是一个低秩矩阵拥有较好调整效果的原因。同时,由于低秩矩阵只是调整了参数的一小部分,所以其不会改变模型的整体架构,到达在原模型的基础上进行微调的目的。并且,在训练过程中,只有这些新增的低秩矩阵被更新,原始模型的大部分权重不会改变。

ComfyUI的使用

我在这次task中,使用了阿里云的PAI-DSW体验ComfyUI。

安装ComfyUI

在PAI-DSW中创建一个实例,并在其中打开终端,输入以下命令下载ComfyUI的安装文件

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的安装文件,运行其中的ComfyUI.ipynb文件,即可成功安装ComfyUI。最后会提供一个链接,点击链接便可成功打开ComfyUI。

使用ComfyUI

我使用ComfyUI来实现文生图

模块介绍

模型加载模块

Download Kolors Model/Download ChatGLM3 Model/Load VAE分别加载model,CLIP,VAE

CLIP模块

Kolors Text Encode用于将文本类型的输入转变为模型可以理解的latent space embedding作为模型输入

解码器

VAE Decode用于将Latent space中的embedding解码为像素级别的图像

采样器

Kolors Sampler用于控制模型生成图像,其中width与height控制图像大小,seed控制噪声生成的随机种子,control_after_generate控制seed在每次生成后的变化fixed表示不变,steps为降噪的迭代步数,cfg控制提示词对图像生成的影响,scheduler控制使用的调度器,denoise_strength控制多少内容会被噪声覆盖(这里设置为1即完全随机噪声,较小的值通常用于对图像修复中以保持图像的细节与质量)

不带Lora的工作流

我先用这些模块搭建不带Lora的工作流,先用Download Kolors Model, Download ChatGLM3 Model和Load VAE加载模型,然后Kolors Text Encode用加载的CLIP将输入的提示词变为模型可理解的embedding输出,接着将该输出与加载的模型输入Kolors Sampler,调整参数输出Latent space embedding,然后VAE Decode运用VAE将该输出变为像素图片,最后用Preview Image展示图片。具体的工作流与结果如下

带Lora的工作流

Lora文件

这里使用的Lora是我在task1中用baseline训练的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)

该代码先调用了训练脚本train_kolors_lora.py,然后输入的参数主要有

预训练模型路径(--pretrained_unet_path指定unt路径,--pretrained_text_ebcode_path指定文本编码器路径,--pretrained_fp16_vae_path指定VAE路径),

Laro参数(--lora_rank设置lora矩阵的秩,--lora_alpha设置lora的缩放因子alpha),

数据集与输出位置(--dataset_path设置训练所用数据集的位置,--output_path设置训练结果的存放位置),

训练参数(--max_epochs设置训练轮数,--center_crop表示在处理图像时进行中心裁剪,--use_gradient_checkpointing表示使用梯度检查点技术,--precision设置计算精度)。

下载lora文件

我之前在魔搭社区中创建了该lora的公开模型,所以可以在实例中通过以下指令下载lora文件

git clone https://www.modelscope.cn/shek535/learn1public.git
搭建工作流并运行

工作流的搭建与不带lora的类似,只是在Download Kolors Model与Kolors Sample之间增添一个Load Kolors LoRA模块用于加载lora模型,其中lora_path为实例中lora的存放路径。

具体的工作流与结果如下

数据集的获取路径

最后我也了解了一些数据集的获取路径,首先可以通过一些公开的数据平台如魔搭社区中开放的数据集、ImageNet、Flickr等等,其次我们还可以通过网络爬虫获取图片。

总结

通过最后一次task,我学会了如何使用ComfyUI,更深入的了解了LoRA微调背后的原理以及其训练的过程,也知道了更多数据集的获取路径,可以更好的掌握文生图技术。通过本次夏令营,我对文生图有了大致的了解,学会了如何生成自己所需的图片,希望以后可以再次基础上更加深入的理解与使用AIGC技术。

  • 11
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值