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

相关文章

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意