-
ComfyUI
ComfyUI的安装
1. 从魔搭社区进入https://www.modelscope.cn/my/mynotebook/preset
使用GPU环境
2. 进入Jupyter Notebook,打开terminal
3.输入代码下载安装的执行文件
git lfs install
git clone https://www.modelscope.cn/datasets/maochase/kolors_test_comfyui.git
mv kolors_test_comfyui/* ./
rm -rf kolors_test_comfyui/
mkdir -p /mnt/workspace/models/lightning_logs/version_0/checkpoints/
mv epoch=0-step=500.ckpt /mnt/workspace/models/lightning_logs/version_0/checkpoints/
4. 打开文件ComfyUI.ipynb
5. 运行(等待15分钟左右),当执行到最后一个节点的内容输出了一个访问的链接的时候,复制链接到浏览器中访问
ComfyUI 介绍
ComfyUI 是GUI(图形用户界面)的一种,是基于节点工作的用户界面,主要用于操作图像的生成技术。
把图像生成的过程分解成了许多小的步骤,每个步骤都是一个节点。这些节点可以连接起来形成一个工作流程,这样用户就可以根据需要定制自己的图像生成过程。
作者的详细说明书https://blenderneko.github.io/ComfyUI-docshttps://blenderneko.github.io/ComfyUI-docs
这里!是对这个视频的文字整理,原视频很清晰
和其他UI的比较
官方GUI介绍
-
ClipDrop平台
- 功能:文字去除、背景去除与替换、放大重新打光等
- 特点:无需注册,免费使用,提供付费订阅
-
Dream Studio
- 特点:积分付费制,界面友好,提供画布编辑功能
- 费用:每个新账户赠送25积分,1000积分10美元
-
Stable Studio
- 关系:Dream Studio的开源版本
- 特点:使用本地算力,方便离线使用
-
Stable Swarm UI
- 特点:以ComfyUI为后端
- 评价:界面与Dream Studio相似,但实测不尽如人意
第三方开源GUI
-
Invoke AI
- 版本:3.1
- 特点:全面支持新模型,提供节点工作流界面
-
SD Next
- 特点:支持多种扩散模型,界面简洁友好
-
Volta ML Fast Stable Diffusion
- 特点:安装简单,界面干净,适合新手
在线项目介绍
-
Stable Diffusion Online
- 特点:在线免费,提供WebUI界面和ControlNet等
-
Hugging Face
- 特点:综合平台,多模型免费使用,排队时间较长
-
Catbird
- 特点:最初以多模型结果为特色,后改为积分结算模式
-
PlayGround.ai
- 特点:限量免费,每天1000张免费额度,提供付费订阅
主流GUI详解
-
WebUI
- 特点:使用范围最广,窗口式操作,插件丰富
-
ComfyUI
- 特点:节点式工作流,可用作后端,支持自定义工作流和插件
- 使用方式:可作为插件加入其他GUI,也可作为PPT使用
-
Focus
- 特点:Prompt Only,简化操作,只需提示词即可获得高质量图像
- 硬件要求:低,4GB内存即可
ComfyUI的深入分析
- 灵活性:ComfyUI可以作为后端,支持多种工具和自定义模块
- 速度与硬件要求:速度快,即使没有GPU也可通过CPU运行
- 插件与后端使用:
- 作为WebUI和Blender的插件
- 作为后端的项目,如ComfyBox和SwarmUI
用户选择建议
- 根据需求选择GUI:
- 简单高质量图像:Focus
- 需要工具和图文框操作:WebUI或MRI版本的Focus
- 专业使用,需要定制化和自动化:ComfyUI
- 结合灵活性和操作界面:ComfyUI作为后端的前端界
原理
就像搭积木,通过五个层级及元素到组件,再到构造和结构,最后实现了特定功能,将原本零散的方形、圆形和三角形组合成了一件非常炫酷的飞行器。而ComfyUI则正是基于相同的逻辑。
不过,实际项目我们往往是从某一特定的目标出发逐步将目标分解成具体的工作流、功能组以及最终的模组和基础模块。
现在拆解一下:
首先是模块,也可以叫做节点,英文称为Nodes。这目前显示的这一部分就是作者提供的核心部分,涵盖了最常用的功能比如有各种加载器,各种条件输入、和前空间操作等七大组。每组织中针对不同需求又分别有不同的模块。
然后就是丰富多样的克制模组自定义节点组。一些最常用的模组包括几种大套装如 WAS 和 Impact 等,也有一些特殊功能的节点如 Noise 可生成多种随机噪声图
然后就是功能组!
- 两大提示词,输入文本提示词由 Clip 模型加正负提示词输入组成;
图像提示词由图像编码器介入条件编码器模型以及图像组成;
这两种功能组最终都将以条件作为输出。
2. 初始噪声Noise,有三种模式。第一种就是最常用到的前空间噪声,也就是平时看到的Ampute Latentimate模块。另外就是像素噪声图,可以通过如刚才提到的Noise第三方模组生成,然后经过VAE编码器进入前空间,还有就是将图像经过VAE编码进入前空间的方式,也就是平时所说的图生图的方式。
ControlNet,CN则是通过一个处理器接入CN模型,以及经过预处理的特定图像,通过选择与CN模型相匹配的预处理器完成控制。最终以条件作为输出
Gleggen模型文本加框模式,用于控制文本在图像中的显示位置和大小。
输入:
Clip模型:用于文本特征提取。
Gleggen模型:用于文本定位和框定。
条件:作为处理的依据。
输出: 处理后的条件,用于控制物体坐标和大小。
Sample采样器
输入:
主模型:基础模型+正负条件:用于指导采样过程+前空间噪声图:提供初始噪声状态。
输出: 前空间,作为进一步处理的基础。
- 输出和放大
- 输出:接受前空间和VAE模型输入。通过VAE处理器生成最终图像。图像可通过保存模块或预览模块展示。
工作流
条件和三种噪声+原始图像输入模型,然后VAE解码
(粉色采样器,白色结果,蓝色图像,红色VAE)
Clip 模型和 VAE 模型分离出来之后就变成了模型输入到处理器的模式比如文本变成接受 Clip 模型作为输入以给定的提示词为基础完成编码进入采样器VAE模型变成VAE模型加载和处理,处理又分为编码(进入前空间)和解码(返回像素空间)。
工作区布局
- 按钮区:通常位于界面右侧或主菜单上方,包含:
- 排队数和设置按钮
- 生成相关按钮:生成、排队、设定批次、插队、查看队列、查看生成历史
- 工作流相关按钮:包括保存、加载、刷新、剪贴板、清除和加载默认工作流。
- 第三方按钮:作者提供的参考网站按钮和模型或模块管理器按钮。
快捷键列表
运行文件
Load载入文件地址,Queue Prompt开始运行!
Lora微调,
prompt是二次元,长发,少女,白色背景
屯一下其他资源网站:
在魔搭使用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 |
Lora微调
模型的微调是为了提升模型在特定方面的能力,通过训练方法对模型进行更新。全量微调和lower微调是常见的微调技术。微调本质上是对模型的一种改动,但这种改动应尽量有限,以避免过多改变原有模型的能力,特别是避免“模型能力的遗忘”。微调的目标是在放大模型部分能力的同时,保留大模型的其他能力。
本质上,模型参数的改动涉及从原有参数转变为新参数,大型模型可能包含数十亿甚至数千亿的参数,这些参数可以理解为数字的集合,通常以行列形式组织。微调模型涉及学习这些参数,全量微调需要学习所有参数,复杂度高。然而,这些参数可能包含冗余信息,实际传达的信息有限,因此可以通过识别和利用关键参数来简化学习过程。
简要总结: 通过微调方法,训练过程实质上是将参数从原有状态改造为新状态,例如将0.1变为0.2,0.2变为0.1。这种改变可以视为对原参数加上一个偏移量,从而得到新参数。微调学习的核心在于掌握这些参数的改动量。
Lora是一种高效的微调方法,核心思想是通过学习少量参数(如400个)来达到传统全量微调的效果。具体来说,LAURA通过调整参数K(称为rank)来控制学习参数的数量,K越小,所需参数越少,从而大幅降低显存空间和学习成本。
冗余信息在3×3参数矩阵中,实际有价值的可能仅限于第一和第三行。核心思想在于不必单独学习每个参数,而是通过高效方式学习参数形态。我们定义矩阵为包含行和列的结构,假设学习矩阵为W,尽管W参数众多,但价值有限。利用线性代数性质,可将矩阵近似为两个矩阵的乘积,例如3×3矩阵可拆解为两个矩阵的乘积,而在大模型中,如100×100矩阵,也可通过类似方式拆解。
K是一个可变参数,可以选取如1、2、10或100等值,与矩阵的价值相关。如果矩阵信息量不大,可以选择较小的K。K越大,矩阵承载的信息量越大。举例来说,若K=2,矩阵A和B分别包含200和200个参数,总计400个参数,而目标矩阵W包含10000个参数。通过将W分解为A和B的乘积,学习W等价于学习A和B,总计仅400个参数,大大减少了学习复杂度。
-
参数详情表
参数名称 | 参数值 | 说明 |
| models/kolors/Kolors/unet/diffusion_pytorch_model.safetensors | 指定预训练UNet模型的路径 |
| models/kolors/Kolors/text_encoder | 指定预训练文本编码器的路径 |
| models/sdxl-vae-fp16-fix/diffusion_pytorch_model.safetensors | 指定预训练VAE模型的路径 |
| 16 | 设置LoRA的秩(rank),影响模型的复杂度和性能 |
| 4 | 设置LoRA的alpha值,控制微调的强度 |
| data/lora_dataset_processed | 指定用于训练的数据集路径 |
| ./models | 指定训练完成后保存模型的路径 |
| 1 | 设置最大训练轮数为1 |
| 启用中心裁剪,用于图像预处理 | |
| 启用梯度检查点,节省显存 | |
| "16-mixed" | 设置训练时的精度为混合16位精度(half precision) |
数据集
如何准备一个高质量的数据集
当我们进行图片生成相关的工作时,选择合适的数据集是非常重要的。如何找到适合自己的数据集呢,这里给大家整理了一些重要的参考维度,希望可以帮助你快速找到适合的数据集:
-
明确你的需求和目标
-
关注应用场景:确定你的模型将被应用到什么样的场景中(例如,艺术风格转换、产品图像生成、医疗影像合成等)。
-
关注数据类型:你需要什么样的图片?比如是真实世界的照片还是合成图像?是黑白的还是彩色的?是高分辨率还是低分辨率?
-
关注数据量:考虑你的任务应该需要多少图片来支持训练和验证。
2.数据集来源整理
以下渠道来源均需要考虑合规性问题,请大家在使用数据集过程中谨慎选择。
来源类型 | 推荐 |
公开的数据平台 | 魔搭社区内开放了近3000个数据集,涉及文本、图像、音频、视频和多模态等多种场景,左侧有标签栏帮助快速导览,大家可以看看有没有自己需要的数据集。 其他数据平台推荐:
|
使用API或爬虫获取 |
|
数据合成 | 利用现有的图形引擎(如Unity、Unreal Engine)或特定软件生成合成数据,这在训练某些类型的模型时非常有用。 最近Datawhale联合阿里云天池,做了一整套多模态大模型数据合成的学习,欢迎大家一起交流。从零入门多模态大模型数据合成 |
数据增强 | 对于较小的数据集,可以通过旋转、翻转、缩放、颜色变换等方式进行数据增强。 |
购买或定制 | 如果你的应用是特定领域的,比如医学影像、卫星图像等,建议从靠谱的渠道购买一些数据集。 |