Datawhale X 魔搭 AI夏令营task 3笔记

Task 3 主要任务

了解微调的基本原理,对的种参数有一个更加清楚的了解,实现一个更好的效果。

了解文生图的工作流平台工具ComfyUI,实现一个更加高度定制的文生图。

ComfyUI应用场景探索

什么是ComfyUI?

GUI 是 "Graphical User Interface"(图形用户界面)的缩写。简单来说,GUI 就是你在电脑屏幕上看到的那种有图标、按钮和菜单的交互方式。

ComfyUI 是GUI的一种,是基于节点工作的用户界面,主要用于操作图像的生成技术,ComfyUI 的特别之处在于它采用了一种模块化的设计,把图像生成的过程分解成了许多小的步骤,每个步骤都是一个节点。这些节点可以连接起来形成一个工作流程,这样用户就可以根据需要定制自己的图像生成过程。

ComfyUI核心节点

1.Load Checkpoint节点

功能:加载checkpoint大模型

2.Load Checkpoint with config节点

功能:加载checkpoint大模型并同时应用config文件中指定的设置

3.CLIP Set Last Layer节点

功能:CLIP进行微调并调整最后一层(Set Last Layer)该节点用来设置选择CLIP模型在第几层的输出数据,提高模型在目标任务上的表现。

4.CLIP Text Encode (Prompt)节点

功能:该节点用来输入正反向提示词

5.KSampler节点

功能:门用于逐步减少潜在空间图像中的噪声,改善图像质量和清晰度

6.Empty Latent image节点

功能:控制纯噪声的潜空间图像及比例

7.VAE Decode节点

功能:用来将潜空间图像解码到像素级的图像。

8.Save image节点

用来保存image图像

每个节点详细介绍见:ComfyUI进阶篇:ComfyUI核心节点(一)

浅尝ComfyUI工作流

用带Lora和不带Lora模型的工作流脚本分别安装到comfyUI上,生成图片

不带Lora:

带Lora:

ComfyUI资源

ComfyUI的官方地址

ComfyUI官方示范

Lora微调

什么是Lora微调?

LoRA(Low-Rank Adaptation)微调方法是一种针对预训练模型的高效微调技术。其核心思想是在预训练模型的基础上,通过注入可训练层(秩-分解矩阵)来实现模型性能的提升。具体来说,LoRA建议冻结预训练模型的权重,并在每个Transformer块中注入可训练层。由于不需要为大多数模型权重计算梯度,因此大大减少了需要训练参数的数量,降低了GPU的内存要求。

在LoRA微调过程中,研究人员发现,通过聚焦大模型的Transformer注意力块,使用LoRA进行的微调质量与全模型微调相当,同时速度更快且需要更少的计算资源。这一特点使得LoRA微调方法在实际应用中具有很大的优势。

深度解析LoRA微调方法:原理、应用与未来

可图比赛中微调代码的深入了解

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训练    

UNet、VAE和文本编码器的协作关系

UNET是一种基于词向量的扩散算法,它的目标是将图形数据带在噪点图中,通过分步去噪的过程生成描述文本的图片。 VAE(变分自编码器)是一个先压缩后解压的算法。 它将输入的图像压缩为较小的噪点图,然后通过UNET算法进行逐步去噪,得到带有所有图片特征的噪点图。

如何准备一个高质量的数据集

明确需求

应用场景(例如,艺术风格转换、产品图像生成、医疗影像合成等)、数据类型(真实世界的照片还是合成图像?是黑白的还是彩色的?是高分辨率还是低分辨率?)、数据量(需要多少图片来支持训练和验证)

数据集来源

公开数据平台:魔搭、ImageNetOpen ImagesFlickrCelebA(专注于人脸图像的数据集)LSUN

使用API或爬虫获取(注意版权问题)

数据合成

数据增强

购买或定制(特定领域,比如医学影像、卫星图像等,建议从靠谱的渠道购买一些数据集。)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值