之前发表了IPAdapater FaceID的一些文章和视频,很多朋友很感兴趣,但是在安装和使用上却出现了一些问题。今天我就把安装过程描述一下,并针对常见的问题做一些总结,希望能帮助到各位。
IPAdapater FaceID和IPAdapater FaceID Plus的介绍文章可以参考我的前两篇文章。
改变自己 改变人生:让换脸和角色一致性更简单-最新IPAdapter FaceID模型介绍31 赞同 · 3 评论文章
改变自己 改变人生:换脸一致性模型再升级–IPAdapter FaceID Plus版推出13 赞同 · 3 评论文章
目前我看到只有C++omfyUI支持的节点,WEBUI我最近没有用,应该也会很快推出的。
1.ComfyUI_IPAdapter_plus节点的安装
目前ComfyUI_IPAdapter_plus节点支持IPAdapater FaceID和IPAdapater FaceID Plus最新模型,也是SD社区最快支持这两个模型的项目,大家可以通过这个项目抢先体验。爱用一键安装包的朋友可以等最新的安装包更新,也可以在安装包里面自己安装节点。
https://github.com/cubiq/ComfyUI_IPAdapter_plusgithub.com/cubiq/ComfyUI_IPAdapter_plus
ComfyUI_IPAdapter_plus-main
2.1M
·
百度网盘
1)模型下载
相关模型可以在huggingface上下载:
h94/IP-Adapter-FaceID · Hugging Facehuggingface.co/h94/IP-Adapter-FaceID
一定要注意模型和lora要匹配。在comfyui节点配置时切记。
也可以百度盘下载:链接:https://pan.baidu.com/s/181VmYi4X1hFMGYqnXP5TbA?pwd=zw0t
提取码:zw0t
FaceID 需要 insightface
,你需要在ComfyUI环境中安装它们。我在后面单独一个章节讨论这个问题。主要参考这个issue获取帮助。
当满足依赖后,你需要:
SD 版本 | IPadapter | Img encoder | Lora |
---|---|---|---|
v1.5 | FaceID | (not used¹) | FaceID Lora |
v1.5 | FaceID Plus | ViT-H | FaceID Plus Lora |
注意:基础版的FaceID模型不使用CLIP vision编码器。应将ipadapter模型放入ComfyUI/models/ipadapter
目录下(如果不存在则创建该目录)。也可以在extra_model_paths.yaml
文件中添加一个ipadapter
条目,使用任何自定义的位置。下面是例子:注意我机器上有好几个版本的comfyUI公用一套模型库。
loras模型需要放在 ComfyUI/models/loras/
目录下。
Plus版本需要ViT-H图像编码器,就是大家经常说的clip-vision。(clip-vision)我也在后面单独再说明一次。
目前还没有SDXL模型。
2)节点安装
已经安装过的用户,可以通过manager直接安装,国内被墙的客户还可以以下三种方式重新安装
- 直接在custome-node\ComfyUI_IPAdapter_plus文件夹下使用git pull 命令更新
- 把custome-node下的ComfyUI_IPAdapter_plus删除,注意以前下载的模型文件的备份或者转移。
- 在github网站下载整个网站的包,或者使用我共享的文件,下载后改名为ComfyUI_IPAdapter_plus-main.zip解压到customer-node下,文件夹名字可以改为ComfyUI_IPAdapter_plus,也可以不改,都不会影响节点的加载。但是注意不能两个同时存在,会有冲突。
3)更新comfyUI和依赖包
这一步最好执行一下,避免后续安装过程的错误。
4)insightface的安装
如果你已经安装过Reactor或者其它使用过insightface的节点,那么安装就比较简单,但如果你是第一次安装,恭喜你,又要经历一个愉快(痛苦)的安装过程,尤其是不懂开发,命令行使用的用户。
运行update目录下的更新bat脚本,确保安装最新版comfy,不要仅仅依赖管理器,即使它说已经全部更新了,也可能不是真的
- 确保安装了最新版的ipadapter扩展
- 如果有的话,从ipadapter扩展和reactor的__pycache__目录中删除缓存文件,以防万一
- 升级pip:
python_embeded\python.exe -m pip install -U pip
- 安装insightface:
python_embeded\python.exe -m pip install insightface
在Windows上编译insightface需要安装Visual Studio或VS C++构建工具中的“使用C++进行桌面开发”。
如果使用CUDA,确保安装了CUDA,CUDNN这两个关键的包,安装方法可以百度。
另外,可以从这里下载预编译版本。根据Python版本选择文件,cp310
适用于Python 3.10,cp311
适用于Python 3.11。要知道你的Python版本,使用:python_embeded\python.exe -V
https://github.com/Gourieff/Assets/blob/main/Insightface/insightface-0.7.3-cp310-cp310-win_amd64.whl
https://github.com/Gourieff/Assets/blob/main/Insightface/insightface-0.7.3-cp311-cp311-win_amd64.whl
insightface-0.7.3-cp310-cp310-win_amd64.whl
841.7K
·
百度网盘
insightface-0.7.3-cp311-cp311-win_amd64.whl
871.8K
·
百度网盘
然后可以使用python_embeded\python.exe -m pip install insightface-0.7.3-cp310-cp310-win_amd64.whl
或针对Python 3.11使用cp311
来安装。
如果之前已经安装了insightface,可以使用python_embeded\python.exe -m pip uninstall insightface
移除后再重复上述过程。腾讯实验室选择了insightface作为提供商,而insightface确实很难安装。不记得onnx是否会自动安装以防万一,你可以试着手动安装onnxruntime
和onnxruntime-gpu
(如果需要的话)。
另外要注意的是,还有个buffalo的模型包需要下载
https://github.com/deepinsight/insightface/releases/download/v0.7/buffalo_l.zip
把下载的压缩包解压到ComfyUI\models\insightface\models\buffalo_l。如果你没有这个模型文件,也不能正常工作。
5)buffalo_l.zip的下载和安装
正常情况下buffalo应该是自动下载的,但有些用户反映自动下载失败,各位可以
https://github.com/deepinsight/insightface/releases/download/v0.7/buffalo_l.zip
解压文件到 ComfyUI\models\insightface\models\buffalo_l路径下,正常应该有这五个模型文件。
6)onnx和onnxruntime,onnxruntime-gpu的安装
安装命令如下:
python_embeded\python.exe -m pip install onnx onnxruntime onnxruntime-gpu
一定要安装好CUDA,cuDNN。RT则根据实际情况来自行判断。
window11系统CUDA、cuDNN 安装以及环境变量配置_cuda环境变量怎么设置_QuietNightThought的博客-CSDN博客
检查这五个动态链接库文件
- cublas64_11.dll –> CUDA 11.x
- cudart64_110.dll –> CUDA 11.x
- cudnn64_8.dll –> cuDNN 8.x
- nvinfer_plugin.dll –> NVIDIA TensorRT
- nvinfer.dll –> NVIDIA TensorRT
可以看到我的环境TensorRT的两个动态连接库找不到
(sd160) C:\DEV\sd160\stable-diffusion-webui>where cublas64_11.dll
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin\cublas64_11.dll
(sd160) C:\DEV\sd160\stable-diffusion-webui>where cudart64_110.dll
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin\cudart64_110.dll
(sd160) C:\DEV\sd160\stable-diffusion-webui>where cudnn64_8.dll
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin\cudnn64_8.dll
(sd160) C:\DEV\sd160\stable-diffusion-webui>where nvinfer_plugin.dll
信息: 用提供的模式无法找到文件。
(sd160) C:\DEV\sd160\stable-diffusion-webui>where nvinfer.dll
信息: 用提供的模式无法找到文件。
重新下载tensorRT,这是一个打包的文件集,没有安装程序,把对应的文件拷贝到对应路径下就可以
核心重点:将TensorRT-8.6.1.6\include中.h头文件 copy 到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\include 将TensorRT-8.6.1.6\lib 中所有lib文件 copy 到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\lib\x64 将TensorRT-8.6.1.6\lib 中所有dll文件copy 到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin
再次执行命令
(sd160) C:\DEV\sd160\stable-diffusion-webui>where nvinfer_plugin.dll
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin\nvinfer_plugin.dll
(sd160) C:\DEV\sd160\stable-diffusion-webui>where nvinfer.dll
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin\nvinfer.dll
因为有了动态连接库文件,理论上不需要重启,就可以用了。
有些时候还需要设置一个set CUDA_MODULE_LOADING=LAZY的环境变量
还有人说高版本的onnx会引起问题。会建议安装稳定的版本,比如
uninstall onnx 1.15.0 onnxruntime 1.16.3 onnxruntime-gpu 1.16.3 and instal version 1.14 for all
2.模型在ComfyUI的使用
安装节点后在节点路径下有三个示例流程,需要注意的是作者12月28日刚刚更新,27日的客户必须要重新更新才能使用最新的plus节点。
1)基础流程和节点
A节点,IPAdapterModelLoader节点,加载ip-adapter-faceid_sd15.bin模型,需要选择你在ComfyUI\models\ipadapter文件夹下模型文件
B节点,CLIPVisionLoader节点,加载ComfyUI\models\clip_vision的IMG encoder,这个模型只有两个1.5版本的VIT-H,XL版本的VIT-G,但是需要注意的是有一部分XL模型是基于1.5 encoder训练的,所以大部分时候都是选择小模型。
模型选错时会报如下错:
Error occurred when executing IPAdapterApply: mat1 and mat2 shapes cannot be multiplied (257×1664 and 1280×768) File “E:\DEV\ComfyUI_windows_portable\ComfyUI\execution.py”, line 153, in recursive_execute output_data, output_ui = get_output_data(obj, input_data_all)
C节点,InsightFaceLoader节点,主要是加载InsightFace模型的,三个模型目前效果差异感觉不大,当然如果你CPU不好就选CUDA
D节点,LoraLoaderModelOnly节点,加载对应Lora模型。
E节点,专门应用FaceID的IPAdapter应用节点。
第一例子使用后,后面两个流程其实也都可以跑起来了。
我自己做了一个基础模型和reactor节点比较的流程。打分的节点我自己写的,用的face++的脸部比较API(收费接口一分钱一次)。
后面又做了改进,可以把分值打在图片下方,方便对比。
3.常见问题
1) InsightFace is not installed! 错误
Window环境最常见的一个问题就是
IPAdapter: InsightFace is not installed! Install the missing dependencies if you wish to use FaceID models.
File “D:\ComfyUI_windows_portable\ComfyUI\execution.py”, line 153, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File “D:\ComfyUI_windows_portable\ComfyUI\execution.py”, line 83, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File “D:\ComfyUI_windows_portable\ComfyUI\execution.py”, line 76, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File “D:\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI_IPAdapter_plus\IPAdapterPlus.py”, line 459, in load_insight_face
raise Exception(‘IPAdapter: InsightFace is not installed! Install the missing dependencies if you wish to use FaceID models.’)
主要是insightface安装不成功,也有一种情况,在windows环境里面和现有的reactor冲突。我发现了一种解决方法,实测有效,但是项目作者本人并不推荐,因为修改了部分代码。
把ComfyUI_IPAdapter_plus\IPAdapterPlus.py 代码中,注释527-530行的from insightface.app import FaceAnalysis的四行代码,把from insightface.app import FaceAnalysis加到py文件的顶部。
2)clip vision模型选错
关于clip vision也就是IMG encoder的选择,大家看下面这个表格,记住只有一个ip-adapter-SDXL需要选择bigG模型, 或者带VIT-G后缀,其实也就两个IPA模型。
选错模型会报下面的错误,上面也提到过。
RuntimeError: mat1 and mat2 shapes cannot be multiplied (257×1664 and 1280×768)
3)onnxruntime无法加载
主要错误信息
LoadLibrary failed with error 126 ……onnxruntime_providers_tensorrt.dll
参考上面onnx的安装步骤。
4)与reactor节点共享问题
有用户反映,无法与reactor节点共同使用。我目前可以两个节点同时使用,建议尽量通过虚拟环境和conda,或者使用embedpython的 python -m pip方式安装各种包,减少包冲突的可能性。
5)module ‘torchvision.transforms’ has no attribute ‘ElasticTransform’
Error occurred when executing IPAdapterApply:
module ‘torchvision.transforms’ has no attribute ‘ElasticTransform’
File “D:\ComfyUI manxueban\ComfyUI\execution.py”, line 153, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File “D:\ComfyUI manxueban\ComfyUI\execution.py”, line 83, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File “D:\ComfyUI manxueban\ComfyUI\execution.py”, line 76, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File “D:\ComfyUI manxueban\ComfyUI\custom_nodes\ComfyUI_IPAdapter_plus\IPAdapterPlus.py”, line 620, in apply_ipadapter
neg_image = image_add_noise(image, noise) if noise > 0 else None
File “D:\ComfyUI manxueban\ComfyUI\custom_nodes\ComfyUI_IPAdapter_plus\IPAdapterPlus.py”, line 174, in image_add_noise
TT.ElasticTransform(alpha=75.0, sigma=noise*3.5), # shuffle the image
更新comfyUI和python包,在windows portable里面update文件夹下有一个脚本,可以执行一下。
4总结
ComfyUI_IPAdapter_plus体现了社区开源项目的特点,作者如果积极,更新很快,但是问题也多,需要使用者自己去学习和解决。不过甘蔗不能两头甜,愿意尝鲜的使用者也需要多付出一些代价。
大家使用中如果遇到问题,可以在评论区留言,我有空就帮大家看一下。要是特别着急需要解节点问题和使用问题的同学,可以尝试加我微信或者使用知乎的付费咨询,请别人喝一杯咖啡钱都不愿意出的朋友慎重考虑付费咨询,毕竟大家的时间都宝贵。微信号shuai851619。
另外最近我已经设计完成了一整套ComfyUI的学习课程,现在只开一对一辅导课,保证你学的都是干货,能应用到实际工作中,对ComfyUI的理解犹如张无忌“乾坤大挪移”练到第七层,有意的小伙伴可以来找我。