活动来源:Datawhale (linklearner.com)
本笔记将简要介绍我所学的知识点以及心得。
1.初识ComfyUI
1.1ComfyUI
GUI的一种,是基于节点工作的用户界面,主要用于操作图像的生成技术,ComfyUI 的特别之处在于它采用了一种模块化的设计,把图像生成的过程分解成了许多小的步骤,每个步骤都是一个节点。这些节点可以连接起来形成一个工作流程,这样用户就可以根据需要定制自己的图像生成过程。
核心模块由模型加载器、提示词管理器、采样器、解码器。
Stable Diffusion的基本原理是通过降噪的方式(如完全的噪声图像),将一个原本的噪声信号变为无噪声的信号(如人可以理解的图像)。其中的降噪过程涉及到多次的采样。
1.2 ComfyUI的流程
Step1:选择模型
从可用的 AI 模型列表中选择合适的模型,例如 Stable Diffusion 或其他文本到图像模型。
Step2:构建工作流
在 ComfyUI 的图形界面上拖拽节点,并将它们连接起来以形成一个完整的图像生成或编辑流程。
输入必要的参数,如文本提示、图像文件等。
Step3:执行生成
运行构建好的工作流,观察生成的结果。
Step4:调整与优化
如果需要,可以根据生成的结果调整参数或修改工作流,直至获得满意的效果。
1.3 优势
模块化和灵活性、可视化界面、多模型支持、调试和优化、开放和可扩展、用户友好性……
2.安装
原官方教程中有更加详细的步骤。我的体验是:在魔搭社区提供的Notebook和免费的GPU算力支持下十分便捷。
下载脚本代码文件,再进入ComfyUI的安装文件进行安装后,即可进入预览界面。
3.工作流尝试
通过下载工作流的脚本,再加载到刚刚安装的comfyUI上后,就可以加载出模型,完成图片的生成啦!可以通过不同的脚本,选择是否带Lora的工作流。
Lora微调
1.Lora简介
LoRA (Low-Rank Adaptation) 微调是一种用于在预训练模型上进行高效微调的技术。它可以通过高效且灵活的方式实现模型的个性化调整,使其能够适应特定的任务或领域,同时保持良好的泛化能力和较低的资源消耗。
2.Lora详解
LoRA通过在预训练模型的关键层中添加低秩矩阵来实现。这些低秩矩阵通常被设计成具有较低维度的参数空间,这样它们就可以在不改变模型整体结构的情况下进行微调。在训练过程中,只有这些新增的低秩矩阵被更新,而原始模型的大部分权重保持不变。
Lora微调的优势:快速适应新任务;保持泛化能力;资源效率。
微调代码:
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训练
最终生成结果:
4.如何准备高质量的数据集
1.明确数据集需求和目标
关注应用场景:明确你的模型要被应用到什么样的场景当中
关注数据类型:你需要什么样的图片?是写实的还是二次元的?等等
关注数据量:考虑你的任务大概需要多少图片来进行训练和验证
2.数据集的多种不同来源
数据集可以通过多种渠道进行获取,例如:
1.从公开的数据平台获取;
2.使用API或爬虫获取;
3.进行数据合成;
4.进行数据增强;
5.进行购买或者定制;
我们在选取不同渠道时还要考虑其合规性,需要谨慎选取
5.学习总结
得知这次夏令营是刷帖子的偶然,本以为只是一些现有的AI生成图片的应用使用教程,没有想到竟然从文生图的历史开始,再到底层的搭建部署,十分认真详细的给我们在短时间内进行了梳理和实践,感谢每一位夏令营的工作人员,感谢你们提供的教程和资源!通过三个task的学习,我对于AI生图又有了更深的体会,初步上手了ComfyUI,学习了什么是LoRA微调方法,利用该方法能够使我们的模型拥有更好的泛化能力和运行效率,即使在标注数据不多的情况下模型也能够较好的生成图片。
通过本次夏令营活动我有很大收获,但也明白这仅仅是大模型应用的“冰山一角”,前方还有更多的技术等待着我们去学习和运用,因此自己还有很多的不足,希望在今后能够继续在Datawhale和魔塔提供的丰富,优质的资源下努力学习和进步。