ComfyUI进阶:Comfyroll插件 (四)

前言:

学习ComfyUI是一场持久战,而Comfyroll 是一款功能强大的自定义节点集合,专为 ComfyUI 用户打造,旨在提供更加丰富和专业的图像生成与编辑工具。借助这些节点,用户可以在静态图像的精细调整和动态动画的复杂构建方面进行深入探索。Comfyroll 的节点设计简洁易用,功能强大,是每个希望提升 ComfyUI 使用体验的用户的必备选择。祝大家学习顺利,早日成为ComfyUI的高手!

目录

一、安装方法

二、CR Aspect Ratio节点

三、CR Apply ControlNet节点

四、CR Multi-ControlNet Stack/CR Apply Multi-ControlNet节点

五、CR Load LoRA节点

六、CR Model Merge Stack/ CR Apply Model Merge节点

七、CR Module Pipe节点

八、高清修复示例工作流

一、安装方法

在ComfyUI主目录里面输入CMD回车。

在弹出的CMD命令行输入git clone https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes.git,即可开始下载。

二、CR Aspect Ratio节点

CR Aspect Ratio 节点的主要功能是调整图像的宽高比,使其符合指定的比例。这个节点可以用于裁剪、填充或缩放图像,以达到所需的宽高比。

节点索引:CR SD1.5 Aspect Ratio/ CR SDXL Aspect Ratio/ CR Aspect Ratio/ CR Aspect Ratio Banners/ CR Aspect Ratio Social Media/ CR_Aspect Ratio For Print

参数:

width → 设置潜空间的宽度

height → 设置潜空间的高度

aspect_ratio → 选择潜空间模板尺寸 **如果选择custom,则尺寸按照width和height设置**

swap_dimensions → 是否将width和height的值互换

upscale_factor → 用于在调整图像宽高比之后对图像进行缩放,即不改变原始尺寸

prescale_factor → 用于图像的放大,即增加图像的尺寸。

batch_size → 设置潜空间数量

输出:

width → 输出设置的宽度值

height → 输出设置的高度值

upscale factor → 输出设置的放大值

prescale factor → 输出设置的放大值

batch size → 输出设置的潜空间数量值

empty latent → 输出符合设定条件的潜空间图像

使用场景

· 图像展示: 确保图像在不同设备和平台上展示时保持一致的宽高比。

· 数据预处理: 在图像处理和机器学习任务中,统一图像的宽高比以便模型处理。

· 图像裁剪与填充: 根据需要裁剪或填充图像,使其符合特定的宽高比要求。

通过 CR Aspect Ratio 节点,你可以在 ComfyUI 中轻松调整图像的宽高比,以满足不同场景和需求的要求。

注意:根据选择的调整方法,图像的内容可能会发生变化。例如,裁剪方法可能会丢失部分图像内容,而填充方法可能会在图像周围添加边框。确保输入图像的分辨率足够高,以避免调整宽高比时图像质量下降。

三、CR Apply ControlNet节点

CR Apply ControlNet节点的主要功能是将ControlNet模型应用到图像生成或处理工作流中,从而控制生成的图像符合特定的输入控制信号。这个节点可以在图像生成过程中提供更细致的控制,以实现更高的精度和质量。

输入:

conditioning → 表示输入的条件信息

control_net → 加载对应的ControlNet

image → 表示输入的预处理图像

参数:

switch → 表示是否开启ControlNet

strength → 用于调整控制的影响程度 **太高可能产生负面影响**

输出:

CONDITIONING → 输出混合控制信息的条件信息

注意:输入的image必须是预处理图像,如下图所示,我们使用预处理器对原图进行边缘提取,然后通过该节点传入canny模型将控制信息注入conditioning信息流中,从而控制我们最终生成的图像和原图的边缘信息相符合。

注意:如下图所示,当我们设置控制强度为1时,可以看到最终生成的图像几乎毁掉了,所以大家可以通过自己的尝试调整控制强度的值,找到最符合需求的一个参数值。

使用场景

· 精细图像生成: 使用控制信号生成特定特征的图像,如特定风格、形状或内容。

· 图像编辑: 根据控制信号对现有图像进行编辑和调整,以实现精确的修改。

· 数据增强: 在机器学习任务中,使用ControlNet生成多样化的数据,以增强模型的训练效果。

通过CR Apply ControlNet节点,你可以在ComfyUI中实现对图像生成和处理的精细控制,从而在各种图像处理任务中获得更高的精度和质量。

四、CR Multi-ControlNet Stack/Apply Multi-ControlNet节点

CR Multi-ControlNet Stack 节点的主要功能是将多个 ControlNet 模型堆叠在一起,创建一个多层次的控制网络。通过这种方式,你可以组合多个控制信号,以便在图像生成或处理过程中应用更复杂和细致的控制。

CR Apply Multi-ControlNet 节点的主要功能是应用一个多层次的 ControlNet 网络(由 CR Multi-ControlNet Stack 节点生成)到图像生成或处理过程中。这个节点根据堆叠的控制网络和输入图像生成符合多个控制信号的图像。

这两个节点需要配合使用

输入:

image_x → 传入预处理图像 **注意是预处理图像,其次是与ControlNet对应的预处理图像**

controlnet_stack → 依然是这个节点 **可以通过串联增加模型数量**

base_positive → 正向提示词编码后的条件信息

base_negative → 反向提示词编码后的条件信息

参数:

switch_x → 表示是否开启第x个ControlNet

controlnet_x → 加载该ControlNet模型

controlnet_strength_x → 设置ControlNet模型的控制强度

start_percent_x → 设置控制信息注入条件信息的时机 **Advanced ControlNet库可提供更加精细的控制**

end_percent_x → 设置控制信息在条件信息结束的时机 **Advanced ControlNet库可提供更加精细的控制**

输出:

CONTROLNET_STACK → 输出加载的ControlNet模型信息

base_pos → 输出蕴含控制信息的正向条件信息

base_neg → 输出蕴含控制信息的反向条件信息

如图:我们使用两个ControlNet,分别是canny和depth两个模型,对原始图像进行分析后将预处理图像传入CR Multi-ControlNet Stack,然后将混合后的控制信息通过CR Apply Multi-ControlNet节点进行控制信息注入,最终控制去噪过程,生成与原图符合的图像信息。

"错误示范"如图:假如我们并没有正确的给到模型对应的预处理图像,如下所示:我们将canny的预处理图像给到depth模型,将depth预处理图像给到canny模型,最终生成的图像几乎没有美观可言。

使用场景

· 复杂图像生成: 使用多个控制信号生成具有多种特征的图像。

· 高级图像编辑: 结合多个控制信号对图像进行复杂的编辑和调整。

· 数据增强: 在机器学习任务中,生成多样化的数据以增强模型的训练效果。

通过 CR Multi-ControlNet Stack 和 CR Apply Multi-ControlNet 节点,你可以在 ComfyUI 中实现更复杂和精细的图像生成和处理,从而在各种图像处理任务中获得更高的精度和质量。

五、CR Load LoRA节点

CR Load LoRA 节点的主要功能是加载一个 LoRA 模型,并将其应用到现有的预训练模型中,以调整模型的行为和输出。这对于需要在预训练模型上进行特定任务微调的场景非常有用。

节点索引:CR Load LoRA/ CR Random Weight LoRA/ CR LoRA Stack/ CR Apply LoRA Stack/ CR Random LoRA Stack

输入:

model → 加载大模型

clip → 加载CLIP模型

lora_stack → 加载Lora栈 **多个lora stack可以进行串联**

参数:

switch → 选择是否开启lora

lora_name → 选择要是使用的lora

strength_model → 选择大模型的强度 **在lora和大模型之间进行强度设置**

strength_clip → 选择CLIP模型的强度 **在lora和CLIP模型之间进行强度设置**

exclusive_mode → 参数控制是否启用独占模式。如果设置为 "On",则在每次随机选择时,只能选择一个LoRA。

stride → 参数指定了在随机选择 LoRA 之前要进行多少次不随机选择。

force_randomize_after_stride → 如果设置为 "On",则在完成指定次数的非随机选择后,强制执行一次随机选择。

weight_min → 模型权重的最小值

weight_max → 模型权重的最大值

chance → 表示该Lora被选中的概率

输出:

IMAGE → 输出处理之后的图像

如图:我们控制参数和下面的对比实验相同,仅strength_model和strength_clip进行改变,下图所示为strength_clip设置为0,strength_model为1,最终生成的图像和我们加载的Lora并没有任何关系。

如图:我们控制参数和下面的对比实验相同,仅strength_model和strength_clip进行改变,下图所示为strength_clip设置为1,strength_model为0,最终生成的图像依然和我们加载的Lora并没有任何关系。

如图:我们控制参数和下面的对比实验相同,仅strength_model和strength_clip进行改变,下图所示为strength_clip设置为1,strength_model为1,最终生成的图像使用了我们加载的lora。

综上所述:我们这两个参数是互相配合使用的, 可以暂且理解为乘法的关系,其中一个为0则控制强度为0,所以我们使用的时候可以调整两个参数到合适的范围。

如图:为Random LoRA Srack的示例工作流,大家可以参考下。

使用场景

· 任务微调: 使用 LoRA 模型对预训练模型进行微调,以适应特定任务的需求。

· 性能优化: 在不重新训练整个模型的情况下,通过 LoRA 模型对预训练模型进行优化。

· 特性调整: 应用 LoRA 模型以改变预训练模型的某些特性,使其更符合特定的应用场景。

通过 CR Load LoRA 节点,你可以在 ComfyUI 中轻松加载和应用 LoRA 模型,从而在不重新训练整个模型的情况下实现特定任务的微调和优化。

六、CR Model Merge Stack/ CR Apply Model Merge节点

CR Model Merge Stack 节点的主要功能是将多个模型合并在一起,创建一个模型融合的堆栈。通过这种方式,你可以组合不同模型的特性和能力,以在图像生成或处理过程中获得更好的效果。

CR Apply Model Merge 节点的主要功能是应用一个合并的模型堆栈(由 CR Model Merge Stack 节点生成)到图像生成或处理过程中。这个节点根据合并的模型堆栈和输入图像生成融合后的图像。

这两个节点需要配合使用

输入:

model_stack → 大模型加载堆栈,可以批量进行串联

参数:

switch_x → 用于控制是否启用特定的大模型文件

ckpt_namex → 用于指定要使用的大模型文件。

model_ratiox → 表示相应大模型中模型的混合占比

clip_ratiox → 表示相应大模型中CLIP模型的混合占比

merge_method → 指定了用于将多个模型合并成一个的方法 **"Recursive" 方法是一种迭代方法,通过递归地将多个模型合并成一个。"Weighted" 方法是一种加权方法,根据预先设定的权重将多个模型进行加权合并。**

normalise_ratios → 用于指定是否要对模型的比率进行规范化 **如果设置为 "Yes",则在合并模型之前,系统会对模型的比率进行规范化处理,以确保它们的总和等于1。**

weight_factor → 仅在使用 "Weighted" 方法时有效,它用于控制加权合并方法中每个模型的权重

输出:

MODEL → 输出混合后的大模型选项

CLIP → 输出混合后的CLIP模型选项

model mix info → 打印混合比例,混合模型等信息

如图:我混合麦橘写实大模型和ghost动漫模型,并且设置相关的权重,通过model mix info节点输出最终混合的比例,然后输入正向提示词为dog,但是最终生成的图像却是个狗狗绅士,所以这个模型混合的结果还是挺不可控的,大家可以自行尝试。

使用场景

· 模型融合: 将多个模型的特性结合在一起,以生成更高质量的图像或文本。

· 性能优化: 通过模型合并优化生成结果,利用不同模型的优势。

· 特性扩展: 使用多个模型合并来扩展基础模型的功能和特性。

· 高级图像生成: 应用融合的模型生成具有多种特性的图像。

· 高级图像编辑: 根据合并模型堆栈对图像进行复杂的编辑和调整。

· 数据增强: 在机器学习任务中,使用合并模型生成多样化的数据。

通过 CR Model Merge Stack 和 CR Apply Model Merge 节点,你可以在 ComfyUI 中实现复杂的模型融合和应用,从而在各种图像生成和处理任务中获得更高的精度和质量。

七、CR Module Pipe节点

CR Module Pipe 节点的主要功能是将多个处理模块或节点串联起来,形成一个处理管道。这种模块化设计允许你将复杂的处理步骤组织在一起,以便更灵活地管理和执行工作流。

节点索引:CR Module Pipe Loader/ CR Module Input/ CR Module Output

输入:

pipe → 蕴含所有信息的管道

model → 要加载的大模型

pos → 正向提示词条件信息

neg → 反向提示词条件信息

latent → 潜空间图像信息

vae → 使用到的vae模型

clip → 使用到的clip模型

controlnet → 要是用的controlnet模型

image → 图像信息

参数:

seed → 随机数种子

control_after_generate → 种子控制方法

输出:

pipe → 蕴含所有信息的管道

使用场景

· 复杂数据处理: 将多个处理步骤组织成一个管道,以便对数据进行复杂的处理。

· 模块化工作流: 通过模块化设计,将可复用的处理步骤组合在一起,以便在不同的工作流中应用。

· 高效数据管理: 在处理大型数据集或复杂模型时,使用管道来简化数据管理和处理流程。

通过 CR Module Pipe 节点,你可以在 ComfyUI 中创建复杂的处理管道,将多个模块化步骤高效地组织在一起,从而在各种数据处理和模型应用任务中获得更高的灵活性和效率。

八、高清修复示例工作流

熟练使用以上节点,你就可以搭建“人物一致性控制”的工作流了。

这里使用SDXL的大模型,加载Lora进行生成过程干预,后续使用两个放大模型进行图像高清修复,先做单倍放大后进行两倍放大,后续通过ksampler二次采样(降低重绘幅度),解码后得到最终图像,我们通过CR pipe节点来进行数据传输,工作流更加美观,最终出图如下:

**孜孜以求,方能超越自我。坚持不懈,乃是成功关键。**

ComfyUI进阶:Comfyroll插件 (四)的更多相关文章

  1. Java进阶(三十四)Integer与int的种种比较你知道多少?

    Java进阶(三十四)Integer与int的种种比较你知道多少? 前言 如果面试官问Integer与int的区别:估计大多数人只会说到两点:Ingeter是int的包装类,注意是一个类:int的初值 ...

  2. SpringBoot进阶教程 | 第四篇:整合Mybatis实现多数据源

    这篇文章主要介绍,通过Spring Boot整合Mybatis后如何实现在一个工程中实现多数据源.同时可实现读写分离. 准备工作 环境: windows jdk 8 maven 3.0 IDEA 创建 ...

  3. webpack进阶之插件篇

    一.插件篇 1. 自动补全css3前缀 autoprefixer 官方是这样说的:Parse CSS and add vendor prefixes to CSS rules using values ...

  4. iOS开发——UI进阶篇(四)tableView的全局刷新,局部刷新,左滑操作,左滑出现更多按钮,进入编辑模式,批量删除,自定义批量删除

    首先创建项目,在storyboard如下布局控件,设置好约束 然后创建cell模型类XMGWineCell数据模型类XMGWine创建UITableView,设置数据源协议,实现数据源方法懒加载数据这 ...

  5. ruby -- 进阶学习(四)paperclip上传中文命名图片

         Paperclip -- 上传中文命名图片 使用Paperclip和ImageMagick插件来处理图片的时候,上传非中文命名的图片时,只要把配置写好就没问题 if you need to ...

  6. Spring+SpringMVC+MyBatis整合进阶篇(四)RESTful实战(前端代码修改)

    前言 前文<RESTful API实战笔记(接口设计及Java后端实现)>中介绍了RESTful中后端开发的实现,主要是接口地址修改和返回数据的格式及规范的修改,本文则简单介绍一下,RES ...

  7. DDD实战进阶第一波(十四):开发一般业务的大健康行业直销系统(订单上下文应用服务用例与接口)

    上一篇文章我们主要讲了订单上下文的领域逻辑,在领域逻辑中完成了订单项的计算逻辑.订单的计算逻辑以及如何生成相应的实体code,这篇文章我们通过 在应用服务中实现一个下单的用例,来将这些领域逻辑以及仓储 ...

  8. Python进阶【第四篇】函数

    一.变量 变量是记录一系列状态变化的量 1.变量分为可变类型与不可变类型——可变 与不可变是根据变量在内存中占据的位置 可变类型:列表list[ ].字典dicta{ } 不可变类型:字符串str.数 ...

  9. SpringBoot整合MybatisPlus3.X之分页插件(四)

    注:详细请看2.X博客中,3.X直接上代码. 建议装一个MybatisX插件,可以在Mapper和Xml来回切换 pom.xml <dependencies> <dependency ...

  10. 前端基础进阶(十四):es6常用基础合集

    在实际开发中,ES6已经非常普及了.掌握ES6的知识变成了一种必须.尽管我们在使用时仍然需要经过babel编译. ES6彻底改变了前端的编码风格,可以说对于前端的影响非常巨大.值得高兴的是,如果你熟悉 ...

随机推荐

  1. 【winform】【Socket】实现你画我猜一:核心功能开发

    我认为得核心:是把客户端画的图画实时传递给其他的客户端.   我的思路是: 1.GDI+绘图加鼠标事件,实现客户端绘图. 2.每记录鼠标有效绘图10个点,就把这10个点通过socket传递给服务器. ...

  2. Redis高可用一(主从)

    Redis高可用一(主从) 1.首先要有2或以上的Redis数据库,我这里三个redis(一主两从) 2.进入到主Redis 配置 redis.conf文件 # 主redis bind 0.0.0.0 ...

  3. Tron_CTF2024新生赛 MISC

    猿神?岂洞!! 题目: 腿短的好奇怪,难道有东西? 密码在这,好像有电!.txt 0362014324221316063736154275 还有一个压缩包. 我的解答: 036201432422131 ...

  4. 音视频学习-exceeded mem limit: ActiveHard 50 MB (fatal)

    一.现象 ReplayKit2 适配中 UPLOAD进程被系统杀掉 日志中显示原因:exceeded mem limit: ActiveHard 50 MB (fatal) 二.内存占用分析 1)系统 ...

  5. 我有点想用JDK17了

    大家好呀,我是summo,JDK版本升级的非常快,现在已经到JDK20了.JDK版本虽多,但应用最广泛的还得是JDK8,正所谓"他发任他发,我用Java8". 其实我也不太想升级J ...

  6. m3u8文件转换mp4 ffmpeg

    m3u8文件转换mp4 ffmpeg 命令行执行下面语句: ffmpeg -i input.m3u8 -c copy output.mp4 ffmpeg.exe 和 input.m3u8 放在同一目录 ...

  7. java把时间戳转换成时间_(转)java时间与时间戳互转

    java中时间精确到毫秒级,所以需求时间需要 除以1000 //将时间转换为时间戳 public static String dateToStamp(String s) throws Exceptio ...

  8. iOS开发之弹窗管理

    前言 "千淘万漉虽辛苦,吹尽狂沙始到金."在这快速变化的互联网行业,身边的朋友有的选择了勇敢创业,有的则在技术的海洋中默默耕耘.时常在深夜反思,作为一个开发者,我们的价值何在?答案 ...

  9. Nginx 静态站点配置不对导致301跳转的坑

    背景 是这样的,我们前端服务器统一的入口是 kong网关 ,我们还有一个Nginx静态资源站点:static.mysite.com,根配置如下: location / { root /home/web ...

  10. python Django项目以Debug模式启动和外网访问启动

    一.Django介绍 介绍: 完善的web框架,包括前端和后端的管理,django项目管理: 管理后台访问:后面补充 前端页面访问:根据app/settings.py文件下配置的访问地址 1.1 项目 ...