GUI
GUI 是 “Graphical User Interface”(图形用户界面)的缩写。
其他的一些GUI:
Clip Drop:(官方在线)提供文字去除、北京去除与替换、放大、重新打光、物体清除、草图生成、图像变体与扩展、新模型SDXL生成等10多项功能。
Invoke AI:(第三方开源)推出了类似ComfyUI的节点式工作界,面画布功能,便于重绘和扩展。
SD. Next:(第三方开源)由webUI延伸而来,支持除SD之外的Kandinsky、DeepFloyd IF、UniDiffusion、SD-Distilled等多种扩散模型,适用于各种运行环境。
Volta ML:(第三方开源)Volta ML-Fast Stable Diffusion项目,安装简单,界面简洁,适合新手上手。
SD Online:(第三方在线)在线免费网站,webUI界面,提供controlnet、提示词生成器以及提示词语库等功能。
Hugging Face:(第三方在线)部署了各种系列的模型,免费,排队时间比较长。
Platground AI:(第三方在线)限量免费的在线平台,每天1000张的免费额度。
来源于:GUI盘点
主流GUI:
- 窗口式:WebUI
- 节点式:ComfyUI
- Prompt Only:Fooocus,只需关注提示词,无需在乎各种复杂参数
ComfyUI:
文生图、图生图的工作流平台工具ComfyUI。
功能:图形界面、后端、插件,通用的可视乎代码平台,可以作为一个接入其他API的平台。
插件:WebUI、Blender(无限圣杯项目)
后端:ComfyBox、StableSwarmUI、Fooocus
选择:
- 只想简单地通过提示词获得高质量图像,选择fooocus
- 需要使用CN等工具,选择MRE版本
- 需要丰富的插件或者习惯图文框式操作界面,选择WebUI
- 需要进行长线、定制化、自动化,选择ComfyUI
- 需要ComfyUI的灵活性和图文框式操作界面,选择以ComfyUI作为后端的几种前端界面ComfyBox、StableSwarmU
ComfyUI
ComfyUI 是GUI的一种,是基于节点工作的用户界面,主要用于操作图像的生成技术,ComfyUI 的特别之处在于它采用了一种模块化的设计,把图像生成的过程分解成了许多小的步骤,每个步骤都是一个节点。这些节点可以连接起来形成一个工作流程,这样用户就可以根据需要定制自己的图像生成过程。
基础逻辑
模块(元素)→模组(组件)→功能组(构造)→工作流(结构)→目标(功能)
模块/模组
核心
客制模组/自定义节点组
功能组
提示词输入:
文本提示词由CLIP模型+正负提示输入组成。
图像提示词由图像编码器接入条件编码器模型以及图像组成。
初试噪声:
- 潜空间噪声,empty latent image 模块
- 像素噪声图,通过noise(第三方模组)生成,经过VAE编码器进入潜空间
- 将图像经过VAE编码器进入潜空间,图生图
ControlNet:
ControlNet是一种可以集成到现有生成模型中的模块,实现更精细的控制和更好的生成效果。
通过一个处理器接入CN模型、条件以及经过预处理的特定图像(选择与CN模型相匹配的预处理器完成控制)
GLIGEN:
基于语言的图像生成(Grounded-Language-to-lmage Generation),是一种相对较新的从文本中创建图像的方法,简单且有效。与仅使用文本的旧方法不同,GLIGEN允许您在描述中添加额外的细节,称为基准输入(grounding inputs),从而使您对图像的最终组成有更多的控制。
分别将CLIP模型、GLIGEN模型以及条件作为输入,经过处理后以条件作为输出,用于控制指定物体的坐标与大小。
Sampler:
以主模型、正负条件、潜空间噪声图作为输入,经过一系列的采用后以潜空间作为输出。
Output:
接受潜空间和VAE模型作为输入,进入VAE处理器,最终输出图像,图像可使用保存模块,也可使用预览模块。
Upscale:
最基础的模型放大:将图像和指定的放大模型输入到放大模块
二次采样放大:通过潜空间放大之后再次进入采样器采样
经过模型放大的图像也可以通过VAE编码进入潜空间及再进行二次采样
工作流
匹配输入输出类型、梳理功能逻辑,连接组成工作流
高阶工作流
图片来源
ComfyUI应用
核心模块
Loader Checkpoint: 加载基础的模型文件
CLIP: 将文本类型的输入变为模型可理解的latent space embedding作为模型输入
VAE Model: 将latent space中的embedding解码为像素级别的图像
SD Sampler:
- seed:控制噪声产生的随机种子。
- control_after_generate:控制seed在每次生成后的变化。。
- steps:降噪的迭代步数,越多则信号越精准,相对的生成时间也越长
- cfg:classifer free guidance决定了prompt对于最终生成图像的影响有多大。更高的值代表更多地展现prompt中的描述。
- denoise: 多少内容会被噪声覆盖。
- sampler_name、scheduler:降噪参数。
Sampler方法选择:
- Euler:最简单的求解器
- LMS:(Linear multi-step method)更快版本的Euler
- Heun:更精准但更慢版本的Euler
- Ancestral:(带a的)生成过程更随机,并不会收敛
- Karras scheduler:初期sampling noise的值会更大,后期值更小
- DDIM (Denoising Diffusion Implicit Model) 和 PLMS (Pseudo Linear Multi-Step method) 最初SD论文的使用方法,后者是前者的优化,现在都是用较少了
- DPM (Diffusion probabilistic model solver) 和 DPM++ 新的方法,后者是前者的迭代版本
- DPM2 更加精准但是更慢
- DPM adaptive 更慢但是保证在一定步数内会收敛
Sampler使用总结:
- 更快、收敛、新的、高质量:DPM++ 2M Karras – 20-30步、UniPC – 20-30步
- 高质量、不关心是否收敛:DPM++ SDE Karras – 10-15步(比较慢)、DDIM – 10-15步
- 稳定、可复现的图像:不用带a的
- 简单尝试:Euler和Heun,后者可使用更少步数