ComfyUI基础节点IPAdapter
2.ComfyUI基础节点IPAdapter
本节主要介绍ComfyUI中IPAdapter节点的用法。
2.3. Ipadapter
2.3.1. Ipadapter简介
Ipadapter是一种利用图像提示生成图像的方法,能够迁移已有图片风格、结构等到生成图片上。IP-Adapter的关键设计是解耦的交叉注意力机制,将交叉注意力层分离为文本特征和图像特征,实现了图像提示的能力。
它与SD图生图的区别在于,SD图生图相当于将参考图进行VAE编码,使整个扩散模型的去噪过程基于该图像进行,如果去噪程度低,就会与参考图越接近,去噪程度高则会与参考图无关。Ipadapter图生图的原理是,将扩散模型中的交叉注意力层解耦成文本和图像特征,直接新增了一个交叉注意力层引入参考图特征,从而让生成图像学习参考图特征,而不是直接基于参考图进行去噪。
举例:使用提示词:正向:an american man,realistic,best quality,face close up反向:blurry,worse quality;参考图像如下。
使用SD图生图,使用不同的denoise去噪程度,获得的结果如下。
使用ipadapter进行参考图风格迁移,使用不同的参考图强度,获得的结果如下。
对比可以看出,SD图生图在原图的基础上进行改动;而ipadapter是在生成图像的过程中,逐渐学习参考图像的风格。整体来说,使用ipadapter的图像效果通常更自然,可扩展性也更高。
2.3.2. Ipadapter工作流
节点及模型下载:https://github.com/cubiq/ComfyUI_IPAdapter_plus
2.3.2.1. 基本使用方法
基本使用方法需要三个节点,Ipdapter Advanced用于应用Ipadapter,Ipadapter Unified Loader 用于加载相关的模型,load image节点上传参考图像。然后通过model连接到Load checkpoint和ksmapler之间,实现ipadapter加入基础的文生图工作流。7-1 ipadapter基础图生图(工作流见附件)。
在Ipadapter Unified Loader中,可以选择不同的参数组合(注意与大模型型号保持一致),能够实现强参考到弱参考,或者换脸的操作(需要下载好对应的CLIP等模型放在对应文件夹,参考https://github.com/cubiq/ComfyUI_IPAdapter_plus网页)。
在Ipdapter Advanced节点中,可以控制参考图像的作用方式、时间等(如下左图)。Weight表示参考图像的权重,权重越大,生成图像越接近参考图。Start_at和end_at表示在整个生成过程0-1中,ipadapter作用的时机,可以根据需求调试。比如实验中发现,如果仅希望参考图片细节,将start_at参数调大会有更好的效果。在Ipdapter Advanced节点中,可以控制参考图像的作用方式、时间等(如下左图)。
在weight_type选项中(如上右图),可以看到有多种权重作用的方式。通常情况下,linear是效果最强的,参考图像作用随着生成过程呈线性关系,ease in和ease out分别是在开始时强调、在将要结束时强调。可以根据不同的需求进行选择。Styler transfer仅参考图像风格,composition仅参考图像结构。需要注意的是,目前(2024年6月),style transfer及之后的选项仅支持SDXL型号的模型。
2.3.2.2. 换脸
下载必要的模型之后,因为Ipadapter换脸使用了insightface库,所以需要在环境中手动配置insightface环境。推荐根据自己的python版本,下载insightface的whl(3.10,3.11)文件到\python_embeded文件夹,然后运行:
python -m pip install -U pip
python.exe -m pip install insightface-0.7.3-cp311-cp311-win_amd64.whl
IPAdapter换脸工作流结合了图生图技术、IPAdapter节点的技术,同时还用到了给图片添加Mask的方法(如下图)。
换脸的IPAdapter实现主要用到4个节点,IPAdapter FaceID 、IPAdapter Unified Loader FaceID、IPAdapter InsightFace Loader、Load Image,4个节点如下图。
可以通过Model连接到基础文生图模块中,为了保证与原图的相似性,还增加了set latent noise mask模块。
- 在VAE Encode后面增加Set Latent Noise Mask节点,连接LATENT和samples(如下图)
- 将加载原图的Load image的MASK连到Set Latent Noise Mask节点的mask上
- Set Latent Noise Mask节点的LATENT连接到Ksampler
最终实现仅仅换脸的操作:
完整IPAdapter换脸工作流参考7-2 ipadapter换脸(见附件)。
2.3.2.3 IPAdapter分区域遮罩
IPAdapter可以通过遮罩的方式,在生成一张图片时,实现指定不同区域参考不同图片。可以参考Openart或esheep网站链接进行深入理解。
- https://openart.ai/workflows/-/-/F2zThOrGNJ1VayEXn6zf
- https://www.esheep.com/app/10687?utm_source=app_tab
2.3.3附件
提及的ComfyUI工作流已经全部放入,均为基础工作流,欢迎交流:
通过百度网盘分享的文件:ComfyUI学习工作流
链接:https://pan.baidu.com/s/1LRnj56uy1ZLkRuFaC4JLMw
提取码:6vjr