前言
本教程会教您如何使用ComfyUI,从基础的界面操作到功能再到发散生图,以及对所需要用到的模型,罗拉等进行介绍梳理。
第一章 ComfyUI简介
第一节 comfyui 界面
第二节 原生与派生
原生版,相对稳定,
下载地址
派生版,会增加不少功能性的内容,或是接入第三方模块,
下载地址
第二章 节点介绍
第一节 加载器
图2.1.2 是加载器的列表,可以从列表中看出,加载器是用来加载各模型,萝啦,Vae等内容的,
图 2.1.2
CheckPoint 加载器
作用
CheckPoint 加载器主要用于加载深度学习模型的权重参数,这些参数是模型在训练过程中学习到的知识体现。在图像生成任务中,它能加载预训练的生成模型,如 Stable Diffusion 等模型的核心权重,使模型具备生成图像的能力。
功能
-
参数读取:从保存的模型文件(如.ckpt 格式)中读取网络结构的权重数据,将其加载到内存中,以便模型在推理阶段能够使用这些参数进行计算。
-
模型初始化:根据读取的参数初始化模型的各个层,确保模型处于可执行状态,为后续的图像生成或其他任务做好准备。
-
跨平台兼容性:支持在不同的深度学习框架(如 PyTorch)和硬件环境(CPU、GPU)下加载模型参数,方便模型在各种场景下运行。
输出
加载完成后,输出一个已初始化好参数的深度学习模型,该模型可接收输入数据(如文本描述、随机噪声等),通过内部的计算和推理过程,输出图像数据或其他中间结果,用于后续的图像生成或处理。
VAE 加载器
作用
VAE(变分自动编码器)加载器用于加载 VAE 模型,VAE 在图像生成中主要负责对图像进行高效编码和解码,将高维图像数据压缩到低维空间表示,并能够从低维表示中还原出图像。在 AI 绘画流程中,它常与生成模型配合,提升图像生成的质量和效率。
功能
-
编码功能加载:加载 VAE 模型的编码器部分,能够将输入的图像数据转换为潜在空间的特征向量,这些向量包含了图像的关键特征信息,实现对图像的压缩和抽象表示。
-
解码功能加载:加载 VAE 模型的解码器部分,将潜在空间的特征向量还原为图像数据,在图像生成中,通过对潜在向量的操作和转换,生成符合要求的图像。
-
优化图像质量:VAE 加载器加载的模型可以对生成图像的细节、色彩等方面进行优化,使生成的图像更加真实、自然,减少生成图像中的伪影和噪声。
输出
输出经过编码或解码处理后的图像数据。在图像生成过程中,接收生成模型输出的潜在向量,通过解码输出最终的图像;在图像编码场景下,接收原始图像,输出对应的低维特征向量。
LoRA 加载器
作用
Lora(Low-Rank Adaptation,低秩自适应)加载器用于加载 Lora 模型,它的作用是在不改变原始大型预训练模型(如 Stable Diffusion)主体结构和权重的基础上,通过加载小型的 Lora 权重文件,对模型进行快速微调,以适应特定的风格、主题或任务需求。
功能
-
权重融合:将 Lora 模型的权重与原始基础模型的权重进行融合,在推理时,使模型在保留基础能力的同时,引入 Lora 所学习到的特定知识和风格。
-
快速适配:针对不同的应用场景,如特定的艺术风格、人物形象、场景主题等,通过加载不同的 Lora 模型,实现模型快速适应新的生成需求,无需重新训练整个基础模型,节省计算资源和时间。
-
参数管理:管理 Lora 模型的参数加载和存储,确保 Lora 权重与基础模型的正确交互和使用,并且支持多个 Lora 模型的叠加使用,进一步丰富生成效果。
输出
输出经过 Lora 权重调整后的模型推理结果,即生成符合特定风格或任务要求的图像。这些图像在保留基础模型生成能力的基础上,融入了 Lora 模型所带来的独特特征和风格。
ControNet 网络模型 加载器
作用
ControNet 加载器用于加载 ControNet 模型,ControNet 是一种能够对图像生成过程进行精确控制的技术。它通过引入额外的条件输入(如线稿、深度图、人体姿态图等),引导生成模型按照指定的结构、姿态或风格生成图像,极大地增强了图像生成的可控性。
功能
-
条件输入处理:加载 ControNet 模型后,能够接收并处理各种条件输入数据,将这些条件信息与原始的文本或噪声输入相结合,为生成模型提供更丰富的指导信息。
-
结构引导:根据输入的条件数据(如线稿),引导生成模型生成符合特定结构的图像,确保生成图像的轮廓、布局等与输入条件一致,常用于线稿转彩色图像、根据草图生成真实场景等任务。
-
风格和姿态控制:利用姿态图、风格图等条件输入,控制生成图像的人物姿态、艺术风格等特征,使生成图像能够满足用户对特定风格和姿态的要求。
输出
输出在特定条件控制下生成的图像,这些图像严格遵循输入条件所设定的结构、风格或姿态要求,同时结合文本描述等其他信息,生成高质量、符合预期的图像结果。
ControlNet/diff 加载器
作用
ControlNet/diff 加载器是对 ControNet 的一种扩展或变体加载器,它可能侧重于处理与图像差异(diff)相关的条件输入,进一步增强对图像生成过程中细节变化的控制能力。它可以利用图像之间的差异信息,引导生成模型在已有图像基础上进行更精确的修改和生成。
功能
-
差异信息处理:加载 ControlNet/diff 模型后,能够解析和处理图像差异数据,将这种差异信息转化为生成模型可利用的条件,指导模型生成与原始图像存在特定差异的新图像。
-
局部修改控制:基于差异输入,实现对图像局部区域的精确修改和生成,例如在保持图像整体风格和结构的前提下,对某个物体的颜色、形状进行改变,或者添加特定的细节元素。
-
渐进式生成:利用差异信息实现渐进式的图像生成和优化,逐步调整图像细节,使生成结果更加符合用户对图像变化的预期。
输出
输出根据图像差异条件生成的修改后图像,这些图像在保留原始图像部分特征的基础上,按照差异条件进行了针对性的调整和生成,实现对图像的精细化编辑和创作。
风格 加载器
作用
风格加载器主要用于加载各种风格模型或风格参数文件,其作用是使图像生成模型能够生成具有特定艺术风格(如梵高风格、水墨风格等)的图像,满足用户对不同艺术表现形式的需求。
功能
-
风格模型加载:从存储的风格模型文件中加载风格相关的参数和结构,这些模型通常学习了特定艺术风格的特征和表现形式。
-
风格迁移:将加载的风格模型与基础图像生成模型相结合,在图像生成过程中,将学习到的风格特征迁移到生成图像上,使生成图像具备目标艺术风格。
-
风格参数调整:支持对加载的风格参数进行调整,如风格强度、色彩饱和度等,用户可以根据自己的喜好灵活控制生成图像的风格表现程度。
输出
输出具有特定艺术风格的图像,这些图像在内容上符合输入的文本或其他条件要求,同时在视觉风格上呈现出加载的风格模型所对应的艺术效果。
CLIP 加载器
作用
CLIP(Contrastive Language-Image Pretraining,对比语言 - 图像预训练)加载器用于加载 CLIP 模型,CLIP 模型能够建立文本和图像之间的语义联系。在图像生成中,它可以帮助模型理解输入的文本描述,并生成与之语义相符的图像。
功能
-
特征提取:加载 CLIP 模型后,能够分别对输入的文本和图像进行特征提取,将文本和图像转换为高维空间中的特征向量,便于后续进行语义相似度计算。
-
语义对齐:通过计算文本和图像特征向量之间的相似度,实现文本和图像的语义对齐,帮助图像生成模型理解用户输入的文本描述意图,生成符合语义要求的图像。
-
多模态检索:在图像生成过程中,CLIP 加载器支持基于文本描述进行图像的检索和筛选,从大量图像数据中找到与文本语义匹配的参考图像,辅助生成模型生成更准确的图像结果。
输出
输出经过语义对齐和处理后的信息,这些信息用于指导图像生成模型生成与输入文本语义一致的图像。在实际应用中,CLIP 加载器输出的特征向量和语义相似度信息会与其他生成模型组件协同工作,最终生成符合文本描述的图像。
unCLIPCheckpoint 加载器
作用
unCLIPCheckpoint 加载器用于加载 unCLIP(一种改进的 CLIP 相关模型或技术)的模型权重或检查点文件。它在图像生成和处理中,进一步优化了文本与图像之间的映射关系,能够生成更高质量、更符合语义的图像,同时可能具备一些新的特性,如支持更复杂的文本描述、生成更大分辨率的图像等。
功能
-
高级模型加载:从存储文件中加载 unCLIP 模型的权重参数和网络结构,使模型具备处理文本和图像生成任务的能力,相比传统 CLIP 模型,unCLIP 模型可能具有更先进的架构和训练策略。
-
增强语义理解:通过加载的 unCLIP 模型,实现对文本描述更深入的语义理解,能够捕捉到文本中的细微语义差异和复杂语义关系,从而指导生成模型生成更精确、更细腻的图像内容。
-
图像质量提升:unCLIPCheckpoint 加载器加载的模型可以对生成图像的分辨率、细节等方面进行优化,生成更高质量的图像,满足用户对图像清晰度和视觉效果的更高要求。
输出
输出基于 unCLIP 模型生成的高质量图像,这些图像在语义准确性和视觉效果上都有较好的表现,能够精准匹配输入的复杂文本描述,为用户提供更优质的图像生成结果。
第二节 采样器
第三章 节点使用
第三章 脚本使用
command + Alt + I 启动
allow pasting
(() => {
function copyGraphToClipboard() {
const graphJson = JSON.stringify(window.app.graph.serialize(), null, 2);
navigator.clipboard.writeText(graphJson)
.then(() => alert("已复制 JSON!"))
.catch(err => console.error("复制失败:", err));
}
function addButton() {
const btn = document.createElement("button");
btn.innerText = "复制 JSON";
btn.style.position = "fixed";
btn.style.bottom = "20px";
btn.style.right = "20px";
btn.style.zIndex = "1000";
btn.onclick = copyGraphToClipboard;
document.body.appendChild(btn);
}
addButton();
})();
就可以复制当前节点转为Json
评论 (12)
发表评论