Datawhale X 魔搭 AI夏令营 第四期--AIGC文生图 task3笔记

一、ComfyUI工具实操及结果展现

ComfyUI是一种图像用户交互界面,通过拖拽模块化操作,将晦涩难懂的底层代码可以前端可视化流程化展现,降低大家对AI编程开发的门槛。

其图片生成基本流程比较简单:

  1. 基于实际应用需求选择合适的模型;
  2. 将各个节点模块连接形成一套完整的流程;
  3. 运行构建好的流程并输出运行结果;
  4. 持续迭代优化参数和工作流,最终达到期望效果。

核心模块包括模型加载器,提示词管理器,采样器和解码器。

带Lora的工作流生成效果图片:


二、速通Comfyui安装实操代码及工作流解析

    1.下载Comfyui脚本文件

操作非常简单,主要是kolors_test_comfyui 克隆到本地后,进行移删文件和目录等操作,其中最后一步将检查点文件 epoch=0-step=500.ckpt 移动到前面创建的检查点目录中,目的也是为了后面做模型训练过程中固化某个时刻模型状态,以便后续判断是否继续训练和评估。

    2.安装ComfyUI

主要包括Comfy的初始化,安装与更新,Kolors的安装更新,自定义节点依赖包安装,clouddlared包的下载安装,简化了环境搭建的过程。

 

   3.ComfyUI工作流图片生成

文档中提供了带lora和不带Lora的两个json文件sample,打开文件查看后,主要是一键导入ComfyUI工作流运行的各类参数,lora文件是task1 做ft训练出来的文件,所以文件信息比不带Lora的要多一些,最后在ComfyUI前端界面,可以通过提示词管理器模块的正反提示词部分进行图片生成控制。

   对下面图片涉及到的参数我们简单介绍下,因为这些参数决定了最终输出图像的质量风格及内容:

  1. Positive (正向条件):

    这通常指的是生成图像时想要包含的特征或内容的描述。例如,“一只戴着帽子的猫”。
  2. Negative (负向条件):

    相对于正向条件,这指的是生成图像时要避免的特征或内容。例如,“没有狗”。
  3. Latent Image (潜在图像):

    指的是在模型内部表示图像的一种抽象形式,通常是在潜在空间中的向量表示。这种表示形式可以通过解码器转换回图像。
  4. Seed (种子):

    是一个用于随机数生成的初始值,确保每次运行相同的种子时都能得到相同的随机结果。这对于可重复性很重要。
  5. Control After Generate (生成后的控制):

    允许用户在生成图像的过程中控制随机种子的行为,比如随机化、递增、递减或固定种子。
  6. Steps (步数):

    在图像生成过程中,采样器迭代去噪或生成图像的次数。更多的步骤通常意味着更精细的结果,但也可能增加计算时间和资源消耗。
  7. CFG (Classifier-Free Guidance, 分类器自由引导):

    控制采样器如何根据提示(prompt)生成图像。较高的CFG值使图像更加符合提示,但过高可能会导致图像质量下降。
  8. Sampler Name (采样器名称):

    指的是用于从潜在空间生成图像的具体算法,不同的采样器可能产生不同的效果。
  9. Scheduler (调度器):

    用于控制采样器如何在迭代过程中调整其行为,影响去噪的速度和效率。
  10. Denoise (去噪):

    指的是在生成过程中去除潜在图像中的噪声,恢复或生成图像的过程。去噪程度决定了保留多少原始图像信息。

三、Lora微调

 1.简介

LoRA (Low-Rank Adaptation)微调是预训练模型进行高效轻量级微调的技术。主要原理是通过外挂一个低秩矩阵,而原始模型的大部分权重保持不变,模型训练微调更容易,最终也能保持良好的泛化能力和低资源开销。

2.微调代码参数详解
  • --pretrained_unet_path:
    
    指定预训练的U-Net模型的路径。U-Net是扩散模型的一个关键组件,负责预测噪声。
    --pretrained_text_encoder_path:
    
    指定预训练的文本编码器路径,该编码器用于将文本提示转化为嵌入向量。
    --pretrained_fp16_vae_path:
    
    指定预训练的变分自动编码器(VAE)路径,VAE用于图像的编码和解码,将图像压缩到潜在空间和从潜在空间重建图像。
    --lora_rank:
    
    定义LoRA适应层的秩(rank)。秩越小,LoRA参数越少,计算成本越低,但可能会影响模型性能;秩越大则相反。
    --lora_alpha:
    
    控制LoRA层的影响强度。较大的alpha值意味着LoRA层对模型输出有更大的影响。
    --dataset_path:
    
    指定用于微调的数据集路径。这是包含图像和对应文本提示的目录。
    --output_path:
    
    指定训练完成后模型保存的目录。
    --max_epochs:
    
    设置模型训练的最大轮数。轮数是指整个数据集遍历模型训练的次数。
    --center_crop:
    
    启用中心裁剪,对输入图像进行中心裁剪,以确保图像的中心区域被用于训练,这有助于提高模型的聚焦能力。
    --use_gradient_checkpointing:
    
    启用梯度检查点技术,这是一种节省GPU内存的方法,通过在反向传播时重新计算中间激活,而不是存储所有激活。
    --precision:
    
    设置训练精度。16-mixed表示使用混合精度训练,即结合了FP16(半精度浮点)和FP32(单精度浮点)。
  •   3.UNet ,VAE和文件编码器的协作关系

   文本提示首先通过文本编码器转化为嵌入,这些嵌入携带了文本描述的语义信息。图像通过VAE编码为潜在空间表示,这个表示是UNet操作的基础。UNet在每一迭代步骤中,都会接收潜在空间的图像表示和文本嵌入,然后预测噪声分布,逐步去除噪声,从而朝着目标图像逼近。VAE在生成过程的最后阶段,将UNet输出的潜在空间表示解码为图像空间,生成最终的图像。

四、高质量数据集准备

前面一直在讲工具使用和微调技术方法,实际上合适的数据集是非常非常关键的。找到这些数据集需要依据你的需求场景和目标输出,从一些公开的数据平台(魔搭dataset/Huggface)、API爬虫、三方数据、集团数仓或者数据湖中数据进行自取。可能做了多次的Agent开发,模型微调后你会发现,合适的数据清洗查找占据了你80%的开发时间。AI开发对数据开发者其实也有一定先天优势。

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值