• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go

1327522.jpg

Ridley

GF  2024-04-26 00:12
(空的)

[comfyui] 一键AI去衣工作流教程(三)—— 肤色与修复(完结篇)


本教程系列最终为了在comfyui里实现“一键AI去衣”工作流,参考https://bbs.imoutolove.me/read.php?tid-2157478.html

在阅读本帖前请务必先阅读基础篇教程:https://bbs.imoutolove.me/read.php?tid-2160293.html

第二篇——自动识别:https://bbs.imoutolove.me/read.php?tid-2164519.html

本篇教程为第三篇——肤色与修复,主要介绍如何在comfyui中实现蒙版肤色自动提取,以及修复局部重绘后的图像细节。

正式版工作流:https://bbs.imoutolove.me/read.php?tid-2180363.html

同时,根据之前评论反馈的问题,我在新的工作流中进行了一些修正,主要修改如下:

1. 更换了DensePose预处理器节点,不再需要翻墙才能正常运行
2. 修复了{加载图像}默认生成错误遮罩,不再需要手动清除
3. 根据导入图像的尺寸自动进行缩放(小图像则不缩放),不再需要手动设置缩放系数


肤色提取

在之前的工作流中,皮肤蒙版的颜色需要我们手动输入,那么如何实现肤色自动提取?

通常情况下我们手动提取肤色需要借助额外的软件,对人像中皮肤裸露部位进行颜色吸取,因此我首先想到的是靠算法对图像中的皮肤像素取一个平均或者中位数。但如何让模型识别出皮肤像素呢?

记得在之前的工作流中,我们得到了人物的面部遮罩,虽然不能保证万无一失,但我们导入的图片中人物面部大概率是裸露的(不会有人上传一个假面骑士然后去衣吧)。如此一来我们可以对面部遮罩内的像素进行进一步筛选,我的方法是调用WAS节点的{选择颜色},先筛选出大致肤色颜色范围,然后对这些像素的颜色取均值,如图



这里我对节点进行了一些修改,让节点能够直接输出RGB颜色数值,同时我又对像素添加了可调节选项,使得最终输出的颜色只取red值最高的n%(节点修改文件我会在后面分享),最终的筛选结果参考如下



除此以外如果你还有其他更可靠的自动提取肤色的方法,欢迎分享。

修复

即便你的设置再合理,在局部重绘之后图像仍旧大概率会出现颜色与纹理与遮罩外原图不匹配,甚至有残留色块,因此一个全局重绘以修复图像是不可或缺的,一个最简单的方法就是将图像以低重绘幅度再采样一遍(不要直接传递latent,之前的噪波遮罩还在)



如此一来虽然会细微改变原图,但可以有效修复重绘细节。

高清修复

如果你原先导入的图像分辨率很高,但经过缩放后丢失了大量细节,你或许想将重绘后的图像再放大回原来的分辨率而不是简单的修复。

你可能会想到使用各种图像高清放大插件,但是直接对重绘后图像进行高清放大只会增加不合理的细节,最终结果跟原图想去甚远。

因此,你可以将局部重绘区域经过简单缩放后再与原图合并,再对合并后图像进行全局重绘,这样有效避免了图像放大给非重绘区域带来不必要细节。如图,我用{SD放大(不放大)}节点对合并后图像进行了分块重绘,以避免显存爆炸,同时还串联了新的controlnet节点保证一致性(不要用controlnet tile,tile可能会将要修复的错误色块保留下来)。



当然,如果你的原图实在太高清(>4K),可能不太适合直接放大回原分辨率,除了过于耗时之外,分块放大时每个小分块里可能没有有半点图像细节,模型压根不知道要采样什么东西。


伏笔回收

值得注意的是我在全局修复重绘这一块也使用了controlnet inpaint,它的作用是尽量保证遮罩外区域不变,如此一来即便是全局重绘,也不会过多改变包括人物面部在内的区域。

首先,inpainting大模型与controlnet inpaint功能兼容性很糟糕,两者一起使用可能导致图像崩坏。

在前面的局部重绘部分,你可以不依靠controlnet inpaint而是利用inpainting大模型达到近似效果,但是在全局重绘这里只能通过controlnet inpaint来控制不同区域的重绘幅度,这也是为什么我在基础篇教程里提到不建议使用inpainting后缀的大模型来进行局部重绘。


如此,我们终于实现了完整版的“一键AI去衣”工作流




工作流分享

此帖售价 3 SP币,已有 106 人购买
若发现会员采用欺骗的方法获取财富,请立刻举报,我们会对会员处以2-N倍的罚金,严重者封掉ID!

(默认忽略高清修复,右键节点组启用)

再提一嘴,我用的大模型是fantasticmix_k1,VAE是 vae-ft-mse-840000-ema-pruned。如果你想重绘二次元图像,注意使用跟原图效果相近的大模型。

除了正确安装基础篇里提到的节点外, 为了实现肤色自动提取,你还需要将以下代码覆盖到\custom_nodes\was-node-suite-comfyui\WAS_Node_Suite.py的"class WAS_Image_Select_Color:"类里(注意如果你更新了该节点,需要重新覆盖)

此帖售价 0 SP币,已有 106 人购买
若发现会员采用欺骗的方法获取财富,请立刻举报,我们会对会员处以2-N倍的罚金,严重者封掉ID!


如果你不会或者懒得覆盖,就直接用无肤色提取版的工作流吧。


这次让我看看评论区还有什么bug

破败之王


none.gif

blyatman

马克一下,大佬能不能教一下怎么把视频换衣的流程串进来?webui可以批量上传蒙版,一帧一帧修改,用这个更好实现吧

1327522.jpg

Ridley

B3F  2024-04-26 01:20
(空的)

回 2楼(blyatman) 的帖子

我不是没考虑过,但是一方面重绘幅度太高了,视频重绘效果好不到哪里去,另一方面本地压根跑不动,中等显存一帧就要跑两分钟

none.gif

假甲

卡密!

none.gif

Mni

B5F  2024-04-26 20:51
(快乐炼丹人)
图片:
佬 请问一下这个缺失的节点是什么插件的 我用comfyui manager没找到 你在教程1要求安装的所有插件我都装了

1327522.jpg

Ridley

B6F  2024-04-26 21:00
(空的)

回 5楼(Mni) 的帖子

啊这,这是Alek节点的{预览文本},就看看缩放系数,没啥用你直接删了就行

none.gif

Mni

B7F  2024-04-26 22:26
(快乐炼丹人)
佬 请问能不能稍微优化一下 释放显存啥的 我这个8G显存跑起来真的有点勉强

1327522.jpg

Ridley

B8F  2024-04-26 22:59
(空的)

回 7楼(Mni) 的帖子

8G肯定没问题,comfyui本身优点就是会自动释放显存,第一次运行因为要加载模型到内存会慢点,加载完就好了。
我现在主要担心6G以下显存可能会有爆

none.gif

Mni

B9F  2024-04-26 23:27
(快乐炼丹人)
我跑的时候显存几乎是顶格跑的 重绘的时候都能跑到十几s/it   不知道是不是输入的问题 我输入的图片是1024x1536大小的

none.gif

Mni

B10F  2024-04-26 23:28
(快乐炼丹人)
然后我留意了一下后台有lowvram的字样 是不是comfyui自动调用了低显存模式

1327522.jpg

Ridley

B11F  2024-04-26 23:35
(空的)

回 10楼(Mni) 的帖子

输入图像多大都无所谓,都会缩放成统一大小,你手动改成medvram试试

1315934.gif

jesse

B12F  2024-04-27 02:55
(.........)
报错了老哥      


1327522.jpg

Ridley

B13F  2024-04-27 03:22
(空的)

回 12楼(jesse) 的帖子

你直接用无肤色提取版的工作流吧

none.gif

391f0ba0

大佬这个女的模型叫什么 真好看

none.gif

asnnn

感谢分享

1315831.jpg

绘梨衣酱

回 14楼(391f0ba0) 的帖子


none.gif

黑话~

B17F  2024-04-27 20:05
(真的吗)
楼主您好,您的自动工作流很好用,但是高清修复的默认设置是否有些问题?


这是不用高清修复出的图,身体方面没有太大问题,但是脸会跟原来的完全不同。



这是高清修复后出的图,脸和原图一样,但是身体方面会变成很诡异的一块一块的。



这是高清修复模块的设置,请问是需要改动哪些设置吗?比如将种子数设为-1?
方便的话麻烦您解惑了,谢谢。

1327522.jpg

Ridley

B18F  2024-04-27 21:19
(空的)

回 17楼(黑话~) 的帖子

是不是你原图太大了。
如果是这样,还有一个方法。将修复后的图而不是局部重绘后的图导入高清修复,然后再多串联一个controlnet tile进行高清修复。
这样虽然耗时但应该可以有效解决你的问题。

none.gif

黑话~

B19F  2024-04-28 00:53
(真的吗)

回 18楼(Ridley) 的帖子

好的 多谢您的回答 我明天有空再试一下看看

none.gif

391f0ba0

大佬 用的无肤色版 点加入队列报错
Error occurred when executing SAMModelLoader (segment anything):



File "G:\ComfyUI-aki-v1.3\execution.py", line 151, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File "G:\ComfyUI-aki-v1.3\execution.py", line 81, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File "G:\ComfyUI-aki-v1.3\execution.py", line 74, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File "G:\ComfyUI-aki-v1.3\custom_nodes\comfyui_segment_anything\node.py", line 269, in main
sam_model = load_sam_model(model_name)
File "G:\ComfyUI-aki-v1.3\custom_nodes\comfyui_segment_anything\node.py", line 80, in load_sam_model
sam_checkpoint_path = get_local_filepath(
File "G:\ComfyUI-aki-v1.3\custom_nodes\comfyui_segment_anything\node.py", line 111, in get_local_filepath
download_url_to_file(url, destination)
File "", line 28, in download_url_to_file_wrapper_inner
File "G:\ComfyUI-aki-v1.3\python\lib\site-packages\torch\hub.py", line 620, in download_url_to_file
u = urlopen(req)
File "G:\ComfyUI-aki-v1.3\python\lib\urllib\request.py", line 216, in urlopen
return opener.open(url, data, timeout)
File "G:\ComfyUI-aki-v1.3\python\lib\urllib\request.py", line 519, in open
response = self._open(req, data)
File "G:\ComfyUI-aki-v1.3\python\lib\urllib\request.py", line 536, in _open
result = self._call_chain(self.handle_open, protocol, protocol +
File "G:\ComfyUI-aki-v1.3\python\lib\urllib\request.py", line 496, in _call_chain
result = func(*args)
File "G:\ComfyUI-aki-v1.3\python\lib\urllib\request.py", line 1391, in https_open
return self.do_open(http.client.HTTPSConnection, req,
File "G:\ComfyUI-aki-v1.3\python\lib\urllib\request.py", line 1351, in do_open
raise URLError(err)

1327522.jpg

Ridley

B21F  2024-04-28 02:07
(空的)

回 20楼(391f0ba0) 的帖子

似乎是segment anyhing自动下载模型失败,可能是梯子问题?启动器是默认开启代理的,在设置里把代理关了试试。
https://github.com/storyicon/comfyui_segment_anything
或者手动下载模型到对应文件夹

0.gif

zsdletters

论坛竟然有这么硬核的帖子,感谢大佬,期待更多好贴

0.gif

zsdletters

回 20楼(391f0ba0) 的帖子

估计就是网络连通性问题,把启动器设置里面代理和后面那几个选项都开了试试,我遇到过,全走代理就好了

qweq


1744446.jpg

旺仔一号

B25F  2024-04-30 09:04
(20412268)
每次进行到aux预处理器的 depthanything就会报错
Error occurred when executing AIO_Preprocessor:

An error happened while trying to locate the file on the Hub and we cannot find the requested files in the local cache. Please check your connection and try again or make sure your Internet connection is on.

File "E:\BaiduNetdiskDownload\ComfyUI-aki-v1.3\ComfyUI-aki-v1.3\execution.py", line 152, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File "E:\BaiduNetdiskDownload\ComfyUI-aki-v1.3\ComfyUI-aki-v1.3\execution.py", line 82, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File "E:\BaiduNetdiskDownload\ComfyUI-aki-v1.3\ComfyUI-aki-v1.3\execution.py", line 75, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File "E:\BaiduNetdiskDownload\ComfyUI-aki-v1.3\ComfyUI-aki-v1.3\custom_nodes\comfyui_controlnet_aux\__init__.py", line 117, in execute
return getattr(aux_class(), aux_class.FUNCTION)(**params)
File "E:\BaiduNetdiskDownload\ComfyUI-aki-v1.3\ComfyUI-aki-v1.3\custom_nodes\comfyui_controlnet_aux\node_wrappers\depth_anything.py", line 19, in execute
model = DepthAnythingDetector.from_pretrained(filename=ckpt_name).to(model_management.get_torch_device())
File "E:\BaiduNetdiskDownload\ComfyUI-aki-v1.3\ComfyUI-aki-v1.3\custom_nodes\comfyui_controlnet_aux\src\controlnet_aux\depth_anything\__init__.py", line 40, in from_pretrained
model_path = custom_hf_download(pretrained_model_or_path, filename, subfolder="checkpoints", repo_type="space")
File "E:\BaiduNetdiskDownload\ComfyUI-aki-v1.3\ComfyUI-aki-v1.3\custom_nodes\comfyui_controlnet_aux\src\controlnet_aux\util.py", line 320, in custom_hf_download
model_path = hf_hub_download(repo_id=pretrained_model_or_path,
File "", line 52, in hf_hub_download_wrapper_inner
File "E:\BaiduNetdiskDownload\ComfyUI-aki-v1.3\ComfyUI-aki-v1.3\python\lib\site-packages\huggingface_hub\utils\_validators.py", line 118, in _inner_fn
return fn(*args, **kwargs)
File "E:\BaiduNetdiskDownload\ComfyUI-aki-v1.3\ComfyUI-aki-v1.3\python\lib\site-packages\huggingface_hub\file_download.py", line 1371, in hf_hub_download
raise LocalEntryNotFoundError(
这个报错咋搞 大佬 aux预处理器

1327522.jpg

Ridley

B26F  2024-04-30 10:56
(空的)

回 25楼(旺仔一号) 的帖子

节点没有红,但依旧运行不了的,通通都是网络问题

none.gif

大哥哥

兄弟你的网盘限流了。很不错的教程。给你点赞。

iria


1735531.png

l0shawn

学习了,大佬太强了   

none.gif

大哥哥

除了正确安装基础篇里提到的节点外, 为了实现肤色自动提取,你还需要将以下代码覆盖到\custom_nodes\was-node-suite-comfyui\WAS_Node_Suite.py的"class WAS_Image_Select_Color:"类里
  大佬,这个替换之后,节点不能启动了,是不是有啥格式要求,还是需要重现装环境呀?
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go