AIGC全能王

Comfyui基础

1. 本地部署

首先下载老师提供的新版comfyui整合包的链接

Comfyui整合包下载链接(内置学习要用的扩展,不包含模型,需要和下面的模型包一起使用)
链接:https://pan.baidu.com/s/1diOtgCERQ6jlwdXiwuLY_g
提取码:a213

Comfyui整体模型包下载链接(comfyui插件模型类等)
链接:
https://pan.baidu.com/s/1eMRZ2XE3BUDm78CdpnJM3g
提取码:r1yb


2. 共享webui模型

Comfyui共享webui内的模型是需要先打开comfyui根目录下的extra_model_paths.yaml文件进行编辑,需要复制webui根目录路径和webui放置controlnet模型的路径,分别放入base_path:和controlnet:的后面,然后记得一定要保存!不能有多的空格!


3. 云端使用

光算云注册地址:
https://lightcc.cloud/login


4. 生图原理

webui和comfyui都是基于stable diffusion底层生图逻辑搭建的操作界面,本质上的生图原理都是一样的。

但是操作方式各有不同,comfyui相对于webui的优势就是对于显存占用的要求更少一些,扩展插件会更多,熟练掌握之后的可玩性会更高,因为是节点式的操作逻辑,就意味着可以很多不同的节点组合搭配去使用,甚至多个节点(模块化)的去搭配,工作流搭建好之后,只需要一键生成就可以给我们进行在webui上需要很多步的操作,给我们以后的ai绘画提供更高的效率和上限。

我们先从最简单的文生图来拆解分析
当你输入一个文字,比如1girl,我们称之为text prompt,系统就会生成给你一张符合你输入文本的描述图片。这是我们看到的表面流程,那么我们来拆解一下具体的步骤。整个生图过程中,在生图底层实现这个工作有三个关键点。

1️⃣ 大模型
第一个关键是大模型,大模型的训练是拿非常多的图片样本进行计算,这些图片上有大量的文本标记Tag,比如说蒙娜丽莎的图,就会打上达芬奇,写实派,女性,微笑,油画等一系列的属性,我们称之为Tag(标签)。

更简单的解释是大模型:
Stable diffusion通过大量的图片和文本数据训练,将很多图片压缩成关键特征的表示,并将文本标签转化为计算机能理解的形式。在这个过程中,它建立了一个内部的,用于存储和处理这些数据的空间(潜在空间)。在这个空间里,图片的特征和文本标签以一种压缩和转化后的形式相互对应,是的模型能够基于文本描述生成或理解图像内容。

我们先讲一下大模型是怎么练出来的
在大模型训练过程中有这几部:
1。创建了一个叫做潜在空间的地方Latent sapce(潜空间)
2。用算法把这些图片进行压缩,并高度总结图片的特征,图片保留特征并且压缩成了特征的马赛克,这个过程我们称之为加噪音,特征马赛克也称之为噪音。
3。同事stable diffusion对文本的Tag也进行了总结和压缩,这个过程,称之为Token化。所谓的Token化,就是把文字拆解成小的单位,然后形成各种方便计算机可以理解但是人无法理解的字符字母和符号。
用于方便计算机用非常神奇的算法进行各种的匹配,再把图片特征进行总结和压缩,并且把文本tag也进行token化的同时,stable diffusion还依然让图片和Tag保持起对应的关系,但此时就不是图片对应Tag了,而是潜在空间中Latene Spage中的特征马赛克和他Token对应的这种关系。
这时候我们就得到了一个懂得非常多的文本和图片的特征的对应关系的大模型。通过大模型可以创建潜在空间latent space。潜在空间里面存放的都是马赛克和文本token的对应关系,这个计算的过程一般称之为训练大模型

2️⃣ CLIP和VAE
为了让用户输入的内容可以进入latent space进行匹配,就需要工具把人类可以理解的文字和图片进行编码,转换为可以在latent space中工作的标识符,这样才能在潜在空间latent space中进行匹配,文字prompt在转换的时候需要用到CLIP文本编码器把prompt变成Token,如果是图片会通过VAE编码器转化成特征马赛克(也就是噪音),最后再经过计算,Stable diffusion会按照我们想要的意图生成一个新的特征马赛克,这个时候我们需要用VAE解码器,把这个特征马赛克转换为图片,这个图片就是我们最终需要的1girl的图片。

3️⃣ 采样器
上一步,我们已经把输入的text prompt的1girl转化成为了token(ai能理解的提示词),同时我们还需要输入一个基础的特征马赛克0,文生图的时候,我们系统就随机生成了一个基础的特征马赛克0,这时候采样器就把Token和基础特征马赛克0通过模型计算出来一个想要的新的特征马赛克1.
其中Token+基础马赛克0,还有一些其他的内容,我们通称为生成的约束条件conditioning,这个特征马赛克1会和你输入的token继续计算,这个计算会持续很多次(也就是不断迭代),每次就会越来越趋近于计算机认为你需要的token(提示词变成的ai能理解的语言)结果到底是什么样的图形,这个过程叫称之为采样,由于经过多次计算之后,特征马赛克1会越来越趋近于真实的图片,所有称之为Denose(降噪音)。
采样器使用一个算法和一些设置,运行N次计算,最后再Latent space中得到了一个趋近于你想要的内容的特征马赛克N,这个马赛克N再通过VAE解码器还原成真实的图片,整个文生图的过程就完成了。


5. 文生图+lora

文生图或者其他工作流想要添加lora的话,需要在大模型加载器和clip文本编码器中间串联一个lora加载器,模型点连接模型点,clip点连clip点,然后clip输出连到两个clip文本编码器,因为大模型和lora都属于是模型类别,lora是属于微调模型,能够更加具体的能提现出我们想要的画面到底是怎么样的(例如海贼王路飞角色),所以同样的需求和大模型以及clip一起进入k采样器进行ai生成。


6.工作流导出

在做好的工作流空白区域点击鼠标右键,在下面找到工作流图像/导出选型按钮,这里有导出SVG格式和PNG格式,并且有是否带工作流的选项,推荐大家可以使用带工作流的这个PNG格式,首先是可以直观看到工作流的节点,并且也可以像json格式一样直接把这个PNG拖入comfyui用工作流

SVG格式是以图形化的方式展示了工作流中各个节点之间的链接关系和布局,并且是一种矢量图形格式,怎么缩小也不会损失清晰度的

PNG格式是捕捉了工作流在界面中的可视化外观,就像给工作流拍了一张照片一样。这个图像会显示工作流中的各个节点,节点的形状,颜色等视觉元素,以及它们之间的链接关系。


7. 图生图原理

图生图工作流与文生图流程的原理都是解禁的,略有区别的是,图生图多一步把输入的图片变成ai能看的懂的马赛克图片,这个时候就需要有一个VAE编码器来把图片进行编码放进潜空间里面进行操作,这张马赛克图片就变成了K采样器要与大模型CLIP转换成的提示词一起结合起来,添加噪声,从而达到一张新的马赛克图片,在VAE解码成我们看的懂的图片。

我们这里举个图生图转绘的例子,把真人图片转换为二次元。
首先需要把大模型切换成二次元的,正面提示词也要写上画风的提示词,例如二次元,动漫,以及人物的提示词。这个时候最重要的参数其实就是降噪,在webui也叫重绘幅度,它的数值影响我们最后生成的效果。
降噪值越高,画面越不接近原图,越接近提示词。
降噪值越低,越接近原图,提示词的影响越小。


8. 局部重绘

当我们在图生图工作流的基础上需要进行局部重绘的操作时,我们需要把VAE编码器换成VAE内补编码器,并且需要把加载图像的这招和内补编码器的这招点连接。

VAE内补编码器除了传输图像数据到潜空间外,还需要输入这招以及这招延展等参数。遮罩犹豫指定图像中需要进行内补或修改的区域,遮罩延展则类似于羽化效果,用于控制内补区域与周围图像的融合程度。

基础局部重绘的效果一般都不太好,或者需要抽卡,所以我们需要最好使用专门的重绘插件BrushNet。它的原理就是通过给图片话遮罩后,先不直接进K采样器里面进行遮罩绘制,先进BrushNet里面进行处理,把提示词与重绘区域进行对应好,然后配合专门的BrushNet模型再进入到K采样器里面进行重绘,效果就更精致,更贴近提示词。就像产品检验一样,多一步检验,产品出问题的概率就会少很多。但是需要注意,brushnet重绘是会重绘整个画面的,虽然出遮罩外变化不大,但是确实是会影响整个画面的。


9. 图片放大工作流

老师常用的是“双采样器潜空间”和UltimateSD插件放大,其实也可以把双采样器放大和sd插件放大组合起来使用的,这样放大效果其实很好,但是小号的时间和性能就比较高,看大家的需求。

supir放大主要是让画面不变化的情况下放大,适合需要保证画面内容不做太大变化的。但是也是最损耗性能的。

supir通过结合生成先验,多模态技术,修复引导采样方法和大规模数据集训练,实现了一种高效且高质量的图像放大和修复方法。其核心优势在于能够在保持与原始低质量图像高度一致的同时,生成具有高质量的图像。如果电脑性能够的话,是比较推荐这种放大方法的。后期放大也是推荐这个方法。

supie模型推荐voQ的模型,带fp16的属于半经度模型,属于残血版,性能不够的同学可以使用。


10. comfyui快捷键

Ctrl + Enter ★★★ 将当前图表排队等待生成

Ctrl + Shift + Enter ★★★ 将当前图表排成第一个生成图表

Ctrl + Alt + Enter ★★★ 取消当前生成

Ctrl + Z / Ctrl + Y ★★★ 撤销 / 重做

Ctrl + S ★★★ 保存工作流程

Ctrl + O ★★★ 加载工作流

Ctrl + A ★★★ 选择所有节点

Alt + C ★★★ 折叠/展开选定节点

Ctrl + M ★★★ 静音/取消静音选定节点

Ctrl + B ★★★ 绕过选定的节点(就像从图中删除节点并重新连接线路一样)

Delete / Backspace ★★★ 删除选定节点

Ctrl + Backspace ★★★删除当前图表

Space ★★★ 按住并移动光标时移动画布

Ctrl / Shift + Click ★★★ 将单击的节点添加到选择中

Ctrl + C / Ctrl + V ★★★ 复制并粘贴选定的节点(不保持与未选定节点输出的链接)

Ctrl + C / Ctrl + Shift + V ★★★ 复制并粘贴选定的节点(保持从未选定节点的输出到粘贴节点的输入的链接)

Shift + Drag ★★★ 同时移动多个选定节点

Ctrl + D ★★★ 加载默认图表

Alt + + ★★★ 画布放大

Alt + - ★★★ 画布缩小

Ctrl + Shift + LMB + 垂直拖动 ★★★ 画布放大/缩小

P ★★★ 固定/取消固定选定节点

Ctrl + G ★★★ 将选定节点分组

Q ★★★ 切换队列的可见性

H ★★★ 切换历史记录的可见性

R ★★★ 刷新图表

F ★★★ 显示/隐藏菜单

. ★★★ 适合选择视图(未选择任何内容时显示整个图表)

双击LMB ★★★ 打开节点快速搜索面板

Shift + 拖动 ★★★ 一次移动多根电线

Ctrl 左键 Alt 点击 ★★★ 断开点击插槽上的所有电线


11. ControlNet生图原理

ControlNet是一种用于控制稳定扩散的神经网络结构模型,用于通过添加额外条件来控制扩散模型

本质上将ControlNet就是图生图中参考模型的一环:可以理解为图像到图像的转换方法。这些方法通过向模型输入不同的图像数据,引导模型生成我们所需的图像。

在应用ControlNet技术时,我们首先将clip文本提示(text prompt)和图像预处理数据一并输入到ControlNet的模型。随后,ControlNet模型会基于这些输入生成一张潜在的图像(也就是一张带了控制的马赛克图片),这张马赛克随后将作为正面条件信息,与原始的clip文本提示一起再次输入到Stable Diffusion模型中进行生图操作。通过这种方式,潜在图像和文本提示共同作用于Stable Diffusion模型,从而对最终生成的图像产生影响。

总结ControlNet是一种神经网络结构模型,可以与Stable Difffusion模型结合使用。
ControlNet允许将条件输入(例如边缘图,深度图,骨骼姿态图等)包含到Stable Diffusion等大型扩散模型中。结合ControlNet可以更好的控制图像生成过程,从而能够生成更具体,更符合要求的图像。


12. 预处理器

1️⃣ 线条类预处理器
线条类预处理器可以根据他们使用的模型分为5大类。分别是硬边缘(canny),线稿(lineart),直线(mlsd),软边缘(softedge)以及涂鸦(scribble)。

硬边缘(canny)它没有什么竞争对手,只有一种预处理器,它是通过使用边缘检测器提取图像中的重要轮廓线,对于物体边缘线的捕捉是很严格的。它比较适用于需要检测边缘线强的画面。例如物体,家具等,对于人物这类画面处理的效果不如线稿(lineart)

MLSD提取的都是画面中的直线边缘,在测试中可以看到mlsd(M-LSD直线线条检测)预处理后只会保留画面中的直线特征,而忽略曲线特征。因此这个mlsd多适用于建筑,室内设计,桥路等画面。
score_threshold(刻痕阈值)的增大,被过滤掉的线条也就越多,最终图像中的线稿逐渐减少。
dist_threshold(距离阈值)则用于筛选线条的长度,即果断的直线会被筛选掉

2️⃣ 面部与姿态预处理器
3️⃣ 深度预处理器
4️⃣ 其他预处理器


13.Union万能CN模型(X大模型专属)


14. Comfyui效率节点

首先我们来讲一下效率节点的含义或者说作用,在comfyui中,效率节点(Efficiency Nodes)指的是那些旨在提高工作流程效率的组件或功能。这些节点可能包括但不限于:
1.自动化节点:自动执行重复性任务,减少手动操作
2.条件节点:基于特定条件来决定工作流程的走向
3.并行处理节点:允许同事处理多个任务,提高处理速度
4.优化节点:对数据或流程进行优化,以减少资源消耗或提高性能

效率加载器属于整合节点,也可以叫集成条件节点,它的作用是简化工作流程并减少需要的总节点数量,把需要调整的大部分参数都可以在一个节点上,例如大模型,lora , vae,正负面提示词,画面尺寸等等。可以通过这一个节点去调整。然后从输出点里面直接输出到需要的节点即可。

全局节点也是需要讲的重要内容,这在我们之后学习comfyui都帮助很大,可以极大提升我们的效率,多个工作流模块的时候可以同时使用一个大模型,lora,提示词等条件
发光的输入节点就是接收到了全局的节点的数据并且对应条件会自动匹配的,不会搞混的

转换点也是属于经常会用到的,主要是用于需要连接的两个节点之间太远或者太多太密看不清,起到梳理节点工作流连线的作用

设置点和获取点也是非常好用的一组节点,他们是通过设置点来保证条件参数的输入,让后通过获取点来选择任意的参数进行对应连接。可玩性和自由度比全局输入还要高


15.提示词优化模块

我们需要搜索出load styles csv这个节点,
这个是加载提示词预设文件的节点,大家需要先把老师准备好的提示词预设文件放进comfyui根目录文件夹下面,不能改名称和后缀,否则会识别不出来,放进后刷新一下comfyui就会显示一堆预设的名称。CSV这个节点的起手式预设连接方式,正面条件,也就是上面positive prompt,连接的文本B,负面条件直接连接到效果采样器的负面条件上


16.面部细化模块

在生成人物远景或者全身像的图片时,任务面部很容易崩,很扭曲,尤其是使用SD1.5模型。主要原因就是分配给脸部的分辨率不足,导致人物脸部细节不足,就大概率会崩。举个例子,使用SD1.5模型,生成512 * 768的人物全身图就特别容易崩