ComfyUI
GUI全盘点
GUI 分为主流和其他两大类分别是主流和其他
先从其他来看,首先是stability ai官方推出的几种GUI分为在线和开源两类,然后就是另外一些第三方推出的GUI,同样也分为开源和在线两种。
首先来看官方推出的三个:
Clip drop:目前提供文字去除,背景去除与替换,放大,重新打光,物体清除,草图生成,图像变体与扩展以及新模型SDXL生成等10多项功能,无需注册账户免费可用,当然也提供了付费的订阅计划
Dream Studio:官方提供算力支持的积分付费平台,每个新账户赠送25积分,积分价格是1000积分10美刀,比订阅制友好一些,对于具体使用来说,XL系列模型比较贵,30步左右的一张图约1.6积分而2.0或2.1模型则只需要0.2个积分,下图是实测效果 ,界面友好,还提供了画布编辑功能,方便局部填充或扩展绘图
Stable Studio:
是Dream Studio的开源版,操作界面与Dream Studio相同,区别仅在于stable使用本地算力,方便离线使用。
Stable Swarm:
操作界面等与Dream Studio相似,区别是Stable Swarm是以comfyUI为后端的前端界面,融合了comfyUI的强大,webUI的舒适以及Stable Studio的质量,当然这些优点只是宣传词,实际测试下来效果并不尽如人意,希望未来有更多的改进
第三方开源GUI
Invoke AI
目前更新版本已经全面支持了SDXL新模型,也推出了类似于ComfyUI的节点式工作流界面,加上本身提供的画布功能,对于重绘和扩展来说也十分方便
SD.Next
由WebUI延申而来,优点是支持除了SD之外的Kandinsky、DeeoFloyd IF、UniDiffusion、SD-Distilled等多种扩散模型,也适用各种运行环境,界面简洁友好
Volta ML
安装简单,界面简洁干净,非常适合新手上手
在线项目
SD Online
界面与WebUI类似,还提供了controlnet,提示词生成器以及提示词语库等众多功能,无需账户免费使用,非常适合新手小白体验
Huggingn Face
这是一个大模型的综合平台,有很多大神部署了各种系列的模型,免费可用,方便体验,唯一缺点就是排队时间长
Cat bird AI
上线之初,以一个提示词同时生成几十种模型的不同结果为特色,后面扩展到100多种,不过目前也改为了限量免费的积分结算模式,注册账户在线使用,移动端可用
Platground AI
限量免费的在线平台,每天有1000张的免费额度,同时也提供付费订阅的方式,感兴趣的小伙伴可以试玩一下
三大主流GUI
第一种是使用范围最广的以窗口式为特征的Web UI
第二种是节点式工作流为特征并且方便作为后端使用的Comfy UI
第三种就是只需关注提示词无需在乎各种复杂参数就可以获得极高质量生成效果的Fooocus,其特点也就是Prompt Only
Comfy UI 精讲
1.不仅可以作为一个图形界面进行使用,还可以作为一种强大的后端来使用,还可以作为插件加入到其他的GUI之中,ComfyUI除了作者所提到的更接近SD的原理外,更像是一个通用的可视化代码平台,各种好用的工具都可以通过统一的形式加入到这个平台,例如翻译,排版,自动抠图等与SD无关的功能,甚至借助一些特殊节点还可以当作PPT来使用,可以制作SDXL论文讲解视频所用的方法。
2.另外还可以作为一个接入其他API的平台,在comfyUI中使用 Chat GPT等各种大型语言模型,如有需要可以自己编写有趣的模块或节点,以此满足特殊或定制化的需求,对本体来说,就是最基础的节点连线组成工作流的方式,原理就是搭积木,根据不同的需求搭建特殊的工作流,这对于长线的工作来说十分重要,也方便不同内容的对接,另外对于工作流的分享也十分方便,只需要生成的原图或保存的json文件即可
3.Comfy UI的速度也是有目共睹的快,同时对硬件要求也很低,没有GPU也可以通过CPU运行,方便更多的使用者
4.作为插件使用
一种是做作为WebUI的插件,方便习惯使用WebUI的小伙伴使用,另一种就是在blender中的插件,项目的名字叫无限圣杯,想要了解朋友可以去自己探索一下,发明的大佬还专门提供了方便的启动器和整合包
5.作为后端使用
Comfy Box:该项目是个非常不错的开源项目Comfy Box,页面方便易懂,可以查看和编辑后端的comfyUI工作流,也可以自定义参数的位置,方便大家灵活调整
Fooocus:除了以comfyUI作为底层之外,还针对界面和模型做了简化和优化,使用SDXL模型作为驱动,只需要非常简单的提示词就可以获得高质量的生成效果,十分适合海报或者相关美术从业者,只需要使用而不需要做广泛研究,但是,不能加入CN等工具,加入的话就趋近于WebUI了,核心在于简化逻辑,不过有很多衍生版
WebUI:WebUI与SD发布不久之后就诞生了,由于其开源好用,插件丰富的特点一直占据主流,大家使用SD大多数都是从WebUI开始的,所以有很多研究者将SD等同了WebUI,但是这是不对的
如果仅需要使用提示词生成图像,使用基础版的fooocus即可,如果基础版的fooocus太过简单需要使用cn等工具,可以尝试MRE版本,如果需要强扩展性就选择webUI, 如果需要长线,定制化,自动化的专业使用,可以使用Comfy UI,如果既想要Comfy UI的灵活性,又想要图文框式的操作界面,就可以选择以comfyUI作为后端的几种前端界面如comfybox或stableswarmUI等。
实战体验Comfy UI
启动魔搭社区GPU环境,删除所有文件,使用git命令进行Comfy UI文件下载
运行并等待ComfyUI启动,导入模型文件
点击
随后即可生成示例图片,到这一步,我们的操作就已经成功了下面我们尝试不同的json文件,观察效果,可以看到,不同的模型对生成图片的好坏有着重要影响,我们接下来可以调试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训练
将上述代码进行改进
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 32 \
--lora_alpha 8.0 \
--dataset_path data/lora_dataset_processed \
--output_path ./models \
--max_epochs 10 \
--learning_rate 5e-5 \
--batch_size 16 \
--center_crop \
--use_gradient_checkpointing \
--precision "16-mixed" \
--early_stopping_patience 3 \
--logging_dir ./logs \
--save_best_model
""".strip()
# 执行命令
os.system(cmd)
新增和修改的内容:
- lora_rank 和 lora_alpha:将
lora_rank
增加到 32,并将lora_alpha
增加到 8.0,以探索更大的模型容量。 - max_epochs:将最大训练轮数增加到 10,使模型有更多的时间学习。
- learning_rate:设置了一个适中的学习率(
5e-5
),可以根据实际效果进一步调整。 - batch_size:增加了批量大小(
batch_size 16
),这有助于更快的训练和更稳定的梯度估计。 - early_stopping_patience:引入了早停机制,设置
early_stopping_patience 3
,如果验证性能在 3 个 epoch 内没有提升,将停止训练。 - logging_dir:添加日志记录目录
./logs
,方便在训练过程中监控模型性能。 - save_best_model:保存表现最好的模型,以防止过拟合。
这些调整有助于提升训练的效率和效果。如果你需要进一步的优化,可以根据训练结果继续微调参数。
最终得到了新的二次元风格的示例图片,更加的精致
当然这只是示例,大家可以多尝试其他风格的数据集,生成更加精致的图片