Datawhale X 魔搭 AI夏令营 第四期AIGC_task03笔记
工具初探一ComfyUI认识ComfyUI
ComfyUI 是"Graphical User Interface"(图形用户界面)的缩写,简单来说,GUI 就是你在电脑屏幕上看到的那种有图标、按钮和菜单的交互方式。ComfyUI 是GUI的一种,是一个用于构建和运行稳定扩散(Stable Diffusion)模子的图形用户界面工具。它允许用户通过直观的界面来创建模子处理流程,而无需编写复杂的代码。ComfyUI 支持多种差别的模子和算法,而且可以通过节点编辑的方式轻松地组合差别的模子组件以实现图像生成、修改和其他创意任务。
ComfyUI基础逻辑
对于ComfyUI的逻辑可以理解成由小往大的过程,即从基础的元素,到由元素组成的模块,到由模块组成的功能组,再到由功能组组成针对性的工作流。
ComfyUI核心模块
核心模块由模子加载器、提示词管理器、采样器、解码器。
https://i-blog.csdnimg.cn/direct/5e7a76996bb54280854c093c43c3a977.png
模子加载器:Load Checkpoint用于加载基础的模子文件,
包含了Model、CLIP、VAE三部分
https://i-blog.csdnimg.cn/direct/633f105ca11d49d8970d37134328214a.png
CLIP模块将文本类型的输入变为模子可以理解的latent space embedding作为模子的输入
https://i-blog.csdnimg.cn/direct/e538fab29f7d4a64b9334b8c10ee5616.png解码器:VAE模块的作用是将Latent space中的embedding解码为像素级别的图像
https://i-blog.csdnimg.cn/direct/dfcf2ee6fe6f4b8a9becbfb1e80f4589.png采样器:用于控制模子生成图像,差别的采样取值会影响终极输出图像的质量和多样性。采样器可以调节生成过程的速度和质量之间的平衡。
Stable Diffusion的基本原理是通过降噪的方式(如完全的噪声图像),将一个原来的噪声信号变为无噪声的信号(如人可以理解的图像)。此中的降噪过程涉及到多次的采样。采样的系数在KSampler中配置:
[*] seed:控制噪声产生的随机种子
[*] control_after_generate:控制seed在每次生成后的变化
[*] steps:降噪的迭代步数,越多则信号越精准,相对的生成时间也越长
[*] cfg:classifier free guidance决定了prompt对于终极生成图像的影响有多大。更高的值代表更多地展现prompt中的描述。
[*] denoise: 多少内容会被噪声覆盖 sampler_name、scheduler:降噪参数。
对于基础模块或深入分析ComfyUI可以参考(图引用自【1 万字体系分析ComfyUI | Stable Diffusion:GUI全盘货 | ComfyUI体系性教程原理篇04 | Ai+建筑】)https://i-blog.csdnimg.cn/direct/12a413a1b5e647b69f9013d4a2741f24.png
ComfyUI生成流程
[*] 选择模子:
[*]在 ComfyUI 中,你需要选择一个预练习的模子来执行图像生成任务。
[*]模子可以是 Stable Diffusion 或其他类型的图像生成模子。
[*]你可以从 ComfyUI 的模子管理器中加载模子,或者直接在工作流中选择。
[*] 构建工作流:
[*]在 ComfyUI 的主界面上,你会看到一个空白画布,可以在这里通过拖放的方式添加节点。
[*]你需要构建一个包含输入、处理和输出节点的工作流。
[*] 添加输入节点:
[*]Initial Image 节点用于指定一个初始图像作为输入。
[*]假如不需要初始图像,可以直接使用文本提示作为输入。
[*] 添加模子节点:
[*]VAE Decode、VAE Encode、SD Sampler 等节点用于执行模子的前向传播。
[*]你可以根据需要选择差别的采样方法(如 PNDM、DDIM 等)。
[*] 设置条件节点:
[*]Conditioning 节点用于设置正面提示(Positive Prompt)和负面提示(Negative Prompt)。
[*]这些提示会影响图像生成的内容。
[*] 毗连节点:
[*]使用鼠标拖拽连线将各个节点毗连起来,形成一个完备的处理链。
[*]比方,你可以将 Initial Image 毗连到 Conditioning,然后毗连到 SD Sampler,最后毗连到 VAE Decode。
[*] 调解参数:
[*]在每个节点上,你可以调解差别的参数,好比采样步骤、引导词、图像尺寸等。
[*]参数的选择会直接影响到生成图像的质量和内容。
[*] 运行工作流:
[*]一旦完成工作流的构建,点击运行按钮来执行整个过程。
[*]ComfyUI 会按照你设定的顺序处理节点,并终极生成新的图像。
[*] 检察和生存效果:
[*]成功生成的图像会显示在输出节点或预览地域。
[*]你可以生存这些图像到本地文件体系。
[*] 调解和迭代:
[*]根据生成效果,你大概需要调解参数或更改工作流来得到更好的效果。
[*]重复上述过程直到得到满意的效果。
ComfyUI上风
主要特点:
[*]图形化界面:用户可以通过拖拽节点的方式来构建模子流程。
[*]机动性:支持多种差别的模子和算法,用户可以根据需要自由组合这些组件。
[*]可扩展性:用户可以添加自界说的节点和功能,使得工具可以或许适应更广泛的应用场景。
[*]社区支持:ComfyUI 拥有一个活泼的开发者和用户社区,不断有新的功能和改进被贡献进来。
使用场景:
[*]图像生成:使用稳定扩散模子生成新的图像。
[*]图像修改:基于现有图像进行修改或变更。
[*]实验平台:研究人员可以使用 ComfyUI 快速测试和比力差别模子的效果。
ComfyUI安装
Lora
前言:对于模子微调,本质上就是对于模子各个数据的调节。而一个模子往往伴随着大量的数据,对于这些大量数据的处理是贫困的,所以引出了高效微调PEFT (Prompt-Encoder for Fine-Tuning)下,最常见的Lora。
Lora简介
LoRA (Low-Rank Adaptation) 是一种轻量级的微调技术,特殊适用于像Stable Diffusion如许的大型预练习模子。LoRA 的核心思想是在不改变原有模子权重的情况下,通过引入额外的低秩矩阵来实现对模子的有效调解。这种方法可以显著镌汰所需的练习资源和时间,而且通常只需要少量的数据就能达到不错的效果。
Lora 微调上风
[*]快速适应新任务
在特定领域有少量标注数据的情况下,也可以有效地对模子进行个性化调解,可以敏捷适应新的领域或特定任务。
[*]保持泛化本领
LoRA通过微调模子的一部分,有助于保持模子在未见过的数据上的泛化本领,同时还能学习到特定任务的知识。
[*]资源效率
LoRA旨在通过仅微调模子的部分权重,而不是整个模子,从而镌汰所需的盘算资源和存储空间。
Lora 代码举例
task02的微调代码
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训练 代码中界说的主要 LoRA 参数及其含义:
[*] --lora_rank 16: 这个参数指定了 LoRA 的秩 (r),即低秩矩阵的大小。秩越大,模子的表达本领越强,但同时也意味着更多的参数和更长的练习时间。
[*] --lora_alpha 4.0: 这个参数控制 LoRA 更新的缩放因子 (lora_alpha),影响 LoRA 调解的强度。较小的 lora_alpha 会导致较弱的更新,而较大的值则会导致更强的更新。
除了 LoRA 特有的参数之外,还有一些其他的配置选项:
[*]--pretrained_unet_path: 指定了预练习的 U-Net 模子的路径。
[*]--pretrained_text_encoder_path: 指定了预练习的文本编码器的路径。
[*]--pretrained_fp16_vae_path: 指定了预练习的 VAE(变分自动编码器)模子的路径,这里使用 FP16(半精度浮点数)格式。
[*]--dataset_path: 指定了练习数据集的路径。
[*]--output_path: 指定了练习完成后模子生存的目录。
[*]--max_epochs: 指定了最大练习轮数。
[*]--center_crop: 启用了中心裁剪功能,这是对输入图像进行预处理的一种方式。
[*]--use_gradient_checkpointing: 启用了梯度检查点技术,这是一种内存优化技巧,可以镌汰模子练习所需的显存。
[*]--precision "16-mixed": 指定了练习时使用的精度模式,这里是混合精度练习(16-mixed),这有助于加速练习并镌汰显存使用。
数据集的获取
来源类型
推荐
公开的数据平台
魔搭社区内开放了近3000个数据集,涉及文本、图像、音频、视频和多模态等多种场景,左侧有标签栏资助快速导览,大家可以看看有没有自己需要的数据集。
https://img-blog.csdnimg.cn/8d7c02f0c9374a9faffbb5eb758ede18.png
其他数据平台推荐:
[*] ImageNet:包含数百万张图片,广泛用于分类任务,也可以用于生成任务。
[*] Open Images:由Google维护,包含数千万张带有标签的图片。
[*] Flickr:特殊是Flickr30kK和Flickr8K数据集,常用于图像描述任务。
[*] CelebA:专注于人脸图像的数据集。
[*] LSUN (Large-scale Scene Understanding):包含各种场景种别的大规模数据集。
使用API或爬虫获取
[*] 假如需要特定类型的内容,可以使用API从图库网站抓取图片,如Unsplash、Pexels等。
[*] 使用网络爬虫技术从互联网上抓取图片,但需要注意版权问题。
数据合成
使用现有的图形引擎(如Unity、Unreal Engine)或特定软件生成合成数据,这在练习某些类型的模子时非常有效。
近来Datawhale联合阿里云天池,做了一整套多模态大模子数据合成的学习,欢迎大家一起交流。从零入门多模态大模子数据合成
数据增强
对于较小的数据集,可以通过旋转、翻转、缩放、颜色变更等方式进行数据增强。
购买或定制
假如你的应用是特定领域的,好比医学影像、卫星图像等,发起从靠谱的渠道购买一些数据集。
如何准备高质量的数据集
[*] 明确你的需求和目的
[*] 关注应用场景:确定你的模子将被应用到什么样的场景中(比方,艺术风格转换、产物图像生成、医疗影像合成等)。
[*] 关注数据类型:你需要什么样的图片?好比是真实天下的照片还是合成图像?是好坏的还是彩色的?是高分辨率还是低分辨率?
[*] 关注数据量:考虑你的任务应该需要多少图片来支持练习和验证。
最后来一张上课睡觉梦到前十姻缘,然后梦醒被罚站的故事。
https://img-blog.csdnimg.cn/b9cc5c92fb29475daf5c08fbf222ebd6.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]