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

ops/2024/12/23 7:01:07/

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 oscmd = """
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任务的高质量数据集。在准备数据集的过程中,始终要关注数据的多样性、平衡性、准确性和合法性。


http://www.ppmy.cn/ops/95087.html

相关文章

npm 使用淘宝镜像,安装pnpm

(安装nodejs时,会自动安装npm)使用 npm 安装包时,需要去 npm 仓库获取,而 npm 仓库在国外,很不稳定,有时获取会失败。淘宝搭建了一个国内npm服务器,会定时拉取国外npm仓库内容&#…

井字棋游戏(HTML+CSS+JavaScript)

🌏个人博客主页:心.c 前言:这两天在写植物大战僵尸,写不动了,现在和大家分享一下之前我写的一个很简单的小游戏井字棋,这个没有AI,可以两个人一起玩,如果大家觉得我哪里写的有一些问…

【大模型部署及其应用 】使用 Llama 3 开源和 Elastic 构建 RAG

使用 Llama 3 开源和 Elastic 构建 RAG 本博客将介绍使用两种方法实现 RAG。 Elastic、Llamaindex、Llama 3(8B)版本使用 Ollama 在本地运行。 Elastic、Langchain、ELSER v2、Llama 3(8B)版本使用 Ollama 在本地运行。 笔记本可从此GitHub位置获取。 在开始之前,让我…

LVS 、DR模式

lvs --环境 主机名IP地址功能web1192.168.1.17 rs web2192.168.1.18realservenat 内:192.168.1.16 外:192.168.1.102 directorserver,ntpdns192.168.1.12dns --web1、web2 yum -y install nginxecho "xx" > /usr/share/nginx/html/index.…

Android12 SystemUI QS面板新增截屏功能

问题:Android12 中SystemUI版本,QS下拉快捷面板式没有截屏功能的。 需求:客户要求在项目中实现下拉快捷面板具备一键截屏功能 目前自己只针对Android12 mtk/RK平台实践过,接触的全志平台暂未实验验证。 文章目录 前言一、实际实现效果二、修改点1.新增文件2.修改文件三、基…

2024爱分析·AI Agent开发管理平台市场厂商评估报告:火山引擎

01研究范围定义 大模型浪潮席卷全球,AI Agent作为这股浪潮中的新星正在取代Copilot,成为大模型应用的主流形态之一,以其惊人的速度和影响力重塑科技和商业的版图。 AI Agent是指以大模型为驱动,具有自主理解感知、规划、记忆和使…

十九、中介者模式

文章目录 1 基本介绍2 案例2.1 Developer 抽象类2.2 FrontendDeveloper 类2.3 BackendDeveloper 类2.4 Mediator 接口2.5 ProjectManager 类2.6 Client 类2.7 Client 类的运行结果2.8 总结 3 各角色之间的关系3.1 角色3.1.1 Colleague ( 同事 )3.1.2 ConcreteColleague ( 具体的…

物理网卡MAC修改器v3.0-直接修改网卡内部硬件MAC地址,重装系统不变!

直接在操作系统里就能修改网卡硬件mac地址,刷新网卡mac序列号硬件码机器码,电脑主板集成网卡,pcie网卡,usb有线网卡,usb无线网卡,英特尔网卡,瑞昱网卡全支持! 一键修改mac&#xff0…