ComfyUI 中你不得不了解的插件,IPAdapter 基础的使用

2024-05-24 11:20

本文主要是介绍ComfyUI 中你不得不了解的插件,IPAdapter 基础的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 什么是 IPAdapter?

IPAdapter 是一个轻量级的适配器,它的作用是将一张图像或几张图像的风格迁移到另一张图像上去,可以把它当作只有一张图像的 lora。通俗的讲就是垫图。

IPAdapter 接受一张图像作为输入,将其编码为Token,并和标准的提示词输入混合作用于图像的生成。

图片

2 ComfyUI_IPAdapter_plus 的安装

第一步安装插件 ComfyUI_IPAdapter_plus

图片

图片

第二步下载模型到 ComfyUI 目录,下载地址:https://github.com/cubiq/ComfyUI_IPAdapter_plus?tab=readme-ov-file 或者公众号内回复 IPA 获取模型下载链接

目前作者插件支持的模型有以下

  • clip_vision 视觉模型:即图像编码器,下载完后需要放在 ComfyUI /models/clip_vision 目录下

    • CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors

    • CLIP-ViT-bigG-14-laion2B-39B-b160k.safetensors

  • IP-Adapter 模型:下载完后需要放在 /ComfyUI/models/ipadapter 目录下

    • ip-adapter_sd15.safetensors:基本模型, 平均强度

    • ip-adapter_sd15_light_v11.bin:与ip-adapter_sd15相同,但更兼容文本提示

    • ip-adapter-plus_sd15.safetensors:比 ip-adapter_sd15 更接近参考图像

    • ip-adapter-plus-face_sd15.safetensors:人像模型

    • ip-adapter-full-face_sd15.safetensors:更强的脸模型,但效果不一定更好

    • ip-adapter_sd15_vit-G.safetensors:使用 ViT-bigG 视觉编码器

    • ip-adapter_sdxl_vit-h.safetensors:使用 ViT-H 视觉编码器

    • ip-adapter-plus_sdxl_vit-h.safetensors:更接近参考图

    • ip-adapter-plus-face_sdxl_vit-h.safetensors:SDXL人像模型

    • ip-adapter_sdxl.safetensors:SDXL 基本模型

需要注意,其中名字带有 sd15 适用于 sd15 大模型,带有 sdxl 的适用于 sdxl 大模型

其中名字带有 vit-h 的使用 ViT-H 视觉编码器,名字带有 vit-G 的使用 ViT-G 视觉编码器;

SDXL 大模型默认使用 ViT-G,SD15 大模型默认使用 ViT-H。

3 基础工作流

我们先从基础工作流开始,我们只使用 IPAdapter 引导图像扩散,而不使用提示词

图片

3.1 节点说明

其主要在文生图的工作流上添加了以下几个节点

图片

1)IPAdapter Advanced(应用IPAdapter(高级))

  作用:读取并转换图像特征

  输入:

  • model:接受 Unet 模型的输入

  • ipadapter:接受 ipadapter 模型

  • image:接受图像的输入

  • image_negative:接受负面图像输入,简单说就是传入不想要的元素。比如说我们不想要参考图的某种颜色,我们就可以将有该颜色的图片传入到 image_negative 中

  • attn_mask:接受图像遮罩,收到后,只会识别图像遮罩的部分

  • clip_vision:接受视觉编码器模型输入

  参数:

  • weight:参考权重

  • weigth_type:IPA的权重类型

  • combine_embeds:图像特征和其他问题提示词的组合方式

  • start_at:作用开始时间

  • end_at:作用结束时间

  • emdeds_scaling:

  输出:

  • model:输出经过 ipadapter 引导的大模型

2)IPadpter Model Loader

作用:IPadpter模型加载器

3)Load CLIP Vision

作用:CLIP视觉模型加载器

3.2 使用 IPAdapter 生成更好的图片

通常情况下,使用 IPAdapter 会导致生成的图像过拟合(burn),这时候需要降低一点CFG并提高一点迭代步数,可以看下面不同 CFG 和 步数下的对比。可以看到 CFG 在 6 的时候图像更加柔和。

图片

当然,我们还可以通过 image_negative 来输入图像消除过拟合的情况并平滑我们的画面。

我们需要在原工作流中增加一个 IPAdapter Noise(IPAdapter噪波节点,该节点接受原始图像,将其翻转并添加噪点后输入到 image_negative 中,能够对图像进一步去噪重绘。

图片

下面来看下该节点的详细说明:

图片

输入:

  • image_optional:接受原始图像输入

参数:

  • type:原始图像的类型

  • strength:添加的噪波强度

  • blur:输入图片的模糊程度

输出:

  • IMAGE:添加噪波的图像

  • IMAGE:添加噪点后的图像

我们还可以通过提示词配合 IPAdapter 来生成更好的结果。

输入提示词 A beautiful girl wearing pearl earrings,并适当降低 IPAdapter 的权重为0.7,查看生成的结果,效果非常不错。

图片

最后来看下优化后的对比图

图片

4 IP Adapter Plus Model 对比

ip-adapter-plus_sd15.safetensors 模型相比 ip-adapter_sd15.safetensors 生成的结果图像更加接近于原图。

下面看下同参数下 ip-adapter-plus_sd15 生成的图像对比。

图片

5 Prepping Images 预处理图像

IPAdapter 只支持方形的参考图,默认会自动居中裁剪。

图片

如果我们想要参考输入图片的脸部,这时候可以使用 Prep Image For ClipVision(CLIP视觉图像处理) 节点。

图片

5.1 Prep Image For ClipVision(CLIP视觉图像处理)节点

作用:将图像的最小边缩小到 224px,其它边按比例缩放,并按裁剪位置,裁剪输入图像到 224*224 的分辨率。

输入:

  • image:接受图像的输入

参数:

  • interpolatio:图像缩放时的插值算法。主要是作为图像图像缩放后新位置像素的计算方式。

  • crop_position:裁剪位置。

    • top/bottom/left/right/center/pad:以顶部/底部/左部/右部/居中/填补方式裁剪。使用该设置参考图像的不同位置。

  • sharpening:输出图像的锐化程度,图像模糊的情况下,可以适当增加锐化,提高图像清晰度。

6 多张输入图像的参考

IPAdapter 能够同时参考多张图片的风格。借助 Batch Images(图像组合批次)节点输入多张参考图。

图片

那么多参考图什么时候使用?我们以下面的例子分析下。输入4张参考图,并输入提示词1girl,red skirt,调整 IPAdapter 的强度为 0.7

图片

然后将输入的参考图像改为两张,可以看到输出的结果,虽然有细节上的变化,但是大致的构图和颜色是不变的。这是因为我们输入的参考图或多或少都表现出了相同的概念,红色的衣服,红色的头发等

图片

不难发现在使用 IPAdapter 时,提供相同元素的参考输入是没有意义的。因此我们在增加输入参考图像时,要考虑我们想要在结果图像中添加什么。

比如下面的,我们在输入的参考图中添加了一张蝴蝶背景的照片。可以看到输出结果图像发生很好的变化效果。

图片

7 ip-adapter-plus-face_sd15 模型

该模型是专门训练用来参考脸部的模型的,它会尽可能描述脸部的特征,眉毛形状、头发颜色等,来生成相似的脸部,因此我们输入的参考图需要尽量的聚焦于脸部。

因为只参考了脸部,所以我们需要输入提示词来描述生成图像的其他信息。

我们传入一张人脸照片,并输入提示词 A fairy woman wearing a long dress, with a heroic posture like a movie, dramatic lighting, close-up 一个穿着长裙的精灵女性,电影般的英雄姿势,戏剧性的灯光,特写

图片

8 SDXL 模型

接下来看 IPAdapter 在 SDXL 大模型的使用情况如何

将我们的 ipadapter 大模型选择为 ip-adapter_sdxl.safetensors,并选择适用于 SDXl 的 CLIP 视觉模型。

通常情况下,SDXL 对原图像有更高的参考性。

图片

图片

我们再来看下 ip-adapter_sdxl_vit-h.safetensors的效果,注意带 vit-h 的模型需要使用适用于 sd15 的 CLIP 视觉模型。最后生成的结果一言难尽!!

图片

图片

最后看下SDXL的脸部参考模型 ip-adapter-plus-face_sdxl_vit-h.safetensors 的效果如何。

效果也不是很好,事实上,原始的 IPAdapter 模型都是会参考原图像的风格的,面部模型只是更多的参考面部特征,生成的结果和原图的面部也不是很像,后续会讲到的 insightfaceinstantID 有更好的效果。

图片

图片

9 IPadapter 应用图生图

我们输入一张宇航员的图像作为图生图的底图,将降噪幅度选择为 0.35。

图片

图片

然后输入提示词 A woman wearing a spacesuit in space,减少 IPAdaper 的强度到 0.7 再看下结果

图片

图片

10 ControlNet

我们还可以在控制图像构图的情况下,增加 IPAdaper 的参考。

下面我们使用 Canny 来控制图像的构图看下生成的图像结果。

生成的结果保留构图的同时,也一定程度上参考了 IPAdaper 输入图像的风格。

图片

图片

11 IPAdaper 应用放大图像

这里我们来对比下在重绘放大时,使用 IPAdaper 参考和不使用的差异。我们将原图像放大两倍后,采用0.5的去噪强度进行重绘。

图片

明显可以看到使用了 IPA 后的放大图像是更像原图的,不使用IPA则更偏向于模型。

图片

12 Embedding 嵌入组

通常在基础工作流中,我们加载 CLIP 视觉模型后会占用我们显存,我们希望能够编码一次后就可以卸载 CLIP 模型。

这时候我们可以将 CLIP 视觉模型处理后数据保存为 Embedding,后续就可以用直接使用而降低显存了。

图片

在 CLIP 模型一直在的时候,显存大概占用 5G 左右。

图片

这里主要使用到以下两个两个新节点:

1)IPAdapter Encode(IPAdapter 编码)

作用:将输入图像经 CLIP 视觉编码后输出 embeddings。

输入:

  • IPAdaper:接受 IPAdapter 模型

  • image:接受图像输入

  • mask:接受图像遮罩输入

  • clip_vision:接受 CLIP 视觉模型输入

参数:

  • weight:控制强度

输出:

  • pos_embed:正向嵌入组

  • neg_embed:反向嵌入组

2)IPAdapter Embeds(应用IPAdapter(嵌入组))

作用:和 IPAdapter Advanced(应用IPAdapter(高级))一样,不过使用的是正反向接受的是 pos_embed 和 neg_embed 的输入。

插件中还提供了保存 Embeding 的节点,后续可以直接使用保存的 Embbeding 文件,而不用再加载图像和 CLIP 模型,节省显存消耗。

图片

其主要使用到了 IPAdapter Save Embeds(保存嵌入组) 节点来保存 Embedding 文件,其文件保存路径为 ComfyUI 的 output 目录下。

图片

然后将保存的 Embedding 文件放到 ComfyUI 的 input 目录下。使用 IPAdaper Load Embeds(读取嵌入组)节点加载Embeddings。

图片

可以看到直接使用 Embedding 的情况下,显存占用 4G 左右,节省了 1G 左右的显存。并且你还可以直接将 Embedding 文件发送给其他人使用。

图片

 

为了帮助大家更好地掌握 ComfyUI,我在去年花了几个月的时间,撰写并录制了一套ComfyUI的基础教程,共六篇。这套教程详细介绍了选择ComfyUI的理由、其优缺点、下载安装方法、模型与插件的安装、工作流节点和底层逻辑详解、遮罩修改重绘/Inpenting模块以及SDXL工作流手把手搭建。

由于篇幅原因,本文精选几个章节,详细版点击下方卡片免费领取

 

一、ComfyUI配置指南

  • 报错指南

  • 环境配置

  • 脚本更新

  • 后记

  • .......

img

二、ComfyUI基础入门

  • 软件安装篇

  • 插件安装篇

  • ......

img

三、 ComfyUI工作流节点/底层逻辑详解

  • ComfyUI 基础概念理解

  • Stable diffusion 工作原理

  • 工作流底层逻辑

  • 必备插件补全

  • ......

img

四、ComfyUI节点技巧进阶/多模型串联

  • 节点进阶详解

  • 提词技巧精通

  • 多模型节点串联

  • ......

img

五、ComfyUI遮罩修改重绘/Inpenting模块详解

  • 图像分辨率

  • 姿势

  • ......

img

六、ComfyUI超实用SDXL工作流手把手搭建

  • Refined模型

  • SDXL风格化提示词

  • SDXL工作流搭建

  • ......

img

由于篇幅原因,本文精选几个章节,详细版点击下方卡片免费领取

img

 

这篇关于ComfyUI 中你不得不了解的插件,IPAdapter 基础的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/998259

相关文章

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

C#中lock关键字的使用小结

《C#中lock关键字的使用小结》在C#中,lock关键字用于确保当一个线程位于给定实例的代码块中时,其他线程无法访问同一实例的该代码块,下面就来介绍一下lock关键字的使用... 目录使用方式工作原理注意事项示例代码为什么不能lock值类型在C#中,lock关键字用于确保当一个线程位于给定实例的代码块中时

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND

C# $字符串插值的使用

《C#$字符串插值的使用》本文介绍了C#中的字符串插值功能,详细介绍了使用$符号的实现方式,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录$ 字符使用方式创建内插字符串包含不同的数据类型控制内插表达式的格式控制内插表达式的对齐方式内插表达式中使用转义序列内插表达式中使用

flask库中sessions.py的使用小结

《flask库中sessions.py的使用小结》在Flask中Session是一种用于在不同请求之间存储用户数据的机制,Session默认是基于客户端Cookie的,但数据会经过加密签名,防止篡改,... 目录1. Flask Session 的基本使用(1) 启用 Session(2) 存储和读取 Se

Java Thread中join方法使用举例详解

《JavaThread中join方法使用举例详解》JavaThread中join()方法主要是让调用改方法的thread完成run方法里面的东西后,在执行join()方法后面的代码,这篇文章主要介绍... 目录前言1.join()方法的定义和作用2.join()方法的三个重载版本3.join()方法的工作原

Spring AI使用tool Calling和MCP的示例详解

《SpringAI使用toolCalling和MCP的示例详解》SpringAI1.0.0.M6引入ToolCalling与MCP协议,提升AI与工具交互的扩展性与标准化,支持信息检索、行动执行等... 目录深入探索 Spring AI聊天接口示例Function CallingMCPSTDIOSSE结束语