ComfyUI-IC-Light-Native
ComfyUI对IC-Light的原生实现。
安装
下载仓库并解压到ComfyUI安装目录的custom_nodes文件夹中。
或者从ComfyUI安装目录开始,通过GIT克隆:
cd custom_nodes
git clone git@github.com:huchenlei/ComfyUI-IC-Light-Native.git
下载模型
IC-Light主仓库基于diffusers。为了在ComfyUI中使用UnetLoader加载它,需要将state_dict键转换为ldm格式。你可以在这里下载带有ldm键的模型:https://huggingface.co/huchenlei/IC-Light-ldm/tree/main
有两个模型:
- iclight_sd15_fc_unet_ldm:在前景工作流中使用
- iclight_sd15_fbc_unet_ldm:在背景工作流中使用
下载这些模型后,请将它们放在ComfyUI/models/unet
目录下,并使用UNETLoader
节点加载。
[重要!] 必需的节点
为了使IC light正常工作,你必须先安装以下节点。
- ComfyUI-layerdiffuse:虽然工作流中没有使用,但layerdiffuse中的权重加载补丁是IC-Light节点正常工作的依赖项。
推荐的节点
- ComfyUI-KJNodes:提供各种遮罩节点来创建光照图。
- ComfyUI-Easy-Use:一个包含各种功能的大型节点包。工作流中使用的去除背景节点来自这个包。
- ComfyUI_essentials:许多有用的工具节点。工作流中使用的图像调整大小节点来自这个包。
- ComfyUI-IC-Light:kijai的IC-Light实现。它包含一个非常有用的
DetailTransfer
节点,可以帮助保留输入前景图像中的高频细节。
工作流
在将前景图像传递给VAE之前,请确保其遮罩/透明区域是灰色的。否则,在FC工作流中会出现背景模糊,或在FBC工作流中出现背景变暗的情况。你可以使用IC Light Apply Mask Grey
来确保遮罩区域的颜色正确。请参见以下示例:
给定前景,生成背景并重新照明
如果你想保持前景对象的原始颜色,可以将前景对象放在潜在空间中以进一步指导生成。工作流
给定前景和光照图,生成背景并重新照明
右侧光源
左侧光源
给定前景和背景,将前景放在背景上并重新照明
从原始输入图像恢复高频细节(文本等)
- 输入图像:
- 原始生成:
- 细节迁移后:
常见问题
IC-Light的unet除了常见的噪声输入外,还接受额外的输入。前景模型接受额外1个输入(4个通道)。背景模型接受2个额外输入(8个通道)。 原始unet的输入也是4个通道。
如果你看到以下问题,这意味着IC-Light的unet没有正确加载,你需要先安装ComfyUI-layerdiffuse。
RuntimeError: Given groups=1, weight of size [320, 4, 3, 3], expected input[2, 8, 64, 64] to have 4 channels, but got 8 channels instead
如果你看到以下错误,这意味着你在使用前景工作流但加载了背景模型。
RuntimeError: Given groups=1, weight of size [320, 8, 3, 3], expected input[2, 12, 64, 64] to have 8 channels, but got 12 channels instead
如果你看到以下错误,这意味着你在使用前景工作流但加载了背景模型。
RuntimeError: Given groups=1, weight of size [320, 12, 3, 3], expected input[2, 8, 64, 64] to have 12 channels, but got 8 channels instead