2025年—最新ComfyUI_修复面部与手部
在 WebUI 中,有个 ADetailer 插件可修复人物面部,只需点下相应选项即可。ComfyUI 中至今没有同款插件,但有几个替代。本篇分享其中两个我使用中觉得不错的面部修复插件,以及坏手的修复方法,仅限 AI 生图,真实照片的修复方法会另开一篇。
Impact-Pack
最基础的 FaceDetailer 用法很简单,效果明显,能满足大多数需求。虽比不过 WebUI 的 ADetailer 那般一个选项就可以搞定,但 ComfyUI 的修复面部方法让学习者明白其工作流程,对我们更好的理解 AI 及其运作原理非常有益。
另外,拥用同款节点的插件不止 Impact-Pack 这一个,但它是目前更新比较有保障的。
插件地址:
https://github.com/ltdrdata/ComfyUI-Impact-Pack
但是一个插件并不够,需要安装另一个同作者的插件来读取必要模型用:
https://github.com/ltdrdata/ComfyUI-Impact-Subpack
安装好插件和必要文件后,还要下载一些模型:
https://hf-mirror.com/Bingsu/adetailer/tree/main
△ 将这些模型放入 .\ComfyUI\models\ultralytics\bbox
https://hf-mirror.com/ybelkada/segment-anything/tree/main/checkpoints
△ 将这些模型放入 .\ComfyUI\models\sams
基础工作流下载:
https://www.alipan.com/s/GNUhdyuf6ux
https://pan.quark.cn/s/84a1149ea667
FaceTools
该插件修复面部的步骤分的更详细,虽然连的节点较多,但也较完整的展现了面部修复是怎样的一个过程。
FaceTools 插件文件中带有一个较为复杂的工作流,一般使用中是不会用到那么多步骤的。需要注意的是,此种复面部的方法需要使用 ControlNet,否则可能会造成重绘后的人像面部边缘融合不佳。自带工作流使用的是 Advanced-ControlNet 插件的节点,但改为 ComfyUI 自带的 ContrlNet 也一样用。
插件下载:
https://github.com/dchatel/comfyui_facetools
landmarks 模型下载:
https://hf-mirror.com/bluefoxcreation/FaceAlignment/tree/main
△ 将这些模型放入 .\ComfyUI\models\landmarks
bisenet 模型下载,该模型原址是谷歌网盘,我上传到阿里和夸克网盘:
https://www.alipan.com/s/j7d9LEHUqFB
https://pan.quark.cn/s/1079203900f3
△ 将该模型放入 .\ComfyUI\models\bisenet
另外在使用 CropFaces 节点的 jonathandinu 时,需要从 huggingface 缓存模型。如果连不上 huggingface,可以查看我的另一篇文章来将 huggingface 的连接导向其在国内的镜像网。
基础工作流分享:
https://www.alipan.com/s/GNUhdyuf6ux
https://pan.quark.cn/s/84a1149ea667
做个 FaceDetailer 与 FaceTools 的对比图,个人感觉 FaceTools 效果要好于 FaceDetailer。例图用哩布上下的一个免费模型生成的,从我接触 SD 之初的使用经历来看,那里的很多模型跑出坏图的几率极高,非常适合做反例。
另外多说几句,我是真不知道哩布上那些例图精美的模型除了在线生图外怎样才能跑出效果相近的图。好在上面的模型除了早期的几乎都要付费才能下载了,也免去了我尝试的想法,倒省了不少时间。
目前的文生图模型中,人物手部崩坏的几率极高,甚至超过了面部崩坏。虽然有负向的 Embedding 可以一定程度上改善手部状况,但其效果其实并不理想。目前比较好的方法是使用 ControlNet 和手部修复类的 Lora,本节来做几个演示。
ControlNet-HandRefiner
此方法需要使用 ControlNet:
https://github.com/Fannovel16/comfyui_controlnet_aux
在生成图片后,通过 HandeRefiner 预处理器识别图片中的手部,并进行正确修复,之后通过 control_sd15_inpaint_depth_hand 对手部进行内部重绘。ContrlNet 的权重最好在 0.4-0.8 之间。
在图片中手部比较明显的情况下,这种方法可以进行比较好的修复。如果原图中手部不太明显,或者崩坏的严重,就可能会识别不到。
在初次使用时会自动下载预处理模型,如果你的 ComfyUI 连不上 huggingface,会导致下载失败。可以查看我的另一篇文章,讲解如何在 ComfyUI 中连接 huggingface 的镜像网。你也可以使用 huggingface 的镜像网手动下载这些预处理文件到 .\ComfyUI\custom_nodes\comfyui_controlnet_aux\ckpts\hr16\ControlNet-HandRefiner-pruned 目录下。
huggingface 镜像网:
www.hf-mirror.com
另外,目前 ControlNet 插件用于对手部进行预处理的节点是有漏洞的,如果出现以下报错,则需要对相关节点的代码进行修改:
cannot import name 'BertConfig' from 'custom_mesh_graphormer.modeling.bert.modeling_bert'
需要修改的文件:custom_nodes/comfyui_controlnet_aux/src/custom_mesh_graphormer/modeling/bert/modeling_bert.py
将其内容替换并保存:
# from transformers.models.bert.modeling_bert import *
from transformers.models.bert import modeling_bertfor symbol in dir(modeling_bert):if not symbol.startswith("_"):globals()[symbol] = getattr(modeling_bert, symbol)
此问题出现已久,插件的开发者们也知道,但似乎不太想继续维护了。
Lora修复手部
平日逛模型网站时遇到过几个修复手部的 Lora,使用下来,其效果也还过的去,相比 Embedding 好多了。
例图中使用了 3 个修手 Lora作对比,这些 Lora 在修手的同时,或多或少的对原图造成了一些的改变。Lora 修手不如 ContrlNet 效果稳定,还要看运气,也有可能出来的图崩的更严重。
需要注意的是,如果基础模型太差,那么用了这些修复手段也很难有理想效果。最好的办法就是用比较优秀的模型,比如上面的例图中,人物脸部已经很不错了,手部虽依旧不行,但其崩坏程度也易于修复。
Lora 下载:
https://www.alipan.com/s/4evtjH5i3wL
https://pan.quark.cn/s/a51e67d34219
EnvyBetterHandsLoCon: 关键词 nicehands; 权重 1。
RealHands_v2: 关键词 realhands; 权重 0.4-0.7。
GoodHands_0.1: 关键词 good hands。
上面那些方法均是针对 SD1.5 的,SDXL 的图片效果已经远优于 SD1.5,如果使用的是精心训练的大模型,坏手率也会有较大的降低。ControlNet 修手方法也可以修复 SDXL 生成的图片,但要用 SD1.5 的模型,使用 ComfyUI 就是要灵活。
此处也分享一个用于 SDXL 的修手 Lora,但其训练数据小,效果不能保证。无提示词,只能连接到负提示词中:
https://www.alipan.com/s/X58kiHjoRQW
https://pan.quark.cn/s/d87bc706