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

news2024/12/28 20:57:57

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2046805.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows设置定时任务进行oracle数据库备份

先找到“定时任务计划” 方法1.开始->所有程序->附件->系统工具->定时任务计划 方法2:控制面板->输入计划 进行查询操作 名称随便定,点击下一步 下一步 设置每天的定时执行时间,点下一步 点下一步选择启动程序,点下一步 点…

Bruno API 工具

Bruno 是Postman 和Insomnia 的开源桌面替代品,用于 API 的测试、开发和调试。它将测试集合保存在本地,因此可以使用 Git 或其他版本控制工具来进行协作。 下载地址: https://www.usebruno.com/downloads 功能 1. 左边菜单 Collections Create Collec…

Unity 资源 之 功夫动画包(Kung-Fu animations),极致动作体验

震撼来袭!Unity 功夫动画包,极致动作体验 一、前言二,资源包内容三、免费获取资源包 一、前言 这个动画包简直让人惊叹不已,它包含了多达 140 多种不同的动画!想象一下,如此丰富的选择,几乎涵盖…

ChatGLM-4-9b-chat本地化|天翼云GPU上vLLM本地部署开源模型完整攻略

“ 拥有一个私有化的领先国产开源大模型?本文详细介绍了如何在天翼云GPU上使用vLLM部署ChatGLM-4-9b-chat本地化模型的完整攻略,助您快速上手。” 01 — vLLM 本来打算用ollama在GPU服务器上部署开源模型GLM4,在之前文章有部署教程&#xff1…

中央空调能量型计费系统,实现节能降耗

中央空调能量型计费系统是一种先进的计费方式,旨在通过科学、合理、公平地分摊中央空调使用费用,促进能源的有效利用和节能降耗。上海智能医疗创新示范基地使用的空调系统正是中央空调能量型计费系统 项目:上海智能医疗创新示范基地 项目情况…

【通信理论知识】数据传送的方式:串/并行;传输方向:单工、半/全双工;传输方式:同步/异步

通信协议与接口知识参考文章: 【通信理论知识】数据传送的方式:串/并行;传输方向:单工、半/全双工;传输方式:同步/异步 【串口通信详解】USART/UART、RS232、RS485标准接口与协议特点解析 【同步串行通信接…

【DGL系列】详细分析DGL中dgl.NID和orig_id的区别

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 目录 背景知识 深入分析 初步结论 代码验证 实验设计 结果分析 最终结论 扩展思考 本文将详细分析orig_id和dgl.NID的区别。 背景知识 在做子图…

《Redis核心技术与实战》学习笔记4——AOF日志:宕机了,Redis如何避免数据丢失?

文章目录 AOF 日志是如何实现的?三种写回策略 日志文件太大了怎么办?AOF 重写会阻塞吗?小结 大家好,我是大白。 如果有人问你:“你会把 Redis 用在什么业务场景下?”我想你大概率会说:“我会把它当作缓存使…

【Kubernetes】k8s集群之包管理器Helm

目录 一.Helm概述 1.Helm的简介 2.Helm的三个重要概念 3.Helm2与Helm3的的区别 二.Helm 部署 1.安装 helm 2.使用 helm 安装 Chart 3.Helm 自定义模板 4.Helm 仓库 每个成功的软件平台都有一个优秀的打包系统,比如Debian、Ubuntu 的 apt,RedH…

医疗器械5G智能制造工厂物联数字孪生平台,推进制造业数字化转型

在当今这个日新月异的数字时代,医疗器械行业正经历着前所未有的变革与升级。随着5G技术的迅猛发展和智能制造的深入应用,医疗器械5G智能制造工厂物联数字孪生平台应运而生,它不仅为传统制造业注入了新的活力,更以其独特的优势引领…

C++图像识别、图像识别接口、ocr api

如果您在找工作并且在找内容审核编辑的工作,那么不难发现,快手在全国多个招聘网站发布了关于“内容审核编辑”岗位的招聘信息,据悉,此次的“内容审核编辑”岗位招聘的规模达3000人。因为快手上面“低龄妈妈”内容的炒作&#xff0…

Linux 与 Windows 服务器操作系统 | 全面对比

在服务器操作系统的领域,Linux 和 Windows 一直是两个备受关注的选择。 首先来看 Windows 操作系统。它由 Microsoft Corporation 开发,在桌面领域占据显著份额,其中 Windows 10 是使用最广泛的版本,广泛应用于个人计算机和企业桌…

8月16日笔记

只有DNS协议出网场景 DNS 协议是一种请求、应答协议,也是一种可用于应用层的隧道技术。DNS 隧道的工作原理很简单,在进行 DNS 查询时,如果查询的域名不在 DNS 服务器本机缓存中,就会访问互联网进行查询,然后返回结果。…

ELK整合实战,filebeat和logstash采集SpringBoot项目日志发送至ES

文章目录 ELK整合实战使用FileBeats将日志发送到Logstash配置Logstash接收FileBeat收集的数据并打印Logstash输出数据到Elasticsearch利用Logstash过滤器解析日志Grok插件Grok语法用法 输出到Elasticsearch指定索引 前文:FileBeats详解 前文:logstash详解…

pdf翻译软件哪个好用?多语言轻松转

想知道怎么用pdf翻译器在线翻译吗?无需复杂操作,一键即可解锁语言障碍。 在这个全球化日益加深的时代,掌握pdf文件的快速翻译技巧尤为重要。 无论是学习、工作还是国际交流,以下4个免费pdf翻译技巧都将是你不可或缺的得力助手。…

Apollo9.0 PNC源码学习之Planning模块—— Lattice规划(一):笛卡尔和Frenet坐标系

参考文章:Frenet坐标系 or Cartesian坐标系? 1 Lattice规划算法框架结构 2 Frenet坐标系 // 跟据匹配点,计算Frenet坐标系的S-L值// 3. according to the matched point, comp

十九、中介者模式

文章目录 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 ( 具体的…

RabbitMQ-消息队列-centos7

一、RabbitMQ安装 1、通过官网下 官网网址:https://www.rabbitmq.com 首先下载erlang-23.3.4.11-1.el7.x86_64.rpm,其次下载rabbitmq-server-3.10.0-1.el7.noarch.rpm 注意:RabbitMQ是由erlang开发的,所以必须先安装erlang版本…

Pytorch1: Anaconda下载,安装,配置

Anaconda手册 一,Anconada1,Anconada简介 二、下载、安装、配置环境变量1,安装 三、anaconda创建多版本python环境四、anaconda 安装 pytorch五、Jupyter Notebook 一,Anconada 1,Anconada简介 Anaconda就是一个用于…

【多线程】JUC的常见类,Callable接口,ReentranLock,Semaphore,CountDownLatch

JUC:java.util.concurrent 一、Callable 接⼝ 接口方法Callablecall,带有返回值Runnablerun,void所以创建一个线程,希望它给你返回一个结果,那么使用 Callable 更加方便一些 比如,创建一个线程&#xff…