Datawhale X 魔搭 AI夏令营---AIGC Task3


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

Datawhale AI 夏令营(第四期)官网

Task3:进阶上分-实战优化


0.0 一些link

Task3打卡链接:
电脑端打开 https://linklearner.com/activity/14/10/37
学习手册:
https://datawhaler.feishu.cn/wiki/UM7awcAuQicI4ukd2qtccT51nug
其他学习链接:
在魔搭使用ComfyUI,玩转AIGC!
https://modelscope.cn/headlines/article/429
ComfyUI的官方地址
https://github.com/comfyanonymous/ComfyUI
ComfyUI官方示范
https://comfyanonymous.github.io/ComfyUI_examples/
别人的基础工作流示范
https://github.com/cubiq/ComfyUI_Workflows
https://github.com/wyrde/wyrde-comfyui-workflows
工作流分享网站
https://comfyworkflows.com/
推荐一个比较好的comfyui的github仓库网站
https://github.com/ZHO-ZHO-ZHO/ComfyUI-Workflows-ZHO?tab=readme-ov-file

0.1 任务内容

在这里插入图片描述

了解微调的基本原理,然后我们会对微调的各种参数有一个更加清楚的了解,来实现一个更好的效果,并且在这个Task中会给大家介绍一下文生图的工作流平台工具ComfyUI,来实现一个更加高度定制的文生图。

1.1 了解ComfyUI

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

核心模块:
模型加载器、提示词管理器、采样器、解码器。

模型加载器:Load Checkpoint用于加载基础的模型文件,包含了Model、CLIP、VAE三部分.
CLIP模块将文本类型的输入变为模型可以理解的latent space embedding作为模型的输入.
采样器:用于控制模型生成图像,不同的采样取值会影响最终输出图像的质量和多样性。采样器可以调节生成过程的速度和质量之间的平衡.
解码器:VAE模块的作用是将Latent space中的embedding解码为像素级别的图像.

图片生成流程:
在这里插入图片描述

1.2 安装ComfyUI

下载并安装 ComfyUI
下载模型
安装 LoRA 节点
启动 ComfyUI
在这里插入图片描述

1.3 LoRA

LoRA(Low-Rank Adaptation)是一种用于微调大型预训练模型的技术,尤其适用于自然语言处理(NLP)领域的大规模语言模型(LLMs)。它的主要目的是在保持模型原始能力的同时,通过引入少量的可训练参数来适应特定的任务或数据集,从而实现高效且资源节约的微调过程。

LoRA的关键技术要点
低秩矩阵: LoRA通过引入低秩矩阵的方式来模拟原本需要更新的权重矩阵的一部分,这样可以显著减少需要训练的参数数量。
参数高效: LoRA能够在不更新整个模型参数的情况下进行微调,只更新新增加的低秩矩阵,这极大地减少了计算成本和存储需求。
灵活适应: LoRA可以应用于各种大规模语言模型,如GPT或BERT,并且可以很容易地适应不同的任务或领域。
性能保持: 尽管LoRA降低了微调过程的复杂性,但它依然能够实现与全面微调相当或更好的性能。
随插随用: LoRA像一个可拆卸的插件一样,可以在原有模型基础上添加,训练完成后可以轻松地移除或替换,便于在不同的微调任务之间灵活切换。

示例: 使用LoRA微调一个语言模型

假设我们有一个已经预训练好的大型语言模型,例如GPT-3。我们的目标是让这个模型更好地理解和生成有关医学领域的文本。为了实现这一目标,我们可以按照以下步骤使用LoRA进行微调:

准备数据:首先,我们需要收集一定量的医学文献作为训练数据,这些数据应当包含我们想要模型学习和理解的具体医学术语和上下文。
引入LoRA模块:在预训练模型的基础上,我们会在每一层Transformer中加入LoRA模块。这些模块包含低秩矩阵A和B,它们将被用于修改原有层的输出。
微调模型:接下来,我们只训练LoRA模块中的参数,而预训练模型的原始权重保持不变。这意味着我们只需要微调一小部分参数,而不是整个模型。
评估性能:完成微调后,我们可以在医学文献相关的任务上评估模型的表现,比如命名实体识别(NER)、摘要生成等。

优点总结
节省资源:相比重新训练整个模型,LoRA需要的计算资源少得多。
保持泛化能力:由于大部分模型权重保持不变,模型仍然能很好地处理一般性的语言任务。
灵活扩展:可以通过叠加多个LoRA模块来适应不同的任务,而不必每次都从头开始训练。
性能竞争力:尽管LoRA降低了复杂性,但它仍能实现与全面微调相当或更好的性能。

1.4 不带Lora的ComfyUI工作流样例

ComfyUI中运行到哪里,哪里的框就会变绿。

提示词:
cinematic photograph of a robot riding a horse in space |
illustration of a robot wearing a top hat and a scarf |
photograph of a robot in a fish-bowl |
anime screencap of a red haired robot

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.5 不带Lora的ComfyUI工作流样例

lora地址:
/mnt/workspace/models/lightning_logs/version_0/checkpoints/epoch=0-step=500.ckpt
提示词:
二次元,机器人全身,红色头发,人类眼镜,在鱼缸中,珊瑚背景

在这里插入图片描述
在这里插入图片描述

2.1 Lora详解

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),这可以加速训练并减少显存使用
  • UNet:负责根据输入的噪声和文本条件生成图像。在Stable Diffusion模型中,UNet接收由VAE编码器产生的噪声和文本编码器转换的文本向量作为输入,并预测去噪后的噪声,从而生成与文本描述相符的图像
  • VAE:生成模型,用于将输入数据映射到潜在空间,并从中采样以生成新图像。在Stable Diffusion中,VAE编码器首先生成带有噪声的潜在表示,这些表示随后与文本条件一起输入到UNet中
  • 文本编码器:将文本输入转换为模型可以理解的向量表示。在Stable Diffusion模型中,文本编码器使用CLIP模型将文本提示转换为向量,这些向量与VAE生成的噪声一起输入到UNet中,指导图像的生成过程

在这里插入图片描述

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

  • 关注应用场景:确定你的模型将被应用到什么样的场景中(例如,艺术风格转换、产品图像生成、医疗影像合成等)。
  • 关注数据类型:你需要什么样的图片?比如是真实世界的照片还是合成图像?是黑白的还是彩色的?是高分辨率还是低分辨率?
  • 关注数据量:考虑你的任务应该需要多少图片来支持训练和验证。

公开的数据平台:

  • 魔搭社区:开放了近3000个数据集,涉及文本、图像、音频、视频和多模态等多种场景,左侧有标签栏帮助快速导览,大家可以看看有没有自己需要的数据集。
  • ImageNet:包含数百万张图片,广泛用于分类任务,也可以用于生成任务。
  • Open Images:由Google维护,包含数千万张带有标签的图片。
  • Flickr:特别是Flickr30kK和Flickr8K数据集,常用于图像描述任务。
  • CelebA:专注于人脸图像的数据集。
  • LSUN (Large-scale Scene Understanding):包含各种场景类别的大规模数据集。

使用API或爬虫获取
如果需要特定类型的内容,可以利用API从图库网站抓取图片,如Unsplash、Pexels等。

数据合成
利用现有的图形引擎(如Unity、Unreal Engine)或特定软件生成合成数据,这在训练某些类型的模型时非常有用。
最近Datawhale联合阿里云天池,做了一整套多模态大模型数据合成的学习。从零入门多模态大模型数据合成。https://datawhaler.feishu.cn/wiki/PVmkwDClQiKbmOk1e7scYo2Pndd?fromScene=spaceOverview

数据增强
对于较小的数据集,可以通过旋转、翻转、缩放、颜色变换等方式进行数据增强。

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

3.1 修改task01的lora微调参数

修改了lora_rank(模型的复杂度和性能)与lora_alpha(控制微调的强度)参数。
分别将lora_rank从16扩大为64;
lora_alpha从4.0扩大为8.0。

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 64
–lora_alpha 8.0
–dataset_path data/lora_dataset_processed
–output_path ./models
–max_epochs 5
–center_crop
–use_gradient_checkpointing
–precision “16-mixed”

在这里插入图片描述
在这里插入图片描述

和task01一样的提示词:

prompt=“二次元,未来感,一个红色的、身体是半机械半人类的机器人,站在繁华城市的十字路口,行人人山人海,他孤独地望着天空中穿梭的各种飞行器,手中捧着一簇蓝色玫瑰花”,
negative_prompt=“丑陋、色情、变形、嘈杂、模糊、低对比度”,

prompt=“水墨画,一个红色的、身体是半机械半人类的机器人,背影,坐在一片竹林中弹钢琴,四周被潜伏的武装无人机包围了,身上背着一把弓,钢琴旁边靠着一把武士刀”,
negative_prompt=“丑陋、色情、变形、嘈杂、模糊、低对比度”,

prompt=“卡通动画,迪士尼画风,一个红色的、身体是半机械半人类的机器人,在蓝色的大海中潜水,他身边围绕着各种美丽的珊瑚,他脚上的螺旋桨冒着气泡,身边还跟着几只可爱的小丑鱼,他的脸上露出了开心的笑容”,
negative_prompt=“丑陋、色情、变形、嘈杂、模糊、低对比度”,

prompt=“二次元,宫崎骏动画感,一个红色的、身体是半机械半人类的机器人,在一个天然的温泉池中泡澡,水面上漂浮着各种机器人小玩具,他闭上眼睛,脸上露出十分舒服的表情,水边还有几只水豚正在休息”,
negative_prompt=“丑陋、色情、变形、嘈杂、模糊、低对比度”,

结果:
//待输出

3.2 零代码文生图Lora模型训练

https://modelscope.cn/aigc/modelTraining

在这里插入图片描述

在这里插入图片描述
结果虽然很奇怪,但经过lora后,确实加上了“千寻”的脸庞,可以看出一丝丝神似,就是有点搞笑,hhhh~

3.3一些其他好玩的AIGC

魔搭:
https://www.modelscope.cn/aigc/home
https://www.modelscope.cn/topic/cf0de97eb6284e16812d7c54fbe29fe7/pub/summary
FLUX文生图模型体验空间:
https://www.modelscope.cn/studios/muse/flux_dev
可图文生图:
https://www.modelscope.cn/studios/AI-ModelScope/Kolors
Stable Diffusion XL 1.0:
https://www.modelscope.cn/studios/AI-ModelScope/Stable_Diffusion_XL_1.0
锦书 - 创新艺术字:
https://modelscope.cn/studios/WordArt/WordArt/summary
创意海报生成:
https://modelscope.cn/studios/iic/PosterGenius/summary

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值