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

Task3:进阶上分-实战优化

part1:工具初探一ComfyUI应用场景探索

ComfyUI概述

ComfyUI是一个功能强大、高度模块化的Stable Diffusion图形用户界面和后端系统,它允许用户通过链接不同的节点来构建复杂的图像生成工作流程。这些节点可以包括各种任务,如加载检查点模型、输入提示、指定采样器等。ComfyUI的用户手册提供了全面的指南,帮助用户快速入门并深入探索ComfyUI的功能。

ComfyUI的核心模块

ComfyUI 是一个基于 Stable Diffusion 的图形用户界面,它提供了多种功能模块和核心节点,使用户能够通过节点链接构建复杂的图像生成工作流程。以下是一些核心模块和节点的概述:

  1. Load Checkpoint 节点:用于加载预训练的大型模型,如 sd1.0、sd1.5、sd2.0、sd3.0、sdXL 等,是开始图像生成的基础 。

  2. Load Checkpoint with config 节点:这是一个高级节点,允许加载大型模型并同时应用配置文件中的设置 。

  3. CLIP Set Last Layer 节点:用于对 CLIP 模型进行微调,通过设置最后一层的输出数据来提高模型在特定任务上的表现 。

  4. CLIP Text Encode (Prompt) 节点:输入正反向提示词,通过 CLIP 模型编码形成引导模型扩散的条件信息 。

  5. KSampler 节点:用于逐步减少潜在空间图像中的噪声,改善图像质量和清晰度 。

  6. VAE Decode 节点:将潜在空间图像解码到像素级图像,通常与 VAE 模型一起使用 。

  7. Save Image 节点:保存生成的图像,通常保存在 ComfyUI 的输出目录中 。

  8. ComfyUI Manager:一个自定义节点工具,提供了一系列管理功能,包括安装、移除、禁用和启用 ComfyUI 的各种自定义节点 。

  9. ComfyUI-Workspace-Manager:工作流程和模型管理器扩展,可在一个地方组织和管理所有工作流程、模型和生成的图像 。

  10. AIGODLIKE-COMFYUI-TRANSLATION:ComfyUI 的多语言翻译插件,实现了界面和功能的本地化 。

这些核心模块和节点为 ComfyUI 的使用者提供了强大的功能,允许他们进行高效的图像生成和编辑。通过这些模块和节点的组合使用,用户可以实现包括人像生成、背景替换、图片动画化等多种创意效果。随着 ComfyUI 的不断发展,其功能和模块也在不断扩展和更新,为用户提供了更多的创作可能性。

浅尝ComfyUI工作流

利用下面八个文生图话剧,尝试生成话剧图片:

现代风,清新校园,一个文静的中国女学生,坐在明亮的教室里,专注地看着黑板,上半身,穿着整齐的白色校服,手中拿着笔记本,沉浸在学习的氛围中。

现代风,温馨午后,这位中国女学生头轻轻靠在书桌上,上半身,穿着舒适的校服,周围是轻轻翻书的声音,她已经悄然入睡。

现代风,梦幻旅途,这位中国女学生站在繁忙的街道旁,全身,穿着休闲的牛仔裤和T恤,手中拿着一杯咖啡,眼神中透露出对未来的憧憬。

现代风,豪车邂逅,一位风度翩翩的中国绅士驾驶着豪车而来,全身,穿着精致的西装,与女学生的目光相遇,两人似乎有着不言而喻的默契。

现代风,咖啡馆对话,这位中国女学生和绅士坐在咖啡馆的窗边,上半身,她手中拿着一本书,绅士则专注地听着她讲述,两人的交流充满了愉悦和轻松。

现代风,城市漫游,这位中国女学生与绅士一同在豪车中穿梭于城市的街道,全身,她穿着优雅的连衣裙,两人享受着城市的繁华与宁静。

现代风,梦醒时分,这位中国女学生从梦中醒来,上半身,穿着简单的T恤,脸上带着微笑,似乎对刚才的梦境感到满足。

现代风,回归日常,这位中国女学生回到书桌前,全身,穿着休闲的家居服,手中拿着笔,继续她的学习生活,眼中闪烁着对知识的渴望。

不带Lora

带Lora

这两组图片都是利用ComfyUI生成的,都较为符合上面的文字描述。每一张图片准确地表现了文字描述中的场景和情绪。

Part2:Lora微调

Lora(Low-Rank Adaptation)是一种微调大型神经网络模型的技术,特别是在深度学习领域中对于像Stable Diffusion这样的大型语言模型或图像生成模型。Lora通过在模型的特定部分引入低秩结构来进行微调,这样可以在不显著增加计算负担的情况下,调整模型的行为以适应新的任务或数据集。

以下是使用Lora进行微调的一些关键步骤:

  1. 选择模型部分:确定在模型的哪些部分引入Lora。通常,这些是模型中已经处理相关任务的层,例如文本处理或图像处理层。

  2. 设置Lora参数

    • Lora Rank:这是Lora中的秩参数,决定了微调的精细程度。较低的秩意味着更粗糙的调整,而较高的秩可以提供更细致的调整。
    • Lora Alpha:这个参数控制了Lora层的缩放,影响微调的强度。
  3. 训练模型:使用你的数据集和配置好的微调参数来训练模型。监控训练过程,确保模型正在学习并适应新数据。

  4. 评估模型:在微调过程中和训练完成后,使用验证集或测试集来评估模型的性能。

  5. 保存和部署:一旦模型微调完成并且性能满意,保存模型的参数,并将其部署到实际应用中。

Lora微调是一种高效的技术,尤其适用于大型模型,因为它可以在不显著增加计算负担的情况下,实现模型的快速适应和改进。

对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 5 \
  --center_crop \
  --use_gradient_checkpointing \
  --precision "16-mixed"
""".strip()


os.system(cmd)
  • --pretrained_unet_path: 指定预训练的U-Net模型的路径。
  • --pretrained_text_encoder_path: 指定预训练的文本编码器的路径。
  • --pretrained_fp16_vae_path: 指定预训练的变分自编码器(VAE)模型的路径,这里使用的是16位混合精度。
  • --lora_rank: 设置Lora方法中的秩,这影响模型的表达能力和训练效率。
  • --lora_alpha: 设置Lora方法中的alpha值,这影响参数调整的强度。
  • --dataset_path: 指定用于训练的数据集的路径。
  • --output_path: 指定模型输出的路径。
  • --max_epochs: 设置训练的最大轮数。
  • --center_crop: 启用中心裁剪,通常用于图像预处理以减少边界效应。
  • --use_gradient_checkpointing: 启用梯度检查点技术,这有助于节省内存。
  • --precision "16-mixed": 指定训练时使用的精度,这里使用的是混合16位精度。

这里简单对比了一下epoch = 1和3的微调效果“

epoch为1

美学打分:6.455353379249573

epoch为3:

美学打分:6.362172365188599

虽然两者在美学评分上的差异并不显著,但当训练周期(epoch)为1时,生成的图像四明显描绘了一位女士,这与文本描述并不完全吻合。此外,在训练周期为1的情况下,主人公的眼神看起来都非常相似。这些观察结果表明,增加训练周期对于提高图像生成的准确性和多样性是非常必要的。

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

高质量的数据集是深度学习成功的基石,它决定了模型训练的有效性和最终模型的泛化能力。理想情况下,数据集应该包含多样化的样本,以确保模型不会对特定类型的数据产生偏见,同时也能够处理现实世界中的多变情况。这些数据需要真实地反映模型预期应用的环境,以提高模型在实际使用中的准确性和可靠性。

数据集的组织结构应该清晰,使得数据易于访问和处理,这样可以在训练过程中节省大量时间。数据集的规模也不容忽视,一般来说,数据量越大,模型的泛化能力越强。然而,也需要在数据量和训练成本之间找到平衡点。在收集和处理数据的过程中,还必须考虑到数据的合法性、隐私性和伦理问题,确保数据集的合规使用。

利用社区和公开数据平台

例如魔搭平台就有大量的数据集用于训练。

使用专门数据集:针对特定需求,使用如ImageNet、OpenImages、Flickr、CelebA和LSUN等公开数据集,这些数据集在视觉识别和图像描述等任务中非常有用。

API和网络爬虫获取:如果需要特定类型的内容,可以通过API从图库网站如Unsplash、Pexels等抓取图片。同时,使用网络爬虫技术从互联网上抓取图片,但要特别注意版权和合法性问题。

数据合成:使用图形引擎(如Unity、Unreal Engine)或特定软件生成合成数据,这在训练如自动驾驶车辆、游戏NPC行为等模型时非常有用。

数据增强:对于数据量较小的数据集,可以通过数据增强技术如旋转、翻转、缩放、颜色变换等来增加数据多样性,提高模型的泛化能力。

这些方法提供了从寻找现有资源到创造新资源的多种途径,以构建适合特定AI任务的高质量数据集。在准备数据集的过程中,始终要关注数据的多样性、平衡性、准确性和合法性。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值