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

相关文章

Java Spring 中 @PostConstruct 注解使用原理及常见场景

《JavaSpring中@PostConstruct注解使用原理及常见场景》在JavaSpring中,@PostConstruct注解是一个非常实用的功能,它允许开发者在Spring容器完全初... 目录一、@PostConstruct 注解概述二、@PostConstruct 注解的基本使用2.1 基本代

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

Pandas透视表(Pivot Table)的具体使用

《Pandas透视表(PivotTable)的具体使用》透视表用于在数据分析和处理过程中进行数据重塑和汇总,本文就来介绍一下Pandas透视表(PivotTable)的具体使用,感兴趣的可以了解一下... 目录前言什么是透视表?使用步骤1. 引入必要的库2. 读取数据3. 创建透视表4. 查看透视表总结前言

Python 交互式可视化的利器Bokeh的使用

《Python交互式可视化的利器Bokeh的使用》Bokeh是一个专注于Web端交互式数据可视化的Python库,本文主要介绍了Python交互式可视化的利器Bokeh的使用,具有一定的参考价值,感... 目录1. Bokeh 简介1.1 为什么选择 Bokeh1.2 安装与环境配置2. Bokeh 基础2

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Pandas使用AdaBoost进行分类的实现

《Pandas使用AdaBoost进行分类的实现》Pandas和AdaBoost分类算法,可以高效地进行数据预处理和分类任务,本文主要介绍了Pandas使用AdaBoost进行分类的实现,具有一定的参... 目录什么是 AdaBoost?使用 AdaBoost 的步骤安装必要的库步骤一:数据准备步骤二:模型

使用Pandas进行均值填充的实现

《使用Pandas进行均值填充的实现》缺失数据(NaN值)是一个常见的问题,我们可以通过多种方法来处理缺失数据,其中一种常用的方法是均值填充,本文主要介绍了使用Pandas进行均值填充的实现,感兴趣的... 目录什么是均值填充?为什么选择均值填充?均值填充的步骤实际代码示例总结在数据分析和处理过程中,缺失数