在ComfyUI中,将图片通过controlnet后送入sampler,流程能正常运行。有些应用中为了去除图片背景的污染,采用RMBG节点将背景去除后再输入时出现类似以下的报错:
RuntimeError: Given groups=1, weight of size [16, 3, 3, 3], expected input[1, 4, 1344, 768] to have 3 channels, but got 4 channels instead
原因为张量输入数据的张量通过不匹配。采用debug获得并比较数据两者数据的差异,如下:
ttN debug:
tensor([[[[0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000],
...,
[0.0000, 0.0039, 0.0039],
[0.0000, 0.0039, 0.0039],
[0.0039, 0.0039, 0.0039]],
[[0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000],
...,
[0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0039]],
[[0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000],
...,
[0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000]],
...,
[[0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000],
...,
[0.2471, 0.2275, 0.2392],
[0.2471, 0.2275, 0.2392],
[0.2667, 0.2471, 0.2588]],
[[0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000],
...,
[0.2745, 0.2549, 0.2627],
[0.2706, 0.2471, 0.2588],
[0.2784, 0.2549, 0.2667]],
[[0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000],
...,
[0.2902, 0.2667, 0.2745],
[0.2824, 0.2588, 0.2667],
[0.2863, 0.2667, 0.2745]]]])
ttN debug_rmbg:
tensor([[[[1.0000, 1.0000, 1.0000, 0.0000],
[1.0000, 1.0000, 1.0000, 0.0000],
[1.0000, 1.0000, 1.0000, 0.0000],
...,
[1.0000, 1.0000, 1.0000, 0.0000],
[1.0000, 1.0000, 1.0000, 0.0000],
[1.0000, 1.0000, 1.0000, 0.0000]],
[[1.0000, 1.0000, 1.0000, 0.0000],
[1.0000, 1.0000, 1.0000, 0.0000],
[1.0000, 1.0000, 1.0000, 0.0000],
...,
[1.0000, 1.0000, 1.0000, 0.0000],
[1.0000, 1.0000, 1.0000, 0.0000],
[1.0000, 1.0000, 1.0000, 0.0000]],
[[1.0000, 1.0000, 1.0000, 0.0000],
[1.0000, 1.0000, 1.0000, 0.0000],
[1.0000, 1.0000, 1.0000, 0.0000],
...,
[1.0000, 1.0000, 1.0000, 0.0000],
[1.0000, 1.0000, 1.0000, 0.0000],
[1.0000, 1.0000, 1.0000, 0.0000]],
...,
[[1.0000, 1.0000, 1.0000, 0.0000],
[1.0000, 1.0000, 1.0000, 0.0000],
[1.0000, 1.0000, 1.0000, 0.0000],
...,
[0.9882, 0.9882, 0.9882, 0.0000],
[0.9843, 0.9843, 0.9843, 0.0000],
[0.9843, 0.9843, 0.9843, 0.0000]],
[[1.0000, 1.0000, 1.0000, 0.0000],
[1.0000, 1.0000, 1.0000, 0.0000],
[1.0000, 1.0000, 1.0000, 0.0000],
...,
[0.9882, 0.9882, 0.9882, 0.0000],
[0.9843, 0.9843, 0.9843, 0.0000],
[0.9843, 0.9843, 0.9843, 0.0000]],
[[1.0000, 1.0000, 1.0000, 0.0000],
[1.0000, 1.0000, 1.0000, 0.0000],
[1.0000, 1.0000, 1.0000, 0.0000],
...,
[0.9882, 0.9882, 0.9882, 0.0000],
[0.9804, 0.9804, 0.9804, 0.0000],
[0.9804, 0.9804, 0.9804, 0.0000]]]])
解决方案:
采用以下三个节点之一